Current build instructions for iOS

gary.adams at oracle.com gary.adams at oracle.com
Mon May 14 21:15:33 UTC 2018


I saw this error with Xcode 9.3.1, but not with 8.3.3.

Best way to debug this type of error is to run with a debugger
using a slowdebug build with full symbols.

On 5/14/18 4:11 PM, Steve Hannah wrote:
> Thanks.  I'll look into that.
>
> FWIW, I found that one of my problems was that I didn't have Apple's 
> legacy Java 6 installed on my system - which appears to be required 
> for the frameworks it contains - e.g. JavaNativeFoundation.
>
> After I solved that, I was able to get much further - but am now 
> halted on this error:
>
> /Users/shannah/tmp/zero/mobile-jdk9/build/ios-x86_64-normal-minimal1-release/buildjdk/jdk/bin/jmod 
> -J-XX:+UseSerialGC -J-Xms32M -J-Xmx512M -J-XX:TieredStopAtLevel=1 create \
>
> --module-version 9-internal \
>
> --target-platform 'ios-amd64' \
>
> --module-path 
> /Users/shannah/tmp/zero/mobile-jdk9/build/ios-x86_64-normal-minimal1-release/support/interim-jmods 
> \
>
> --exclude 
> '**{_the.*,_*.marker,*.diz,*.debuginfo,*.dSYM/**,*.dSYM,*.pdb,*.map}' \
>
> --libs 
> /Users/shannah/tmp/zero/mobile-jdk9/build/ios-x86_64-normal-minimal1-release/buildjdk/support/modules_libs/java.base 
> --cmds 
> /Users/shannah/tmp/zero/mobile-jdk9/build/ios-x86_64-normal-minimal1-release/buildjdk/support/modules_cmds/java.base 
> --config 
> /Users/shannah/tmp/zero/mobile-jdk9/build/ios-x86_64-normal-minimal1-release/buildjdk/support/modules_conf/java.base 
> --class-path 
> /Users/shannah/tmp/zero/mobile-jdk9/build/ios-x86_64-normal-minimal1-release/buildjdk/jdk/modules/java.base 
> --header-files 
> /Users/shannah/tmp/zero/mobile-jdk9/build/ios-x86_64-normal-minimal1-release/buildjdk/support/modules_include/java.base 
> --legal-notices 
> "/Users/shannah/tmp/zero/mobile-jdk9/build/ios-x86_64-normal-minimal1-release/buildjdk/support/modules_legal/java.base:/Users/shannah/tmp/zero/mobile-jdk9/jdk/src/java.base/share/legal" 
> /Users/shannah/tmp/zero/mobile-jdk9/build/ios-x86_64-normal-minimal1-release/support/interim-jmods/temp/java.base.jmod
>
> #
>
> # A fatal error has been detected by the Java Runtime Environment:
>
> #
>
> #SIGILL (0x4) at pc=0x00000001050bee77, pid=39058, tid=7171
>
> #
>
> # JRE version: OpenJDK Runtime Environment (9.0) (build 
> 9-internal+0-adhoc.shannah.mobile-jdk9)
>
> # Java VM: OpenJDK 64-Bit Server VM 
> (9-internal+0-adhoc.shannah.mobile-jdk9, mixed mode, tiered, 
> compressed oops, serial gc, bsd-amd64)
>
> # Problematic frame:
>
> # V[libjvm.dylib+0x4bee77]PerfDataManager::destroy()+0xb7
>
> #
>
> # No core dump will be written. Core dumps have been disabled. To 
> enable core dumping, try "ulimit -c unlimited" before starting Java again
>
> #
>
> # An error report file with more information is saved as:
>
> # /Users/shannah/tmp/zero/mobile-jdk9/make/hs_err_pid39058.log
>
> #
>
> # If you would like to submit a bug report, please visit:
>
> # http://bugreport.java.com/bugreport/crash.jsp
>
> #
>
>
> [error occurred during error reporting (), id 0x4]
>
>
>
> On Mon, May 14, 2018 at 12:47 PM, gary.adams at oracle.com 
> <mailto:gary.adams at oracle.com> <gary.adams at oracle.com 
> <mailto:gary.adams at oracle.com>> wrote:
>
>     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.
>
>
>
>
>
> -- 
> Steve Hannah
> Web Lite Solutions Corp.




More information about the mobile-dev mailing list