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