Current build instructions for iOS
Steve Hannah
steve at weblite.ca
Mon May 14 12:09:26 UTC 2018
Johan, I'm also building with Xcode 9.3 (OS X 10.13.4), and I'm hitting
these errors. Any chance you can share your configure command, and any
other logs that might allow me to do a comparison of my environment to
yours so that I can see where I'm going wrong?
Best regards
Steve
On Sat, May 12, 2018 at 5:43 AM, Johan Vos <johan.vos at gluonhq.com> wrote:
> The version we are talking about here is in mobile/jdk9 and that is the
> "final" version for the 9 tree.
> I'm still configuring and building it with Xcode 9.3 and that works fine.
>
> I made some minor local modifications but those shouldn't matter.
>
> - Johan
>
> On Sat, May 12, 2018 at 1:32 AM David Holmes <david.holmes at oracle.com>
> wrote:
>
>> On 12/05/2018 5:12 AM, 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.
>>
>> adlc is little stand-alone C program, not part of the VM or JDK, so it
>> doesn't generally need all the flags that hotspot/jdk compilations need.
>> But for cross-compilation we would still need to use the EXTRA_*
>> variables.
>>
>> I'm not sure what version of the repos this is discussing but there was
>> a lot of flag cleanup in the JDK 11 build fairly recently.
>>
>> David
>>
>> > 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
>> >>>
>> >>>
>> >>>
>> >>
>> >>
>> >>
>> >
>>
>
--
Steve Hannah
Web Lite Solutions Corp.
More information about the mobile-dev
mailing list