Current build instructions for iOS

gary.adams at oracle.com gary.adams at oracle.com
Mon May 14 19:47:32 UTC 2018


Many of the compilation problems are already fixed in the jdk/jdk repos
for the newer toolchain. That might be an easier fix than trial and error.

On 5/14/18 3:17 PM, Steve Hannah wrote:
> Thanks Gary.  That seems to have gotten me past that error.  Now 
> facing what look to be more tractable errors. Missing headers, syntax 
> errors etc...  I'm going to try commenting things out until it 
> compiles now.
>
> Best regards
>
> Steve
>
> On Mon, May 14, 2018 at 10:57 AM, <gary.adams at oracle.com 
> <mailto:gary.adams at oracle.com>> wrote:
>
>     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.
>
>
>
>
> -- 
> Steve Hannah
> Web Lite Solutions Corp.




More information about the mobile-dev mailing list