Current build instructions for iOS

Johan Vos johan.vos at gluonhq.com
Sat May 12 12:43:03 UTC 2018


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
> >>>
> >>>
> >>>
> >>
> >>
> >>
> >
>


More information about the mobile-dev mailing list