Ya you're right, It should be picked up. For what it's worth, here's our
gradle config, (which ends up passing the correct flags to cmake for building
gnustep):
defaultConfig {
applicationId "com.noodlecake.ssg4"
minSdkVersion 21
targetSdkVersion 28
versionCode 28
versionName "1.0.0"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
externalNativeBuild {
cmake {
cppFlags "-std=c++14 -frtti -fexceptions
-fconstant-string-class=NSConstantString"
cFlags "-DANDROID -fconstant-string-class=NSConstantString"
arguments "-DCMAKE_VERBOSE_MAKEFILE=ON",
"-DANDROID_STL=c++_static",
"-DANDROID_DISABLE_FORMAT_STRING_CHECKS=TRUE"
}
}
ndk {
// Specifies the ABI configurations of your native
// libraries Gradle should build and package with your APK.
//abiFilters 'x86', 'x86_64', 'armeabi', 'armeabi-v7a',
// 'arm64-v8a'
abiFilters 'armeabi-v7a'
}
}
> On Feb 13, 2019, at 11:03 AM, Ivan Vučica <[email protected]> wrote:
>
> Reading through the toolchain file
> <https://android.googlesource.com/platform/ndk/+/master/build/cmake/android.toolchain.cmake>,
> ANDROID_PLATFORM will be calculated from ANDROID_NATIVE_API_LEVEL. So that
> should not be the issue.
>
> I'd start by pepper-spraying message() calls in toolchain .cmake file, and in
> other .cmake files as necessary, too.
>
> On Wed, Feb 13, 2019 at 5:01 PM Jordan Schidlowsky <[email protected]
> <mailto:[email protected]>> wrote:
> Ah, i didn't see that shell script... I think -DANDROID_PLATFORM=android-21
> (or 23) is what you want there.
>
>
>> On Feb 13, 2019, at 10:53 AM, Ivan Vučica <[email protected]
>> <mailto:[email protected]>> wrote:
>>
>> Actually -- it doesn't explain why this is happening, as the shell script
>> (which I failed to notice Gregory attached) matches what I sent him. It's
>> using -DANDROID_NATIVE_API_LEVEL=23 which should make it use
>> ...-androideabi23.
>>
>> Strange.
>>
>> On Wed, Feb 13, 2019 at 4:47 PM Ivan Vučica <[email protected]
>> <mailto:[email protected]>> wrote:
>> Ah, that doesn't match what I sent out and makes me feel better ;-)
>>
>> On Wed, Feb 13, 2019 at 4:41 PM Jordan Schidlowsky <[email protected]
>> <mailto:[email protected]>> wrote:
>> I think this line in his output indicates he's building for API 16:
>>
>> --target=armv7-none-linux-androideabi16
>>
>>> On Feb 13, 2019, at 10:07 AM, Ivan Vučica <[email protected]
>>> <mailto:[email protected]>> wrote:
>>>
>>> Since Greg mentioned me:
>>>
>>> Instructions/commands I came up with and that I sent over to Gregory should
>>> attempt using API level 23. Totally arbitrarily picked. Use of pre-21 API
>>> is not happening so not an issue.
>>>
>>> Needless to say, building works for me. I don’t have a self-contained
>>> script to share, but it’s super simplistic and what Greg described (incl
>>> using GUI to install NDK) is what I did.
>>>
>>> I’m only sure it builds, not that it works, as I am yet to try running the
>>> code; I don’t have a build script ready for producing an APK (the old
>>> approach from 2013 and 2014 is a mess and needs to be reworked).
>>>
>>> On Wed 13 Feb 2019 at 15:34 Jordan Schidlowsky <[email protected]
>>> <mailto:[email protected]>> wrote:
>>> I've got some patches but they are pretty ugly and I want to clean them up
>>> properly before submitting...
>>>
>>>
>>>> On Feb 13, 2019, at 8:41 AM, Jordan Schidlowsky <[email protected]
>>>> <mailto:[email protected]>> wrote:
>>>>
>>>> An NDK app can chose to bundle in a (c++_shared) library in your app, or
>>>> you can link with a static (c++_static) standard library. This is
>>>> actually dependant on what setting you chose for this in your gradle build
>>>> file, as gradle will pass that along to cmake which will link it in.
>>>>
>>>> That cxx runtime test doesn't quite work correctly using an android
>>>> toolchain. But if you want to configure your ndk app using c++_static you
>>>> can remove that test section from CMakeLists.txt and add in manually below:
>>>>
>>>> set(CXXRT_IS_STDLIB true)
>>>> target_link_libraries(objc c++_static stdc++)
>>>>
>>>> I will also note, that I am still thinking about a way to run that test
>>>> suite while cross compiling...
>>>>
>>>>
>>>>> On Feb 13, 2019, at 6:41 AM, Gregory Casamento <[email protected]
>>>>> <mailto:[email protected]>> wrote:
>>>>>
>>>>>
>>>>> A little more context... my build environment is a MacPro 2010 running
>>>>> the latest version of Mojave. I have downloaded and installed the latest
>>>>> of Android studio and installed the latest SDK and NDK using the menu
>>>>> under tools and the SDK manager. The version of the NDK I'm using is
>>>>> 19.0.5232133. I am utterly stumped as to why this is not working.
>>>>> Also, it seems as though Ivan's installation of this is working which
>>>>> seems to indicate that this is a configuration issue.
>>>>>
>>>>> Any input would be appreciated.
>>>>>
>>>>> On Wed, Feb 13, 2019 at 7:09 AM Gregory Casamento
>>>>> <[email protected] <mailto:[email protected]>> wrote:
>>>>>
>>>>> ### Build libobjc2
>>>>> -- The ASM compiler identification is Clang
>>>>> -- Found assembler:
>>>>> /Users/heron/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang
>>>>> -- Check for working C compiler:
>>>>> /Users/heron/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang
>>>>> -- Check for working C compiler:
>>>>> /Users/heron/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang
>>>>> -- works
>>>>> -- Detecting C compiler ABI info
>>>>> -- Detecting C compiler ABI info - done
>>>>> -- Detecting C compile features
>>>>> -- Detecting C compile features - done
>>>>> -- Check for working CXX compiler:
>>>>> /Users/heron/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++
>>>>> -- Check for working CXX compiler:
>>>>> /Users/heron/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++
>>>>> -- works
>>>>> -- Detecting CXX compiler ABI info
>>>>> -- Detecting CXX compiler ABI info - done
>>>>> -- Detecting CXX compile features
>>>>> -- Detecting CXX compile features - done
>>>>> -- Testing C++ interop
>>>>> -- Testing C++ standard library
>>>>> -- No useable C++ runtime found
>>>>> -- Looking for pthread.h
>>>>> -- Looking for pthread.h - found
>>>>> -- Looking for pthread_create
>>>>> -- Looking for pthread_create - found
>>>>> -- Found Threads: TRUE
>>>>> -- GNUstep install type set to NONE
>>>>> -- Performing Test CXA_ALLOCATE_EXCEPTION_NOEXCEPT_COMPILES
>>>>> -- Performing Test CXA_ALLOCATE_EXCEPTION_NOEXCEPT_COMPILES - Success
>>>>> -- Configuring done
>>>>> -- Generating done
>>>>> -- Build files have been written to:
>>>>> /Users/heron/Development/Algoriddim/gnustep-toolchain/gnustep-android/gnustep/libobjc2/build
>>>>> /Users/heron/Development/Algoriddim/gnustep-toolchain/gnustep-android/gnustep/libobjc2/build/CMake
>>>>> [1/1] Linking CXX executable test_cxx_runtime
>>>>> FAILED: test_cxx_runtime
>>>>> : &&
>>>>> /Users/heron/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/bin/clang++
>>>>> --target=armv7-none-linux-androideabi16
>>>>> --gcc-toolchain=/Users/heron/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64
>>>>> --sysroot
>>>>> /Users/heron/Library/Android/sdk/ndk-bundle/toolchains/llvm/prebuilt/darwin-x86_64/sysroot
>>>>> -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables
>>>>> -fstack-protector-strong -no-canonical-prefixes -mfpu=vfpv3-d16
>>>>> -fno-addrsig -mthumb -Wa,--noexecstack -Wformat -Werror=format-security
>>>>> -stdlib=libc++ -Wl,--exclude-libs,libgcc.a
>>>>> -Wl,--exclude-libs,libatomic.a -static-libstdc++ -Wl,--build-id
>>>>> -Wl,--warn-shared-textrel -Wl,--exclude-libs,libunwind.a
>>>>> -Wl,--no-undefined -Qunused-arguments -Wl,-z,noexecstack -Wl,-z,relro
>>>>> -Wl,-z,now -Wl,--gc-sections
>>>>> CMakeFiles/test_cxx_runtime.dir/typeinfo_test.cc.o -o test_cxx_runtime
>>>>> -latomic -lm && :
>>>>> CMakeFiles/test_cxx_runtime.dir/typeinfo_test.cc.o:typeinfo_test.cc
>>>>> <http://typeinfo_test.cc/>:vtable for type_info2: error: undefined
>>>>> reference to 'std::type_info::__do_upcast(__cxxabiv1::__class_type_info
>>>>> const*, void**) const'
>>>>> clang++: error: linker command failed with exit code 1 (use -v to see
>>>>> invocation)
>>>>> ninja: build stopped: subcommand failed.
>>>>> ### LIBOBJC2 BUILD FAILED!!!
>>>>>
>>>>> I am running into the above error when trying to build for Android. I
>>>>> have the latest ndk and sdk installed with Android studio. Does anyone
>>>>> have any idea offhand why C++ isn't finding it's runtime? I will attach
>>>>> the build script I am using to generate the ninja script....
>>>>>
>>>>> GC
>>>>>
>>>>> --
>>>>> Gregory Casamento
>>>>> GNUstep Lead Developer / OLC, Principal Consultant
>>>>> http://www.gnustep.org
>>>>> <https://mailtrack.io/trace/link/ddde09d325c4a435e025a98cecb523c42a3faad5?url=http%3A%2F%2Fwww.gnustep.org&userId=2790543&signature=7d37ec23bb82ff44>
>>>>> - http://heronsperch.blogspot.com
>>>>> <https://mailtrack.io/trace/link/df5b3556d0922a9f737f08b0905d6385e611c5f0?url=http%3A%2F%2Fheronsperch.blogspot.com&userId=2790543&signature=6bb167a403644460>
>>>>> http://ind.ie/phoenix/
>>>>> <https://mailtrack.io/trace/link/92bcebdbb9fc372e2cf08a7e499372cc1cd5d151?url=http%3A%2F%2Find.ie%2Fphoenix%2F&userId=2790543&signature=8fd8e7cffa9021e7>
>>>>>
>>>>> --
>>>>> Gregory Casamento
>>>>> GNUstep Lead Developer / OLC, Principal Consultant
>>>>> http://www.gnustep.org
>>>>> <https://mailtrack.io/trace/link/1247d0089e9dd2e1ac83c838552d393752c8b833?url=http%3A%2F%2Fwww.gnustep.org&userId=2790543&signature=5a652f77cc91a2ea>
>>>>> - http://heronsperch.blogspot.com
>>>>> <https://mailtrack.io/trace/link/ff75bfb4c582f91790e81a5fdd96eeb51aab0274?url=http%3A%2F%2Fheronsperch.blogspot.com&userId=2790543&signature=59cf8dcbd3b3253d>
>>>>> http://ind.ie/phoenix/
>>>>> <https://mailtrack.io/trace/link/5bd6878a79f878c78ef8f1630a2dfde8e09e51af?url=http%3A%2F%2Find.ie%2Fphoenix%2F&userId=2790543&signature=043c717e06ac9c32>_______________________________________________
>>>>> Discuss-gnustep mailing list
>>>>> [email protected] <mailto:[email protected]>
>>>>> https://lists.gnu.org/mailman/listinfo/discuss-gnustep
>>>>> <https://lists.gnu.org/mailman/listinfo/discuss-gnustep>
>>>
>>> _______________________________________________
>>> Gnustep-dev mailing list
>>> [email protected] <mailto:[email protected]>
>>> https://lists.gnu.org/mailman/listinfo/gnustep-dev
>>> <https://lists.gnu.org/mailman/listinfo/gnustep-dev>
>>> --
>>> Sent from Gmail Mobile
>>
>
_______________________________________________
Gnustep-dev mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/gnustep-dev