Current build instructions for iOS
Steve Hannah
steve at weblite.ca
Fri May 11 18:52:34 UTC 2018
On Fri, May 11, 2018 at 11:19 AM, Gary Adams <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
>
> 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> wrote:
>
>> Thanks for the tips.
>>
>> I'm using the configure listed on the instructions (
>> 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/iPho
>>> neSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/Syst
>>> em/Library/Frameworks/JavaVM.framework/Frameworks'
>>>
>>> ld: building for OSX, but linking against dylib built for iOS
>>> (/Applications/Xcode.app/Contents/Developer/Platforms/iPhone
>>> Simulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libc++.tbd).
>>> file '/Applications/Xcode.app/Contents/Developer/Platforms/iPhone
>>> Simulator.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