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