Current build instructions for iOS

Magnus Ihse Bursie magnus.ihse.bursie at oracle.com
Mon May 14 21:05:03 UTC 2018


I vaguely remember this being fixed in like jdk8u not too long ago. The 
ADLC build tool was not properly integrated to use the EXTRA_*FLAGS.

The simple solution is likely to add
ADLC_LDFLAGS += $(EXTRA_LDFLAGS)
somewhere just above the line
  $(eval $(call SetupNativeCompilation, BUILD_ADLC, \

In jdk/jdk, this is all rewritten and in much better shape.

/Magnus

On 2018-05-11 21:12, Gary Adams wrote:
> I just tried a local build and I'm seeing the same error you are.
> See
> build/ios-x86-64-mormal-minimal1-release/make-support/failure-logs/buildjdk_hotspot_variant-server_tools_adlc_objs_BUILD_ADLC_link.{cmdline,log}
>
> The basic configuration in
>     common/autoconf/flags.m4
>
> includes the adding of Frameworks to SYSROOT_LDFLAGS
> and the handling of EXTRA_LDFLAGS.
>
> I need to track down the BUILD_ADLC instructions to find out why
> the extra flags were not used. I'll take a look next week.
>
> I'm targetting MacOSX 10.13.4 Xcode 9.3.1  iOS 11.2 SDK.
>
> ...
>
> On 5/11/18, 2:52 PM, Steve Hannah wrote:
>>
>> On Fri, May 11, 2018 at 11:19 AM, Gary Adams <gary.adams at oracle.com 
>> <mailto:gary.adams at oracle.com>> wrote:
>>
>>     Looking at the link line which complains about mixing iOS and
>>     MacOSX SDKs,
>>     I do not see the expected extra ld flags. e.g.
>>     "-miphoneos-version-min=8.0.0 -arch x86_64 ..."
>>     Can you verify the configure step set the proper flags in *.gmk?
>>     e.g. EXTRA_
>>
>>
>>
>> That's an interesting observation.    When I grep for EXTRA_ in the 
>> .gmk files, it looks like they're there.
>>
>> ios-x86_64-normal-minimal1-release shannah$ grep EXTRA_ *.gmk
>>
>> buildjdk-spec.gmk:# Some users still set EXTRA_*FLAGS on the make 
>> command line. Must
>>
>> buildjdk-spec.gmk:override EXTRA_CFLAGS :=
>>
>> buildjdk-spec.gmk:override EXTRA_CXXFLAGS :=
>>
>> buildjdk-spec.gmk:override EXTRA_LDFLAGS :=
>>
>> spec.gmk:EXTRA_CFLAGS = -arch x86_64 
>> -Wno-implicit-function-declaration -Wno-unused-parameter 
>> -miphoneos-version-min=7.0
>>
>> spec.gmk:EXTRA_CXXFLAGS = -arch x86_64 
>> -Wno-implicit-function-declaration -Wno-unused-parameter 
>> -miphoneos-version-min=7.0
>>
>> spec.gmk:EXTRA_LDFLAGS = -arch x86_64 -miphoneos-version-min=7.0 
>> -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib 
>> -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/system 
>> -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/system 
>>
>>
>> spec.gmk:TAR_CREATE_EXTRA_PARAM:=
>>
>>
>> And on other instances of bin/c++ in the build log, it does include 
>> them.  Just not on the one the fails (and possibly others).
>>
>> However, now that I look at this, I see that they are not present in 
>> the buildjdk-spec.gmk.  Only in the spec.gmk.  Is that relevant?
>>
>> Here is a gist with the spec.gmk and buildjdk-spec.gmk in case 
>> something catches anyone's eye there.
>> https://gist.github.com/shannah/aac10407178dee96ce5e6a4138d56d7a
>>
>>
>>     I was surprised you were targetting iOS 7.0 as a minimal platform.
>>     e.g. -miphoneos-version-min=7.0
>>
>>
>> I had tried with -miphoneos-version-min=8.0.0 (as the instructions in 
>> the wiki had it), but was getting the same problem.  This was an 
>> attempt to mix things up a bit.
>>
>>
>>     If you are having shell quoting issues, it helps to use single 
>> quotes
>>     when providing the with-extra flags. You just have to expand the
>>     "$XCODE  ..." variable manually.
>>
>>
>> Thanks for the tip.  I don't think I'm having quoting issues, but 
>> I'll give that a try.
>>
>>
>> Best regards
>>
>> Steve
>>
>>
>>
>>
>>     On 5/11/18, 1:37 PM, Steve Hannah wrote:
>>>     Well,  it seems that the build problems are unrelated to Xcode
>>>     version.  I get the same thing with Xcode 7.1, 7.3, and 9.3.     
>>> They all fail with some error related to
>>>
>>>         ld: building for OSX, but linking against dylib built for iOS
>>>
>>>     The build log and configure command and output are in this gist
>>> https://gist.github.com/shannah/03ca438b97c55dfc1c942112af43c5b6
>>> <https://gist.github.com/shannah/03ca438b97c55dfc1c942112af43c5b6>
>>>
>>>     I've tried following where Google and Stackoverflow lead on these
>>>     errors, but have exhausted all of my current leads.
>>>
>>>     If anything about these logs jump out to anyone, please share.
>>>
>>>     Best regards
>>>
>>>     Steve
>>>
>>>     On Thu, May 10, 2018 at 12:56 PM, Steve Hannah <steve at weblite.ca
>>>     <mailto:steve at weblite.ca>> wrote:
>>>
>>>         Thanks for the tips.
>>>
>>>         I'm using the configure listed on the instructions
>>>         (http://openjdk.java.net/projects/mobile/ios.html
>>> <http://openjdk.java.net/projects/mobile/ios.html>)
>>>
>>>         cd mobile-dev
>>>         bash configure \
>>>         --enable-option-checking=fatal \
>>>         --build=x86_64-apple-darwin \
>>>         --host=x86_64-macos-ios \
>>>         --target=x86_64-macos-ios \
>>>         --disable-warnings-as-errors \
>>>         --enable-headless-only \
>>>         --with-boot-jdk=$JDK_DIR \
>>>         --with-jdk-variant=normal \
>>>         --with-jvm-variants=minimal1 \
>>>         --enable-static-build=yes \
>>>         --with-extra-cflags="-arch x86_64 
>>> -Wno-implicit-function-declaration -Wno-unused-parameter 
>>> -miphoneos-version-min=8.0.0" \
>>>         --with-extra-cxxflags="-arch x86_64 
>>> -Wno-implicit-function-declaration -Wno-unused-parameter 
>>> -miphoneos-version-min=8.0.0" \
>>>         --with-extra-ldflags="-arch x86_64 
>>> -miphoneos-version-min=8.0.0 
>>> -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib 
>>> -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/system" 
>>> \
>>>         --with-cups-include=$CUPS_DIR \
>>> --with-sys-root=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk 
>>> \
>>> --with-tools-dir=/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/../../usr/bin 
>>> \
>>>         --with-debug-level=release \
>>>         --disable-precompiled-headers \
>>>         --with-freetype-lib=$FREETYPE_DIR/lib \
>>> --with-freetype-include=$FREETYPE_DIR/include/freetype2
>>>
>>>
>>>             For iOS builds, I'd recommend first making sure you can
>>>             build for macosx with your installed toolchain,
>>>             and then try the iOS specific builds.
>>>
>>>
>>>         Thanks, I'll try that.
>>>
>>>
>>>             For the linking error, are you using more than one
>>>             installed version of Xcode.
>>>             e.g. "xcode-select -p" or DEVELOPER_DIR
>>>
>>>
>>>         I'm pretty sure I'm using just one at a time.  I'm using
>>>         xcode-select to specify which Xcode to use, and I'm using the
>>>         corresponding Xcode in the configure statement.
>>>
>>>
>>>             I usually would do a "LOG=debug" build to see the full
>>>             command passed to the linker,
>>>             but you have enough in the errors you already have.
>>>
>>>             clang: warning: using sysroot for 'iPhoneSimulator' but
>>>             targeting 'MacOSX' [-Wincompatible-sysroot]
>>>
>>>
>>>             Every object file and executable is built for a specific 
>>> SDK.
>>>             The warning says the flags do not match the toolchain
>>>             installed.
>>>
>>>             ld: warning: directory not found for option
>>> '-F/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/System/Library/Frameworks/JavaVM.framework/Frameworks'
>>>
>>>             ld: building for OSX, but linking against dylib built for
>>>             iOS
>>> (/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libc++.tbd).
>>>             file
>>> '/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libc++.tbd'
>>>             for architecture x86_64
>>>
>>>
>>>             This would be a good time to compare the directory
>>>             structure of the iPhoneSimulator
>>>             SDK in Xcode 7.1 and 9.3. It may have changed.
>>>
>>>
>>>         Thanks.  I'll do that.  My attempt with 7.3 had similar
>>>         results - only I had to patch some code that required
>>>         CoreServices, which apparently isn't available in 7.3.  I'm
>>>         going to download 7.1 and see if that gets me through to the 
>>> end.
>>>
>>>         Best regards
>>>
>>>         Steve
>>>
>>>
>>>
>>
>>
>>
>



More information about the mobile-dev mailing list