Current build instructions for iOS

gary.adams at oracle.com gary.adams at oracle.com
Mon May 14 17:57:09 UTC 2018


The problem in my local build was the generated buildjdk-spec.gmk file.

It contained settings for the iPhoneSimulator sysroot, but should have been
configured for MacOSX SDK.

Adding this to my configure command line arguments corrected the problem
using an Xcode 8.3.3 DEVELOPER_DIR.

--with-build-sysroot=$DEVELOPER_DIR/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk 




On 5/14/18 8:09 AM, Steve Hannah wrote:
> 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 
> <mailto: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 <mailto: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>
>         >> <mailto: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
>         <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>
>         >>>    
>         <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>
>         >>>     <mailto: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>
>         >>>         <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