Current build instructions for iOS
Steve Hannah
steve at weblite.ca
Mon May 14 20:11:58 UTC 2018
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 <
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> 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> 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/failur
>>>> e-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/iPhon
>>>> eSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib
>>>> >> -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhon
>>>> eSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/system
>>>> >> -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhon
>>>> eSimulator.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/03ca438b97c55dfc1c942112af43
>>>> c5b6
>>>> >>> <https://gist.github.com/shannah/03ca438b97c55dfc1c942112af4
>>>> 3c5b6>
>>>> >>>
>>>> >>> 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/iPhon
>>>> eSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib
>>>> >>> -L/Applications/Xcode.app/Contents/Developer/Platforms/iPhon
>>>> eSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/system"
>>>> >>> \
>>>> >>> --with-cups-include=$CUPS_DIR \
>>>> >>>
>>>> >>> --with-sys-root=/Applications/Xcode.app/Contents/Developer/P
>>>> latforms/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/iPho
>>>> neSimulator.platform/Developer/SDKs/iPhoneSimulator.sdk/Syst
>>>> em/Library/Frameworks/JavaVM.framework/Frameworks'
>>>> >>>
>>>> >>>
>>>> >>> ld: building for OSX, but linking against dylib built
>>>> for
>>>> >>> iOS
>>>> >>>
>>>> >>> (/Applications/Xcode.app/Contents/Developer/Platforms/iPhone
>>>> Simulator.platform/Developer/SDKs/iPhoneSimulator.sdk/usr/lib/libc++.tbd).
>>>>
>>>> >>>
>>>> >>> file
>>>> >>>
>>>> >>> '/Applications/Xcode.app/Contents/Developer/Platforms/iPhone
>>>> Simulator.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