Commit fe102e59 by guoxin

安卓交叉环境编译已经可以了。

parent d034272b
...@@ -244,3 +244,463 @@ key/signcert.pem ...@@ -244,3 +244,463 @@ key/signcert.pem
key/signkey.pem key/signkey.pem
key/signreq.pem key/signreq.pem
build/bin/test/tlsServertest.out build/bin/test/tlsServertest.out
andriodBuild/cmake_install.cmake
andriodBuild/CMakeCache.txt
andriodBuild/CPackConfig.cmake
andriodBuild/CPackSourceConfig.cmake
andriodBuild/CTestTestfile.cmake
andriodBuild/Makefile
andriodBuild/CMakeFiles/cmake.check_cache
andriodBuild/CMakeFiles/CMakeConfigureLog.yaml
andriodBuild/CMakeFiles/CMakeDirectoryInformation.cmake
andriodBuild/CMakeFiles/CMakeOutput.log
andriodBuild/CMakeFiles/feature_tests.bin
andriodBuild/CMakeFiles/feature_tests.c
andriodBuild/CMakeFiles/feature_tests.cxx
andriodBuild/CMakeFiles/Makefile.cmake
andriodBuild/CMakeFiles/Makefile2
andriodBuild/CMakeFiles/progress.marks
andriodBuild/CMakeFiles/TargetDirectories.txt
andriodBuild/CMakeFiles/3.11.4/CMakeCCompiler.cmake
andriodBuild/CMakeFiles/3.11.4/CMakeCXXCompiler.cmake
andriodBuild/CMakeFiles/3.11.4/CMakeDetermineCompilerABI_C.bin
andriodBuild/CMakeFiles/3.11.4/CMakeDetermineCompilerABI_CXX.bin
andriodBuild/CMakeFiles/3.11.4/CMakeSystem.cmake
andriodBuild/CMakeFiles/3.18.2/CMakeCCompiler.cmake
andriodBuild/CMakeFiles/3.18.2/CMakeCXXCompiler.cmake
andriodBuild/CMakeFiles/3.18.2/CMakeDetermineCompilerABI_C.bin
andriodBuild/CMakeFiles/3.18.2/CMakeDetermineCompilerABI_CXX.bin
andriodBuild/CMakeFiles/3.18.2/CMakeSystem.cmake
andriodBuild/CMakeFiles/3.27.0-rc2/CMakeCCompiler.cmake
andriodBuild/CMakeFiles/3.27.0-rc2/CMakeCXXCompiler.cmake
andriodBuild/CMakeFiles/3.27.0-rc2/CMakeDetermineCompilerABI_CXX.bin
andriodBuild/CMakeFiles/3.27.0-rc2/CMakeSystem.cmake
andriodBuild/CMakeFiles/3.27.0-rc2/CompilerIdC/CMakeCCompilerId.c
andriodBuild/CMakeFiles/3.27.0-rc2/CompilerIdC/CMakeCCompilerId.o
andriodBuild/CMakeFiles/3.27.0-rc2/CompilerIdCXX/CMakeCXXCompilerId.cpp
andriodBuild/CMakeFiles/3.27.0-rc2/CompilerIdCXX/CMakeCXXCompilerId.o
andriodBuild/CMakeFiles/Progress/count.txt
andriodBuild/CMakeFiles/TKSDK-bin.dir/build.make
andriodBuild/CMakeFiles/TKSDK-bin.dir/cmake_clean.cmake
andriodBuild/CMakeFiles/TKSDK-bin.dir/compiler_depend.make
andriodBuild/CMakeFiles/TKSDK-bin.dir/compiler_depend.ts
andriodBuild/CMakeFiles/TKSDK-bin.dir/depend.make
andriodBuild/CMakeFiles/TKSDK-bin.dir/DependInfo.cmake
andriodBuild/CMakeFiles/TKSDK-bin.dir/flags.make
andriodBuild/CMakeFiles/TKSDK-bin.dir/link.txt
andriodBuild/CMakeFiles/TKSDK-bin.dir/progress.make
andriodBuild/CMakeFiles/TKSDK.dir/build.make
andriodBuild/CMakeFiles/TKSDK.dir/C.includecache
andriodBuild/CMakeFiles/TKSDK.dir/cmake_clean_target.cmake
andriodBuild/CMakeFiles/TKSDK.dir/cmake_clean.cmake
andriodBuild/CMakeFiles/TKSDK.dir/compiler_depend.make
andriodBuild/CMakeFiles/TKSDK.dir/compiler_depend.ts
andriodBuild/CMakeFiles/TKSDK.dir/depend.make
andriodBuild/CMakeFiles/TKSDK.dir/DependInfo.cmake
andriodBuild/CMakeFiles/TKSDK.dir/flags.make
andriodBuild/CMakeFiles/TKSDK.dir/link.txt
andriodBuild/CMakeFiles/TKSDK.dir/progress.make
andriodBuild/CMakeFiles/sdf_dummy.dir/build.make
andriodBuild/CMakeFiles/sdf_dummy.dir/C.includecache
andriodBuild/CMakeFiles/sdf_dummy.dir/cmake_clean.cmake
andriodBuild/CMakeFiles/sdf_dummy.dir/compiler_depend.make
andriodBuild/CMakeFiles/sdf_dummy.dir/compiler_depend.ts
andriodBuild/CMakeFiles/sdf_dummy.dir/depend.make
andriodBuild/CMakeFiles/sdf_dummy.dir/DependInfo.cmake
andriodBuild/CMakeFiles/sdf_dummy.dir/flags.make
andriodBuild/CMakeFiles/sdf_dummy.dir/link.txt
andriodBuild/CMakeFiles/sdf_dummy.dir/progress.make
andriodBuild/CMakeFiles/skf_dummy.dir/build.make
andriodBuild/CMakeFiles/skf_dummy.dir/cmake_clean.cmake
andriodBuild/CMakeFiles/skf_dummy.dir/compiler_depend.make
andriodBuild/CMakeFiles/skf_dummy.dir/compiler_depend.ts
andriodBuild/CMakeFiles/skf_dummy.dir/depend.make
andriodBuild/CMakeFiles/skf_dummy.dir/DependInfo.cmake
andriodBuild/CMakeFiles/skf_dummy.dir/flags.make
andriodBuild/CMakeFiles/skf_dummy.dir/link.txt
andriodBuild/CMakeFiles/skf_dummy.dir/progress.make
test/cmaketest.cpp
andriodBuild/CMakeFiles/TKSDK-bin.dir/link.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/certgen.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/certgen.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/certparse.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/certparse.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/certrevoke.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/certrevoke.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/certverify.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/certverify.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/cmsdecrypt.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/cmsdecrypt.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/cmsencrypt.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/cmsencrypt.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/cmsparse.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/cmsparse.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/cmssign.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/cmssign.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/cmsverify.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/cmsverify.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/crlgen.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/crlgen.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/crlget.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/crlget.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/crlparse.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/crlparse.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/crlverify.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/crlverify.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/gmssl.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/gmssl.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/pbkdf2.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/pbkdf2.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/rand.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/rand.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/reqgen.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/reqgen.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/reqparse.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/reqparse.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/reqsign.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/reqsign.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sdfutil.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sdfutil.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/skfutil.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/skfutil.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm2decrypt.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm2decrypt.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm2encrypt.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm2encrypt.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm2keygen.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm2keygen.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm2keyparse.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm2keyparse.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm2sign.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm2sign.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm2verify.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm2verify.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm3.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm3.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm3hmac.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm3hmac.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm4.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm4.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm9decrypt.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm9decrypt.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm9encrypt.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm9encrypt.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm9keygen.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm9keygen.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm9setup.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm9setup.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm9sign.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm9sign.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm9verify.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/sm9verify.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/tlcp_client.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/tlcp_client.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/tlcp_server.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/tlcp_server.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/tls12_client.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/tls12_client.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/tls12_server.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/tls12_server.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/tls13_client.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/tls13_client.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/tls13_server.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/tls13_server.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/version.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/version.c.o.d
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/zuc.c.o
andriodBuild/CMakeFiles/TKSDK-bin.dir/tools/zuc.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/link.d
andriodBuild/CMakeFiles/TKSDK.dir/src/aead.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/aead.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/aes_modes.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/aes_modes.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/aes.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/aes.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/asn1.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/asn1.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/base64.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/base64.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/block_cipher.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/block_cipher.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/chacha20.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/chacha20.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/cms.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/cms.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/debug.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/debug.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/digest.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/digest.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/ec.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/ec.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/file.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/file.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/gcm.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/gcm.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/gf128.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/gf128.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/hash_drbg.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/hash_drbg.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/hex.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/hex.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/hkdf.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/hkdf.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/hmac.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/hmac.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/http.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/http.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/pbkdf2.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/pbkdf2.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/pem.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/pem.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/pkcs8.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/pkcs8.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/rand.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/rand.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/rsa.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/rsa.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sha256.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sha256.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sha512.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sha512.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sm2_alg.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sm2_alg.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sm2_key.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sm2_key.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sm2_lib.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sm2_lib.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sm3_hmac.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sm3_hmac.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sm3_kdf.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sm3_kdf.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sm3.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sm3.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sm4_common.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sm4_common.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sm4_enc.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sm4_enc.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sm4_modes.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sm4_modes.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sm4_setkey.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sm4_setkey.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sm9_alg.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sm9_alg.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sm9_key.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sm9_key.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sm9_lib.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sm9_lib.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/socket.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/socket.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/tlcp.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/tlcp.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/tls_ext.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/tls_ext.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/tls_trace.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/tls_trace.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/tls.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/tls.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/tls12.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/tls12.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/tls13.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/tls13.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/version.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/version.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/x509_alg.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/x509_alg.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/x509_cer.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/x509_cer.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/x509_crl.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/x509_crl.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/x509_ext.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/x509_ext.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/x509_new.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/x509_new.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/x509_req.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/x509_req.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/zuc_modes.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/zuc_modes.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/zuc.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/zuc.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sdf/sdf_ext.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sdf/sdf_ext.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sdf/sdf_lib.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sdf/sdf_lib.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sdf/sdf_meth.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sdf/sdf_meth.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sdf/sdf_sansec.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sdf/sdf_sansec.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/sdf/sdf.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/sdf/sdf.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/skf/skf_ext.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/skf/skf_ext.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/skf/skf_lib.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/skf/skf_lib.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/skf/skf_meth.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/skf/skf_meth.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/skf/skf_prn.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/skf/skf_prn.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/skf/skf_wisec.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/skf/skf_wisec.c.o.d
andriodBuild/CMakeFiles/TKSDK.dir/src/skf/skf.c.o
andriodBuild/CMakeFiles/TKSDK.dir/src/skf/skf.c.o.d
andriodBuild/CMakeFiles/sdf_dummy.dir/link.d
andriodBuild/CMakeFiles/sdf_dummy.dir/src/sdf/sdf_dummy.c.o
andriodBuild/CMakeFiles/sdf_dummy.dir/src/sdf/sdf_dummy.c.o.d
andriodBuild/CMakeFiles/skf_dummy.dir/link.d
andriodBuild/CMakeFiles/skf_dummy.dir/src/skf/skf_dummy.c.o
andriodBuild/CMakeFiles/skf_dummy.dir/src/skf/skf_dummy.c.o.d
andriodBuild/CMakeFiles/testDemo.dir/build.make
andriodBuild/CMakeFiles/testDemo.dir/cmake_clean_target.cmake
andriodBuild/CMakeFiles/testDemo.dir/cmake_clean.cmake
andriodBuild/CMakeFiles/testDemo.dir/compiler_depend.internal
andriodBuild/CMakeFiles/testDemo.dir/compiler_depend.make
andriodBuild/CMakeFiles/testDemo.dir/compiler_depend.ts
andriodBuild/CMakeFiles/testDemo.dir/depend.make
andriodBuild/CMakeFiles/testDemo.dir/DependInfo.cmake
andriodBuild/CMakeFiles/testDemo.dir/flags.make
andriodBuild/CMakeFiles/testDemo.dir/link.d
andriodBuild/CMakeFiles/testDemo.dir/link.txt
andriodBuild/CMakeFiles/testDemo.dir/progress.make
andriodBuild/CMakeFiles/testDemo.dir/test/main.cpp.o
andriodBuild/CMakeFiles/testDemo.dir/test/main.cpp.o.d
andriodBuild/bin/libsdf_dummy.so
andriodBuild/bin/libsdf_dummy.so.3
andriodBuild/bin/libsdf_dummy.so.3.0
andriodBuild/bin/libskf_dummy.so
andriodBuild/bin/libskf_dummy.so.3
andriodBuild/bin/libskf_dummy.so.3.0
andriodBuild/bin/libTKSDK.so
andriodBuild/bin/libTKSDK.so.3
andriodBuild/bin/libTKSDK.so.3.0
andriodBuild/bin/TKSDK
build/CMakeFiles/CMakeConfigureLog.yaml
build/CMakeFiles/3.27.0-rc2/CMakeCCompiler.cmake
build/CMakeFiles/3.27.0-rc2/CMakeCXXCompiler.cmake
build/CMakeFiles/3.27.0-rc2/CMakeDetermineCompilerABI_C.bin
build/CMakeFiles/3.27.0-rc2/CMakeDetermineCompilerABI_CXX.bin
build/CMakeFiles/3.27.0-rc2/CMakeSystem.cmake
build/CMakeFiles/3.27.0-rc2/CompilerIdC/a.out
build/CMakeFiles/3.27.0-rc2/CompilerIdC/CMakeCCompilerId.c
build/CMakeFiles/3.27.0-rc2/CompilerIdCXX/a.out
build/CMakeFiles/3.27.0-rc2/CompilerIdCXX/CMakeCXXCompilerId.cpp
build/CMakeFiles/TKSDK-bin.dir/compiler_depend.make
build/CMakeFiles/TKSDK-bin.dir/compiler_depend.ts
build/CMakeFiles/TKSDK-bin.dir/tools/certgen.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/certparse.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/certrevoke.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/certverify.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/cmsdecrypt.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/cmsencrypt.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/cmsparse.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/cmssign.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/cmsverify.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/crlgen.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/crlget.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/crlparse.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/crlverify.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/gmssl.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/pbkdf2.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/rand.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/reqgen.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/reqparse.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/reqsign.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/sdfutil.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/skfutil.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/sm2decrypt.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/sm2encrypt.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/sm2keygen.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/sm2keyparse.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/sm2sign.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/sm2verify.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/sm3.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/sm3hmac.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/sm4.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/sm9decrypt.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/sm9encrypt.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/sm9keygen.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/sm9setup.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/sm9sign.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/sm9verify.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/tlcp_client.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/tlcp_server.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/tls12_client.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/tls12_server.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/tls13_client.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/tls13_server.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/version.c.o.d
build/CMakeFiles/TKSDK-bin.dir/tools/zuc.c.o.d
build/CMakeFiles/TKSDK.dir/compiler_depend.make
build/CMakeFiles/TKSDK.dir/compiler_depend.ts
build/CMakeFiles/TKSDK.dir/src/aead.c.o.d
build/CMakeFiles/TKSDK.dir/src/aes_modes.c.o.d
build/CMakeFiles/TKSDK.dir/src/aes.c.o.d
build/CMakeFiles/TKSDK.dir/src/asn1.c.o.d
build/CMakeFiles/TKSDK.dir/src/base64.c.o.d
build/CMakeFiles/TKSDK.dir/src/block_cipher.c.o.d
build/CMakeFiles/TKSDK.dir/src/chacha20.c.o.d
build/CMakeFiles/TKSDK.dir/src/cms.c.o.d
build/CMakeFiles/TKSDK.dir/src/debug.c.o.d
build/CMakeFiles/TKSDK.dir/src/digest.c.o.d
build/CMakeFiles/TKSDK.dir/src/ec.c.o.d
build/CMakeFiles/TKSDK.dir/src/file.c.o.d
build/CMakeFiles/TKSDK.dir/src/gcm.c.o.d
build/CMakeFiles/TKSDK.dir/src/gf128.c.o.d
build/CMakeFiles/TKSDK.dir/src/hash_drbg.c.o.d
build/CMakeFiles/TKSDK.dir/src/hex.c.o.d
build/CMakeFiles/TKSDK.dir/src/hkdf.c.o.d
build/CMakeFiles/TKSDK.dir/src/hmac.c.o.d
build/CMakeFiles/TKSDK.dir/src/http.c.o.d
build/CMakeFiles/TKSDK.dir/src/pbkdf2.c.o.d
build/CMakeFiles/TKSDK.dir/src/pem.c.o.d
build/CMakeFiles/TKSDK.dir/src/pkcs8.c.o.d
build/CMakeFiles/TKSDK.dir/src/rand_unix.c.o.d
build/CMakeFiles/TKSDK.dir/src/rsa.c.o.d
build/CMakeFiles/TKSDK.dir/src/sha256.c.o.d
build/CMakeFiles/TKSDK.dir/src/sha512.c.o.d
build/CMakeFiles/TKSDK.dir/src/sm2_alg.c.o.d
build/CMakeFiles/TKSDK.dir/src/sm2_key.c.o.d
build/CMakeFiles/TKSDK.dir/src/sm2_lib.c.o.d
build/CMakeFiles/TKSDK.dir/src/sm3_hmac.c.o.d
build/CMakeFiles/TKSDK.dir/src/sm3_kdf.c.o.d
build/CMakeFiles/TKSDK.dir/src/sm3.c.o.d
build/CMakeFiles/TKSDK.dir/src/sm4_common.c.o.d
build/CMakeFiles/TKSDK.dir/src/sm4_enc.c.o.d
build/CMakeFiles/TKSDK.dir/src/sm4_modes.c.o.d
build/CMakeFiles/TKSDK.dir/src/sm4_setkey.c.o.d
build/CMakeFiles/TKSDK.dir/src/sm9_alg.c.o.d
build/CMakeFiles/TKSDK.dir/src/sm9_key.c.o.d
build/CMakeFiles/TKSDK.dir/src/sm9_lib.c.o.d
build/CMakeFiles/TKSDK.dir/src/socket.c.o.d
build/CMakeFiles/TKSDK.dir/src/tlcp.c.o.d
build/CMakeFiles/TKSDK.dir/src/tls_ext.c.o.d
build/CMakeFiles/TKSDK.dir/src/tls_trace.c.o.d
build/CMakeFiles/TKSDK.dir/src/tls.c.o.d
build/CMakeFiles/TKSDK.dir/src/tls12.c.o.d
build/CMakeFiles/TKSDK.dir/src/tls13.c.o.d
build/CMakeFiles/TKSDK.dir/src/version.c.o.d
build/CMakeFiles/TKSDK.dir/src/x509_alg.c.o.d
build/CMakeFiles/TKSDK.dir/src/x509_cer.c.o.d
build/CMakeFiles/TKSDK.dir/src/x509_crl.c.o.d
build/CMakeFiles/TKSDK.dir/src/x509_ext.c.o.d
build/CMakeFiles/TKSDK.dir/src/x509_new.c.o.d
build/CMakeFiles/TKSDK.dir/src/x509_req.c.o.d
build/CMakeFiles/TKSDK.dir/src/zuc_modes.c.o.d
build/CMakeFiles/TKSDK.dir/src/zuc.c.o.d
build/CMakeFiles/TKSDK.dir/src/sdf/sdf_ext.c.o.d
build/CMakeFiles/TKSDK.dir/src/sdf/sdf_lib.c.o.d
build/CMakeFiles/TKSDK.dir/src/sdf/sdf_meth.c.o.d
build/CMakeFiles/TKSDK.dir/src/sdf/sdf_sansec.c.o.d
build/CMakeFiles/TKSDK.dir/src/sdf/sdf.c.o.d
build/CMakeFiles/TKSDK.dir/src/skf/skf_ext.c.o.d
build/CMakeFiles/TKSDK.dir/src/skf/skf_lib.c.o.d
build/CMakeFiles/TKSDK.dir/src/skf/skf_meth.c.o.d
build/CMakeFiles/TKSDK.dir/src/skf/skf_prn.c.o.d
build/CMakeFiles/TKSDK.dir/src/skf/skf_wisec.c.o.d
build/CMakeFiles/TKSDK.dir/src/skf/skf.c.o.d
build/CMakeFiles/sdf_dummy.dir/compiler_depend.make
build/CMakeFiles/sdf_dummy.dir/compiler_depend.ts
build/CMakeFiles/sdf_dummy.dir/src/sdf/sdf_dummy.c.o.d
build/CMakeFiles/skf_dummy.dir/compiler_depend.make
build/CMakeFiles/skf_dummy.dir/compiler_depend.ts
build/CMakeFiles/skf_dummy.dir/src/skf/skf_dummy.c.o.d
test/main.cpp
cc_Andriod.sh
cmake_minimum_required(VERSION 3.27)
project(TKSDK VERSION 0.1.0 LANGUAGES C CXX)
# 定义交叉编译工具链的路径
set(CMAKE_TOOLCHAIN_FILE "/home/kaku/COMMONAPP/NDK/android-ndk-r25c/build/cmake/android.toolchain.cmake")
# 定义支持的 ABI
set(CMAKE_ANDROID_ARCH_ABI armeabi-v7a)
set(CMAKE_ANDROID_API_MIN 21)
set(CMAKE_ANDROID_API 28)
set(LIBRARY_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
set(EXECUTABLE_OUTPUT_PATH ${PROJECT_BINARY_DIR}/bin)
set(CMAKE_MODULE_PATH "${CMAKE_MODULE_PATH};${CMAKE_CURRENT_SOURCE_DIR}/cmake")
include_directories(${PROJECT_SOURCE_DIR}/include)
# 添加源文件和头文件
# add_library(testDemo SHARED ${PROJECT_SOURCE_DIR}/test/main.cpp)
set(src
src/version.c
src/debug.c
src/sm4_common.c
src/sm4_enc.c
src/sm4_modes.c
src/sm4_setkey.c
src/sm3.c
src/sm3_hmac.c
src/sm3_kdf.c
src/sm2_alg.c
src/sm2_key.c
src/sm2_lib.c
src/sm9_alg.c
src/sm9_key.c
src/sm9_lib.c
src/zuc.c
src/zuc_modes.c
src/aes.c
src/aes_modes.c
src/sha256.c
src/sha512.c
src/chacha20.c
src/hash_drbg.c
src/block_cipher.c
src/digest.c
src/hmac.c
src/hkdf.c
src/pbkdf2.c
src/gf128.c
src/gcm.c
src/aead.c
src/pkcs8.c
src/ec.c
src/rsa.c
src/asn1.c
src/hex.c
src/base64.c
src/pem.c
src/x509_alg.c
src/x509_cer.c
src/x509_ext.c
src/x509_req.c
src/x509_crl.c
src/x509_new.c
src/cms.c
src/sdf/sdf.c
src/sdf/sdf_lib.c
src/sdf/sdf_meth.c
src/sdf/sdf_ext.c
src/sdf/sdf_sansec.c
src/skf/skf.c
src/skf/skf_lib.c
src/skf/skf_meth.c
src/skf/skf_ext.c
src/skf/skf_prn.c
src/skf/skf_wisec.c
src/socket.c
src/tls.c
src/tls_ext.c
src/tls_trace.c
src/tlcp.c
src/tls12.c
src/tls13.c
src/file.c
)
set(tools
tools/gmssl.c
tools/version.c
tools/sm4.c
tools/sm3.c
tools/sm3hmac.c
tools/sm2keygen.c
tools/sm2keyparse.c
tools/sm2sign.c
tools/sm2verify.c
tools/sm2encrypt.c
tools/sm2decrypt.c
tools/sm9setup.c
tools/sm9keygen.c
tools/sm9sign.c
tools/sm9verify.c
tools/sm9encrypt.c
tools/sm9decrypt.c
tools/zuc.c
tools/rand.c
tools/pbkdf2.c
tools/certgen.c
tools/certparse.c
tools/certverify.c
tools/certrevoke.c
tools/reqgen.c
tools/reqparse.c
tools/reqsign.c
tools/crlgen.c
tools/crlget.c
tools/crlparse.c
tools/crlverify.c
tools/cmssign.c
tools/cmsverify.c
tools/cmsencrypt.c
tools/cmsdecrypt.c
tools/cmsparse.c
tools/sdfutil.c
tools/skfutil.c
tools/tlcp_client.c
tools/tlcp_server.c
tools/tls12_client.c
tools/tls12_server.c
tools/tls13_client.c
tools/tls13_server.c
)
if (WIN32)
list(APPEND src src/rand_win.c src/http_win.c)
elseif (APPLE)
list(APPEND src src/rand_apple.c src/http.c)
elseif (ANDROID)
list(APPEND src src/rand.c src/http.c)
else()
list(APPEND src src/rand_unix.c src/http.c)
endif()
if (WIN32)
list(APPEND src src/rand_win.c src/http_win.c)
elseif (APPLE)
list(APPEND src src/rand_apple.c src/http.c)
elseif (ANDROID)
list(APPEND src src/rand.c src/http.c)
else()
list(APPEND src src/rand_unix.c src/http.c)
endif()
if (CMAKE_C_COMPILER_ID MATCHES "MSVC")
message(STATUS "CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS")
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) # set before add_library
endif()
add_library(TKSDK SHARED ${src})
if (WIN32)
target_link_libraries(TKSDK -lws2_32)
elseif (APPLE)
target_link_libraries(TKSDK dl)
target_link_libraries(TKSDK "-framework Security")
#target_link_libraries(TKSDK "-framework CoreFoundation") # rand_apple.c CFRelease()
elseif (MINGW)
target_link_libraries(TKSDK PRIVATE wsock32)
else()
target_link_libraries(TKSDK dl)
endif()
SET_TARGET_PROPERTIES(TKSDK PROPERTIES VERSION 3.0 SOVERSION 3)
install(TARGETS TKSDK ARCHIVE DESTINATION lib LIBRARY DESTINATION lib RUNTIME DESTINATION bin)
install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/gmssl DESTINATION include)
if (NOT ${CMAKE_SYSTEM_NAME} STREQUAL "iOS")
add_library(sdf_dummy SHARED src/sdf/sdf_dummy.c)
set_target_properties(sdf_dummy PROPERTIES VERSION 3.0 SOVERSION 3)
add_library(skf_dummy SHARED src/skf/skf_dummy.c)
set_target_properties(skf_dummy PROPERTIES VERSION 3.0 SOVERSION 3)
add_executable(TKSDK-bin ${tools})
target_link_libraries(TKSDK-bin LINK_PUBLIC TKSDK)
set_target_properties(TKSDK-bin PROPERTIES RUNTIME_OUTPUT_NAME TKSDK)
if (MINGW)
target_link_libraries(TKSDK-bin PRIVATE Ws2_32)
endif()
enable_testing()
foreach(name ${tests})
add_test(NAME ${name} COMMAND ${name}test)
add_executable(${name}test tests/${name}test.c)
target_link_libraries (${name}test LINK_PUBLIC TKSDK)
endforeach()
foreach(name ${demos})
add_executable(${name} demos/src/${name}.c)
target_link_libraries(${name} LINK_PUBLIC TKSDK)
endforeach()
install(TARGETS TKSDK-bin RUNTIME DESTINATION bin)
endif()
if (CMAKE_C_COMPILER_ID MATCHES "MSVC")
set_property(DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY VS_STARTUP_PROJECT TKSDK-bin)
set(CMAKE_INSTALL_PREFIX "C:/Program Files/TKSDK") # change by `cmake -DCMAKE_INSTALL_PREFIX=C:\path\to\install`
# run `set path=%path%;C:\Program Files\TKSDK\bin`
add_compile_definitions(_CRT_SECURE_NO_WARNINGS)
# target_compile_options(TKSDK PRIVATE /wd4996)
# target_compile_options(TKSDK-bin PRIVATE /wd4996)
endif()
if (UNIX)
# packaging
# include(LinuxPacking)
# include(DebPacking)
# include(RpmPacking)
include(CPack)
endif (UNIX)
set(CPACK_PROJECT_NAME ${PROJECT_NAME})
set(CPACK_PROJECT_VERSION ${PROJECT_VERSION})
\ No newline at end of file
cmake_minimum_required(VERSION 3.0.0) cmake_minimum_required(VERSION 3.27.0)
project(GMSSL_SDK VERSION 0.1.0 LANGUAGES C CXX) project(TKSDK VERSION 0.1.0 LANGUAGES C CXX)
...@@ -164,7 +164,7 @@ if (CMAKE_C_COMPILER_ID MATCHES "MSVC") ...@@ -164,7 +164,7 @@ if (CMAKE_C_COMPILER_ID MATCHES "MSVC")
set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) # set before add_library set(CMAKE_WINDOWS_EXPORT_ALL_SYMBOLS ON) # set before add_library
endif() endif()
add_library(TKSDK ${src}) add_library(TKSDK SHARED ${src})
if (WIN32) if (WIN32)
target_link_libraries(TKSDK -lws2_32) target_link_libraries(TKSDK -lws2_32)
......
# Copyright (C) 2016 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Configurable variables.
# Modeled after the ndk-build system.
# For any variables defined in:
# https://developer.android.com/ndk/guides/android_mk.html
# https://developer.android.com/ndk/guides/application_mk.html
# if it makes sense for CMake, then replace LOCAL, APP, or NDK with ANDROID, and
# we have that variable below.
#
# ANDROID_TOOLCHAIN
# ANDROID_ABI
# ANDROID_PLATFORM
# ANDROID_STL
# ANDROID_PIE
# ANDROID_CPP_FEATURES
# ANDROID_ALLOW_UNDEFINED_SYMBOLS
# ANDROID_ARM_MODE
# ANDROID_DISABLE_FORMAT_STRING_CHECKS
# ANDROID_CCACHE
cmake_minimum_required(VERSION 3.6.0)
# Inhibit all of CMake's own NDK handling code.
set(CMAKE_SYSTEM_VERSION 1)
# Android NDK
get_filename_component(ANDROID_NDK_EXPECTED_PATH
"${CMAKE_CURRENT_LIST_DIR}/../.." ABSOLUTE)
if(NOT ANDROID_NDK)
# set(ANDROID_NDK "${ANDROID_NDK_EXPECTED_PATH}")
set(ANDROID_NDK "/home/kaku/COMMONAPP/NDK/android-ndk-r25c")
else()
# Allow the user to specify their own NDK path, but emit a warning. This is an
# uncommon use case, but helpful if users want to use a bleeding edge
# toolchain file with a stable NDK.
# https://github.com/android-ndk/ndk/issues/473
get_filename_component(ANDROID_NDK "${ANDROID_NDK}" ABSOLUTE)
if(NOT "${ANDROID_NDK}" STREQUAL "${ANDROID_NDK_EXPECTED_PATH}")
message("Using custom NDK path (ANDROID_NDK is set): ${ANDROID_NDK}")
endif()
endif()
unset(ANDROID_NDK_EXPECTED_PATH)
file(TO_CMAKE_PATH "${ANDROID_NDK}" ANDROID_NDK)
# Android NDK revision
# Possible formats:
# * r16, build 1234: 16.0.1234
# * r16b, build 1234: 16.1.1234
# * r16 beta 1, build 1234: 16.0.1234-beta1
#
# Canary builds are not specially marked.
# message("---LOG---: android-legacy's ndkPath : ${ANDROID_NDK}")
file(READ "${ANDROID_NDK}/source.properties" ANDROID_NDK_SOURCE_PROPERTIES)
set(ANDROID_NDK_REVISION_REGEX
"^Pkg\\.Desc = Android NDK\nPkg\\.Revision = ([0-9]+)\\.([0-9]+)\\.([0-9]+)(-beta([0-9]+))?")
if(NOT ANDROID_NDK_SOURCE_PROPERTIES MATCHES "${ANDROID_NDK_REVISION_REGEX}")
message(SEND_ERROR "Failed to parse Android NDK revision: ${ANDROID_NDK}/source.properties.\n${ANDROID_NDK_SOURCE_PROPERTIES}")
endif()
set(ANDROID_NDK_MAJOR "${CMAKE_MATCH_1}")
set(ANDROID_NDK_MINOR "${CMAKE_MATCH_2}")
set(ANDROID_NDK_BUILD "${CMAKE_MATCH_3}")
set(ANDROID_NDK_BETA "${CMAKE_MATCH_5}")
if(ANDROID_NDK_BETA STREQUAL "")
set(ANDROID_NDK_BETA "0")
endif()
set(ANDROID_NDK_REVISION
"${ANDROID_NDK_MAJOR}.${ANDROID_NDK_MINOR}.${ANDROID_NDK_BUILD}${CMAKE_MATCH_4}")
# Touch toolchain variable to suppress "unused variable" warning.
# This happens if CMake is invoked with the same command line the second time.
if(CMAKE_TOOLCHAIN_FILE)
endif()
# Compatibility for configurable variables.
# Compatible with configurable variables from the other toolchain file:
# https://github.com/taka-no-me/android-cmake
# TODO: We should consider dropping compatibility to simplify things once most
# of our users have migrated to our standard set of configurable variables.
if(ANDROID_TOOLCHAIN_NAME AND NOT ANDROID_TOOLCHAIN)
if(ANDROID_TOOLCHAIN_NAME MATCHES "-clang([0-9].[0-9])?$")
set(ANDROID_TOOLCHAIN clang)
elseif(ANDROID_TOOLCHAIN_NAME MATCHES "-[0-9].[0-9]$")
set(ANDROID_TOOLCHAIN gcc)
endif()
endif()
if(ANDROID_ABI STREQUAL "armeabi-v7a with NEON")
set(ANDROID_ABI armeabi-v7a)
elseif(ANDROID_TOOLCHAIN_NAME AND NOT ANDROID_ABI)
if(ANDROID_TOOLCHAIN_NAME MATCHES "^arm-linux-androideabi-")
set(ANDROID_ABI armeabi-v7a)
elseif(ANDROID_TOOLCHAIN_NAME MATCHES "^aarch64-linux-android-")
set(ANDROID_ABI arm64-v8a)
elseif(ANDROID_TOOLCHAIN_NAME MATCHES "^x86-")
set(ANDROID_ABI x86)
elseif(ANDROID_TOOLCHAIN_NAME MATCHES "^x86_64-")
set(ANDROID_ABI x86_64)
elseif(ANDROID_TOOLCHAIN_NAME MATCHES "^mipsel-linux-android-")
set(ANDROID_ABI mips)
elseif(ANDROID_TOOLCHAIN_NAME MATCHES "^mips64el-linux-android-")
set(ANDROID_ABI mips64)
endif()
endif()
if(ANDROID_NATIVE_API_LEVEL AND NOT ANDROID_PLATFORM)
if(ANDROID_NATIVE_API_LEVEL MATCHES "^android-[0-9]+$")
set(ANDROID_PLATFORM ${ANDROID_NATIVE_API_LEVEL})
elseif(ANDROID_NATIVE_API_LEVEL MATCHES "^[0-9]+$")
set(ANDROID_PLATFORM android-${ANDROID_NATIVE_API_LEVEL})
endif()
endif()
if(DEFINED ANDROID_APP_PIE AND NOT DEFINED ANDROID_PIE)
set(ANDROID_PIE "${ANDROID_APP_PIE}")
endif()
if(ANDROID_STL_FORCE_FEATURES AND NOT DEFINED ANDROID_CPP_FEATURES)
set(ANDROID_CPP_FEATURES "rtti exceptions")
endif()
if(DEFINED ANDROID_NO_UNDEFINED AND NOT DEFINED ANDROID_ALLOW_UNDEFINED_SYMBOLS)
if(ANDROID_NO_UNDEFINED)
set(ANDROID_ALLOW_UNDEFINED_SYMBOLS FALSE)
else()
set(ANDROID_ALLOW_UNDEFINED_SYMBOLS TRUE)
endif()
endif()
if(DEFINED ANDROID_SO_UNDEFINED AND NOT DEFINED ANDROID_ALLOW_UNDEFINED_SYMBOLS)
set(ANDROID_ALLOW_UNDEFINED_SYMBOLS "${ANDROID_SO_UNDEFINED}")
endif()
if(DEFINED ANDROID_FORCE_ARM_BUILD AND NOT ANDROID_ARM_MODE)
if(ANDROID_FORCE_ARM_BUILD)
set(ANDROID_ARM_MODE arm)
else()
set(ANDROID_ARM_MODE thumb)
endif()
endif()
if(NDK_CCACHE AND NOT ANDROID_CCACHE)
set(ANDROID_CCACHE "${NDK_CCACHE}")
endif()
# Default values for configurable variables.
if(NOT ANDROID_TOOLCHAIN)
set(ANDROID_TOOLCHAIN clang)
elseif(ANDROID_TOOLCHAIN STREQUAL gcc)
message(FATAL_ERROR "GCC is no longer supported. See "
"https://android.googlesource.com/platform/ndk/+/master/docs/ClangMigration.md.")
endif()
if(NOT ANDROID_ABI)
set(ANDROID_ABI armeabi-v7a)
endif()
if(ANDROID_ABI STREQUAL armeabi)
message(FATAL_ERROR "armeabi is no longer supported. Use armeabi-v7a.")
elseif(ANDROID_ABI MATCHES "^(mips|mips64)$")
message(FATAL_ERROR "MIPS and MIPS64 are no longer supported.")
endif()
if(DEFINED ANDROID_ARM_NEON AND NOT ANDROID_ARM_NEON)
message(FATAL_ERROR "Disabling Neon is no longer supported")
endif()
if(ANDROID_ABI STREQUAL armeabi-v7a)
set(ANDROID_ARM_NEON TRUE)
endif()
include(${ANDROID_NDK}/build/cmake/platforms.cmake)
# If no platform version was chosen by the user, default to the minimum version
# supported by this NDK.
if(NOT ANDROID_PLATFORM)
message(STATUS "\
ANDROID_PLATFORM not set. Defaulting to minimum supported version
${NDK_MIN_PLATFORM_LEVEL}.")
set(ANDROID_PLATFORM "android-${NDK_MIN_PLATFORM_LEVEL}")
endif()
if(ANDROID_PLATFORM STREQUAL "latest")
message(STATUS
"Using latest available ANDROID_PLATFORM: ${NDK_MAX_PLATFORM_LEVEL}.")
set(ANDROID_PLATFORM "android-${NDK_MAX_PLATFORM_LEVEL}")
string(REPLACE "android-" "" ANDROID_PLATFORM_LEVEL ${ANDROID_PLATFORM})
endif()
string(REPLACE "android-" "" ANDROID_PLATFORM_LEVEL ${ANDROID_PLATFORM})
# Aliases defined by meta/platforms.json include codename aliases for platform
# API levels as well as cover any gaps in platforms that may not have had NDK
# APIs.
if(NOT "${NDK_PLATFORM_ALIAS_${ANDROID_PLATFORM_LEVEL}}" STREQUAL "")
message(STATUS "\
${ANDROID_PLATFORM} is an alias for \
${NDK_PLATFORM_ALIAS_${ANDROID_PLATFORM_LEVEL}}. Adjusting ANDROID_PLATFORM to \
match.")
set(ANDROID_PLATFORM "${NDK_PLATFORM_ALIAS_${ANDROID_PLATFORM_LEVEL}}")
string(REPLACE "android-" "" ANDROID_PLATFORM_LEVEL ${ANDROID_PLATFORM})
endif()
# Pull up to the minimum supported version if an old API level was requested.
if(ANDROID_PLATFORM_LEVEL LESS NDK_MIN_PLATFORM_LEVEL)
message(STATUS "\
${ANDROID_PLATFORM} is unsupported. Using minimum supported version \
${NDK_MIN_PLATFORM_LEVEL}.")
set(ANDROID_PLATFORM "android-${NDK_MIN_PLATFORM_LEVEL}")
string(REPLACE "android-" "" ANDROID_PLATFORM_LEVEL ${ANDROID_PLATFORM})
endif()
# And for LP64 we need to pull up to 21. No diagnostic is provided here because
# minSdkVersion < 21 is valid for the project even though it may not be for this
# ABI.
if(ANDROID_ABI MATCHES "64(-v8a)?$" AND ANDROID_PLATFORM_LEVEL LESS 21)
set(ANDROID_PLATFORM android-21)
set(ANDROID_PLATFORM_LEVEL 21)
endif()
# ANDROID_PLATFORM beyond the maximum is an error. The correct way to specify
# the latest version is ANDROID_PLATFORM=latest.
if(ANDROID_PLATFORM_LEVEL GREATER NDK_MAX_PLATFORM_LEVEL)
message(SEND_ERROR "\
${ANDROID_PLATFORM} is above the maximum supported version \
${NDK_MAX_PLATFORM_LEVEL}. Choose a supported API level or set \
ANDROID_PLATFORM to \"latest\".")
endif()
if(NOT ANDROID_STL)
set(ANDROID_STL c++_static)
endif()
if("${ANDROID_STL}" STREQUAL "gnustl_shared" OR
"${ANDROID_STL}" STREQUAL "gnustl_static" OR
"${ANDROID_STL}" STREQUAL "stlport_shared" OR
"${ANDROID_STL}" STREQUAL "stlport_static")
message(FATAL_ERROR "\
${ANDROID_STL} is no longer supported. Please switch to either c++_shared or \
c++_static. See https://developer.android.com/ndk/guides/cpp-support.html \
for more information.")
endif()
set(ANDROID_PIE TRUE)
if(NOT ANDROID_ARM_MODE)
set(ANDROID_ARM_MODE thumb)
endif()
# Export configurable variables for the try_compile() command.
set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
ANDROID_ABI
ANDROID_ALLOW_UNDEFINED_SYMBOLS
ANDROID_ARM_MODE
ANDROID_ARM_NEON
ANDROID_CCACHE
ANDROID_CPP_FEATURES
ANDROID_DISABLE_FORMAT_STRING_CHECKS
ANDROID_PIE
ANDROID_PLATFORM
ANDROID_STL
ANDROID_TOOLCHAIN
)
# Standard cross-compiling stuff.
set(ANDROID TRUE)
set(CMAKE_SYSTEM_NAME Android)
# https://github.com/android-ndk/ndk/issues/890
#
# ONLY doesn't do anything when CMAKE_FIND_ROOT_PATH is empty. Without this,
# CMake will wrongly search host sysroots for headers/libraries. The actual path
# used here is fairly meaningless since CMake doesn't handle the NDK sysroot
# layout (per-arch and per-verion subdirectories for libraries), so find_library
# is handled separately by CMAKE_SYSTEM_LIBRARY_PATH.
list(APPEND CMAKE_FIND_ROOT_PATH "${ANDROID_NDK}")
# Allow users to override these values in case they want more strict behaviors.
# For example, they may want to prevent the NDK's libz from being picked up so
# they can use their own.
# https://github.com/android-ndk/ndk/issues/517
if(NOT CMAKE_FIND_ROOT_PATH_MODE_PROGRAM)
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
endif()
if(NOT CMAKE_FIND_ROOT_PATH_MODE_LIBRARY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
endif()
if(NOT CMAKE_FIND_ROOT_PATH_MODE_INCLUDE)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
endif()
if(NOT CMAKE_FIND_ROOT_PATH_MODE_PACKAGE)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
endif()
# ABI.
set(CMAKE_ANDROID_ARCH_ABI ${ANDROID_ABI})
if(ANDROID_ABI STREQUAL armeabi-v7a)
set(ANDROID_SYSROOT_ABI arm)
set(ANDROID_TOOLCHAIN_NAME arm-linux-androideabi)
set(CMAKE_SYSTEM_PROCESSOR armv7-a)
set(ANDROID_LLVM_TRIPLE armv7-none-linux-androideabi)
elseif(ANDROID_ABI STREQUAL arm64-v8a)
set(ANDROID_SYSROOT_ABI arm64)
set(CMAKE_SYSTEM_PROCESSOR aarch64)
set(ANDROID_TOOLCHAIN_NAME aarch64-linux-android)
set(ANDROID_LLVM_TRIPLE aarch64-none-linux-android)
elseif(ANDROID_ABI STREQUAL x86)
set(ANDROID_SYSROOT_ABI x86)
set(CMAKE_SYSTEM_PROCESSOR i686)
set(ANDROID_TOOLCHAIN_NAME i686-linux-android)
set(ANDROID_LLVM_TRIPLE i686-none-linux-android)
elseif(ANDROID_ABI STREQUAL x86_64)
set(ANDROID_SYSROOT_ABI x86_64)
set(CMAKE_SYSTEM_PROCESSOR x86_64)
set(ANDROID_TOOLCHAIN_NAME x86_64-linux-android)
set(ANDROID_LLVM_TRIPLE x86_64-none-linux-android)
else()
message(FATAL_ERROR "Invalid Android ABI: ${ANDROID_ABI}.")
endif()
set(ANDROID_LLVM_TRIPLE "${ANDROID_LLVM_TRIPLE}${ANDROID_PLATFORM_LEVEL}")
set(ANDROID_COMPILER_FLAGS)
set(ANDROID_COMPILER_FLAGS_CXX)
set(ANDROID_COMPILER_FLAGS_DEBUG)
set(ANDROID_COMPILER_FLAGS_RELEASE)
set(ANDROID_LINKER_FLAGS)
set(ANDROID_LINKER_FLAGS_EXE)
set(ANDROID_LINKER_FLAGS_RELEASE)
set(ANDROID_LINKER_FLAGS_RELWITHDEBINFO)
set(ANDROID_LINKER_FLAGS_MINSIZEREL)
# STL.
set(ANDROID_CXX_STANDARD_LIBRARIES)
if(ANDROID_STL STREQUAL system)
list(APPEND ANDROID_COMPILER_FLAGS_CXX "-stdlib=libstdc++")
if(NOT "x${ANDROID_CPP_FEATURES}" STREQUAL "x")
list(APPEND ANDROID_CXX_STANDARD_LIBRARIES "-lc++abi")
if(ANDROID_PLATFORM_LEVEL LESS 21)
list(APPEND ANDROID_CXX_STANDARD_LIBRARIES "-landroid_support")
endif()
endif()
elseif(ANDROID_STL STREQUAL c++_static)
list(APPEND ANDROID_LINKER_FLAGS "-static-libstdc++")
elseif(ANDROID_STL STREQUAL c++_shared)
elseif(ANDROID_STL STREQUAL none)
list(APPEND ANDROID_COMPILER_FLAGS_CXX "-nostdinc++")
list(APPEND ANDROID_LINKER_FLAGS "-nostdlib++")
else()
message(FATAL_ERROR "Invalid STL: ${ANDROID_STL}.")
endif()
if(CMAKE_HOST_SYSTEM_NAME STREQUAL Linux)
set(ANDROID_HOST_TAG linux-x86_64)
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin)
set(ANDROID_HOST_TAG darwin-x86_64)
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Windows)
set(ANDROID_HOST_TAG windows-x86_64)
endif()
if(CMAKE_HOST_SYSTEM_NAME STREQUAL Windows)
set(ANDROID_TOOLCHAIN_SUFFIX .exe)
endif()
# Toolchain.
set(ANDROID_TOOLCHAIN_ROOT
"${ANDROID_NDK}/toolchains/llvm/prebuilt/${ANDROID_HOST_TAG}")
set(ANDROID_TOOLCHAIN_PREFIX
"${ANDROID_TOOLCHAIN_ROOT}/bin/${ANDROID_TOOLCHAIN_NAME}-")
list(APPEND CMAKE_PREFIX_PATH "${ANDROID_TOOLCHAIN_ROOT}")
# NB: This variable causes CMake to automatically pass --sysroot to the
# toolchain. Studio currently relies on this to recognize Android builds. If
# this variable is removed, ensure that flag is still passed.
# TODO: Teach Studio to recognize Android builds based on --target.
set(CMAKE_SYSROOT "${ANDROID_TOOLCHAIN_ROOT}/sysroot")
# Allows CMake to find headers in the architecture-specific include directories.
set(CMAKE_LIBRARY_ARCHITECTURE "${ANDROID_TOOLCHAIN_NAME}")
# In addition to <root>/<prefix>/lib/<arch>, cmake also searches <root>/<prefix>.
# Adding the API specific path to the beginning of CMAKE_SYSTEM_PREFIX_PATH, to
# make sure it is searched first.
set(CMAKE_SYSTEM_PREFIX_PATH
"/usr/lib/${ANDROID_TOOLCHAIN_NAME}/${ANDROID_PLATFORM_LEVEL}"
"${CMAKE_SYSTEM_PREFIX_PATH}"
)
set(ANDROID_HOST_PREBUILTS "${ANDROID_NDK}/prebuilt/${ANDROID_HOST_TAG}")
set(ANDROID_C_COMPILER
"${ANDROID_TOOLCHAIN_ROOT}/bin/clang${ANDROID_TOOLCHAIN_SUFFIX}")
set(ANDROID_CXX_COMPILER
"${ANDROID_TOOLCHAIN_ROOT}/bin/clang++${ANDROID_TOOLCHAIN_SUFFIX}")
set(ANDROID_ASM_COMPILER
"${ANDROID_TOOLCHAIN_ROOT}/bin/clang${ANDROID_TOOLCHAIN_SUFFIX}")
set(CMAKE_C_COMPILER_TARGET ${ANDROID_LLVM_TRIPLE})
set(CMAKE_CXX_COMPILER_TARGET ${ANDROID_LLVM_TRIPLE})
set(CMAKE_ASM_COMPILER_TARGET ${ANDROID_LLVM_TRIPLE})
set(ANDROID_AR
"${ANDROID_TOOLCHAIN_ROOT}/bin/llvm-ar${ANDROID_TOOLCHAIN_SUFFIX}")
set(ANDROID_RANLIB
"${ANDROID_TOOLCHAIN_ROOT}/bin/llvm-ranlib${ANDROID_TOOLCHAIN_SUFFIX}")
set(ANDROID_STRIP
"${ANDROID_TOOLCHAIN_ROOT}/bin/llvm-strip${ANDROID_TOOLCHAIN_SUFFIX}")
if(${CMAKE_VERSION} VERSION_LESS "3.19")
# Older CMake won't pass -target when running the compiler identification
# test, which causes the test to fail on flags like -mthumb.
# https://github.com/android/ndk/issues/1427
message(WARNING "An old version of CMake is being used that cannot "
"automatically detect compiler attributes. Compiler identification is "
"being bypassed. Some values may be wrong or missing. Update to CMake "
"3.19 or newer to use CMake's built-in compiler identification.")
set(CMAKE_C_COMPILER_ID_RUN TRUE)
set(CMAKE_CXX_COMPILER_ID_RUN TRUE)
set(CMAKE_C_COMPILER_ID Clang)
set(CMAKE_CXX_COMPILER_ID Clang)
# No need to auto-detect the computed standard defaults because CMake 3.6
# doesn't know about anything past C11 or C++14 (neither does 3.10, so no
# need to worry about 3.7-3.9), and any higher standards that Clang might
# use are clamped to those values.
set(CMAKE_C_STANDARD_COMPUTED_DEFAULT 11)
set(CMAKE_CXX_STANDARD_COMPUTED_DEFAULT 14)
set(CMAKE_C_COMPILER_FRONTEND_VARIANT "GNU")
set(CMAKE_CXX_COMPILER_FRONTEND_VARIANT "GNU")
include(${ANDROID_NDK}/build/cmake/compiler_id.cmake)
endif()
# Generic flags.
list(APPEND ANDROID_COMPILER_FLAGS
-g
-DANDROID
-fdata-sections
-ffunction-sections
-funwind-tables
-fstack-protector-strong
-no-canonical-prefixes)
# https://github.com/android/ndk/issues/885
# If we're using LLD we need to use a slower build-id algorithm to work around
# the old version of LLDB in Android Studio, which doesn't understand LLD's
# default hash ("fast").
list(APPEND ANDROID_LINKER_FLAGS -Wl,--build-id=sha1)
if(ANDROID_PLATFORM_LEVEL LESS 30)
# https://github.com/android/ndk/issues/1196
# https://github.com/android/ndk/issues/1589
list(APPEND ANDROID_LINKER_FLAGS -Wl,--no-rosegment)
endif()
list(APPEND ANDROID_LINKER_FLAGS -Wl,--fatal-warnings)
# --gc-sections should not be present for debug builds because that can strip
# functions that the user may want to evaluate while debugging.
list(APPEND ANDROID_LINKER_FLAGS_RELEASE -Wl,--gc-sections)
list(APPEND ANDROID_LINKER_FLAGS_RELWITHDEBINFO -Wl,--gc-sections)
list(APPEND ANDROID_LINKER_FLAGS_MINSIZEREL -Wl,--gc-sections)
# Debug and release flags.
list(APPEND ANDROID_COMPILER_FLAGS_RELEASE -O3)
list(APPEND ANDROID_COMPILER_FLAGS_RELEASE -DNDEBUG)
if(ANDROID_TOOLCHAIN STREQUAL clang)
list(APPEND ANDROID_COMPILER_FLAGS_DEBUG -fno-limit-debug-info)
endif()
# Toolchain and ABI specific flags.
if(ANDROID_ABI STREQUAL x86 AND ANDROID_PLATFORM_LEVEL LESS 24)
# http://b.android.com/222239
# http://b.android.com/220159 (internal http://b/31809417)
# x86 devices have stack alignment issues.
list(APPEND ANDROID_COMPILER_FLAGS -mstackrealign)
endif()
list(APPEND ANDROID_COMPILER_FLAGS -D_FORTIFY_SOURCE=2)
set(CMAKE_C_STANDARD_LIBRARIES_INIT "-latomic -lm")
set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_C_STANDARD_LIBRARIES_INIT}")
if(ANDROID_CXX_STANDARD_LIBRARIES)
string(REPLACE ";" "\" \"" ANDROID_CXX_STANDARD_LIBRARIES "\"${ANDROID_CXX_STANDARD_LIBRARIES}\"")
set(CMAKE_CXX_STANDARD_LIBRARIES_INIT "${CMAKE_CXX_STANDARD_LIBRARIES_INIT} ${ANDROID_CXX_STANDARD_LIBRARIES}")
endif()
# Configuration specific flags.
# PIE is supported on all currently supported Android releases, but it is not
# supported with static executables, so we still provide ANDROID_PIE as an
# escape hatch for those.
if(ANDROID_PIE)
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
endif()
if(ANDROID_CPP_FEATURES)
separate_arguments(ANDROID_CPP_FEATURES)
foreach(feature ${ANDROID_CPP_FEATURES})
if(NOT ${feature} MATCHES "^(rtti|exceptions|no-rtti|no-exceptions)$")
message(FATAL_ERROR "Invalid Android C++ feature: ${feature}.")
endif()
list(APPEND ANDROID_COMPILER_FLAGS_CXX
-f${feature})
endforeach()
string(REPLACE ";" " " ANDROID_CPP_FEATURES "${ANDROID_CPP_FEATURES}")
endif()
if(NOT ANDROID_ALLOW_UNDEFINED_SYMBOLS)
list(APPEND ANDROID_LINKER_FLAGS
-Wl,--no-undefined)
endif()
if(ANDROID_ABI MATCHES "armeabi")
# Clang does not set this up properly when using -fno-integrated-as.
# https://github.com/android-ndk/ndk/issues/906
list(APPEND ANDROID_COMPILER_FLAGS "-march=armv7-a")
if(ANDROID_ARM_MODE STREQUAL thumb)
list(APPEND ANDROID_COMPILER_FLAGS -mthumb)
elseif(ANDROID_ARM_MODE STREQUAL arm)
# Default behavior.
else()
message(FATAL_ERROR "Invalid Android ARM mode: ${ANDROID_ARM_MODE}.")
endif()
endif()
# CMake automatically forwards all compiler flags to the linker, and clang
# doesn't like having -Wa flags being used for linking. To prevent CMake from
# doing this would require meddling with the CMAKE_<LANG>_COMPILE_OBJECT rules,
# which would get quite messy.
list(APPEND ANDROID_LINKER_FLAGS -Qunused-arguments)
if(ANDROID_DISABLE_FORMAT_STRING_CHECKS)
list(APPEND ANDROID_COMPILER_FLAGS
-Wno-error=format-security)
else()
list(APPEND ANDROID_COMPILER_FLAGS
-Wformat -Werror=format-security)
endif()
# Convert these lists into strings.
string(REPLACE ";" " " ANDROID_COMPILER_FLAGS "${ANDROID_COMPILER_FLAGS}")
string(REPLACE ";" " " ANDROID_COMPILER_FLAGS_CXX "${ANDROID_COMPILER_FLAGS_CXX}")
string(REPLACE ";" " " ANDROID_COMPILER_FLAGS_DEBUG "${ANDROID_COMPILER_FLAGS_DEBUG}")
string(REPLACE ";" " " ANDROID_COMPILER_FLAGS_RELEASE "${ANDROID_COMPILER_FLAGS_RELEASE}")
string(REPLACE ";" " " ANDROID_LINKER_FLAGS "${ANDROID_LINKER_FLAGS}")
string(REPLACE ";" " " ANDROID_LINKER_FLAGS_EXE "${ANDROID_LINKER_FLAGS_EXE}")
string(REPLACE ";" " " ANDROID_LINKER_FLAGS_RELEASE "${ANDROID_LINKER_FLAGS_RELEASE}")
string(REPLACE ";" " " ANDROID_LINKER_FLAGS_RELWITHDEBINFO "${ANDROID_LINKER_FLAGS_RELWITHDEBINFO}")
string(REPLACE ";" " " ANDROID_LINKER_FLAGS_MINSIZEREL "${ANDROID_LINKER_FLAGS_MINSIZEREL}")
if(ANDROID_CCACHE)
set(CMAKE_C_COMPILER_LAUNCHER "${ANDROID_CCACHE}")
set(CMAKE_CXX_COMPILER_LAUNCHER "${ANDROID_CCACHE}")
endif()
set(CMAKE_C_COMPILER "${ANDROID_C_COMPILER}")
set(CMAKE_CXX_COMPILER "${ANDROID_CXX_COMPILER}")
set(CMAKE_AR "${ANDROID_AR}" CACHE FILEPATH "Archiver")
set(CMAKE_RANLIB "${ANDROID_RANLIB}" CACHE FILEPATH "Ranlib")
set(CMAKE_STRIP "${ANDROID_STRIP}" CACHE FILEPATH "Strip")
set(_CMAKE_TOOLCHAIN_PREFIX "${ANDROID_TOOLCHAIN_PREFIX}")
if(ANDROID_ABI STREQUAL "x86" OR ANDROID_ABI STREQUAL "x86_64")
set(CMAKE_ASM_NASM_COMPILER
"${ANDROID_TOOLCHAIN_ROOT}/bin/yasm${ANDROID_TOOLCHAIN_SUFFIX}")
set(CMAKE_ASM_NASM_COMPILER_ARG1 "-DELF")
endif()
# Set or retrieve the cached flags.
# This is necessary in case the user sets/changes flags in subsequent
# configures. If we included the Android flags in here, they would get
# overwritten.
set(CMAKE_C_FLAGS ""
CACHE STRING "Flags used by the compiler during all build types.")
set(CMAKE_CXX_FLAGS ""
CACHE STRING "Flags used by the compiler during all build types.")
set(CMAKE_ASM_FLAGS ""
CACHE STRING "Flags used by the compiler during all build types.")
set(CMAKE_C_FLAGS_DEBUG ""
CACHE STRING "Flags used by the compiler during debug builds.")
set(CMAKE_CXX_FLAGS_DEBUG ""
CACHE STRING "Flags used by the compiler during debug builds.")
set(CMAKE_ASM_FLAGS_DEBUG ""
CACHE STRING "Flags used by the compiler during debug builds.")
set(CMAKE_C_FLAGS_RELEASE ""
CACHE STRING "Flags used by the compiler during release builds.")
set(CMAKE_CXX_FLAGS_RELEASE ""
CACHE STRING "Flags used by the compiler during release builds.")
set(CMAKE_ASM_FLAGS_RELEASE ""
CACHE STRING "Flags used by the compiler during release builds.")
set(CMAKE_MODULE_LINKER_FLAGS ""
CACHE STRING "Flags used by the linker during the creation of modules.")
set(CMAKE_SHARED_LINKER_FLAGS ""
CACHE STRING "Flags used by the linker during the creation of dll's.")
set(CMAKE_EXE_LINKER_FLAGS ""
CACHE STRING "Flags used by the linker.")
set(CMAKE_C_FLAGS "${ANDROID_COMPILER_FLAGS} ${CMAKE_C_FLAGS}")
set(CMAKE_CXX_FLAGS "${ANDROID_COMPILER_FLAGS} ${ANDROID_COMPILER_FLAGS_CXX} ${CMAKE_CXX_FLAGS}")
set(CMAKE_ASM_FLAGS "${ANDROID_COMPILER_FLAGS} ${CMAKE_ASM_FLAGS}")
set(CMAKE_C_FLAGS_DEBUG "${ANDROID_COMPILER_FLAGS_DEBUG} ${CMAKE_C_FLAGS_DEBUG}")
set(CMAKE_CXX_FLAGS_DEBUG "${ANDROID_COMPILER_FLAGS_DEBUG} ${CMAKE_CXX_FLAGS_DEBUG}")
set(CMAKE_ASM_FLAGS_DEBUG "${ANDROID_COMPILER_FLAGS_DEBUG} ${CMAKE_ASM_FLAGS_DEBUG}")
set(CMAKE_C_FLAGS_RELEASE "${ANDROID_COMPILER_FLAGS_RELEASE} ${CMAKE_C_FLAGS_RELEASE}")
set(CMAKE_CXX_FLAGS_RELEASE "${ANDROID_COMPILER_FLAGS_RELEASE} ${CMAKE_CXX_FLAGS_RELEASE}")
set(CMAKE_ASM_FLAGS_RELEASE "${ANDROID_COMPILER_FLAGS_RELEASE} ${CMAKE_ASM_FLAGS_RELEASE}")
set(CMAKE_SHARED_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} ${CMAKE_SHARED_LINKER_FLAGS}")
set(CMAKE_MODULE_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} ${CMAKE_MODULE_LINKER_FLAGS}")
set(CMAKE_EXE_LINKER_FLAGS "${ANDROID_LINKER_FLAGS} ${ANDROID_LINKER_FLAGS_EXE} ${CMAKE_EXE_LINKER_FLAGS}")
set(CMAKE_SHARED_LINKER_FLAGS_RELEASE "${ANDROID_LINKER_FLAGS_RELEASE} ${CMAKE_SHARED_LINKER_FLAGS_RELEASE}")
set(CMAKE_MODULE_LINKER_FLAGS_RELEASE "${ANDROID_LINKER_FLAGS_RELEASE} ${CMAKE_MODULE_LINKER_FLAGS_RELEASE}")
set(CMAKE_EXE_LINKER_FLAGS_RELEASE "${ANDROID_LINKER_FLAGS_RELEASE} ${CMAKE_EXE_LINKER_FLAGS_RELEASE}")
set(CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO "${ANDROID_LINKER_FLAGS_RELWITHDEBINFO} ${CMAKE_SHARED_LINKER_FLAGS_RELWITHDEBINFO}")
set(CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO "${ANDROID_LINKER_FLAGS_RELWITHDEBINFO} ${CMAKE_MODULE_LINKER_FLAGS_RELWITHDEBINFO}")
set(CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO "${ANDROID_LINKER_FLAGS_RELWITHDEBINFO} ${CMAKE_EXE_LINKER_FLAGS_RELWITHDEBINFO}")
set(CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL "${ANDROID_LINKER_FLAGS_MINSIZEREL} ${CMAKE_SHARED_LINKER_FLAGS_MINSIZEREL}")
set(CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL "${ANDROID_LINKER_FLAGS_MINSIZEREL} ${CMAKE_MODULE_LINKER_FLAGS_MINSIZEREL}")
set(CMAKE_EXE_LINKER_FLAGS_MINSIZEREL "${ANDROID_LINKER_FLAGS_MINSIZEREL} ${CMAKE_EXE_LINKER_FLAGS_MINSIZEREL}")
# Compatibility for read-only variables.
# Read-only variables for compatibility with the other toolchain file.
# We'll keep these around for the existing projects that still use them.
# TODO: All of the variables here have equivalents in our standard set of
# configurable variables, so we can remove these once most of our users migrate
# to those variables.
set(ANDROID_NATIVE_API_LEVEL ${ANDROID_PLATFORM_LEVEL})
if(ANDROID_ALLOW_UNDEFINED_SYMBOLS)
set(ANDROID_SO_UNDEFINED TRUE)
else()
set(ANDROID_NO_UNDEFINED TRUE)
endif()
set(ANDROID_FUNCTION_LEVEL_LINKING TRUE)
set(ANDROID_GOLD_LINKER TRUE)
set(ANDROID_NOEXECSTACK TRUE)
set(ANDROID_RELRO TRUE)
if(ANDROID_ARM_MODE STREQUAL arm)
set(ANDROID_FORCE_ARM_BUILD TRUE)
endif()
if(ANDROID_CPP_FEATURES MATCHES "rtti"
AND ANDROID_CPP_FEATURES MATCHES "exceptions")
set(ANDROID_STL_FORCE_FEATURES TRUE)
endif()
if(ANDROID_CCACHE)
set(NDK_CCACHE "${ANDROID_CCACHE}")
endif()
if(ANDROID_TOOLCHAIN STREQUAL clang)
set(ANDROID_TOOLCHAIN_NAME ${ANDROID_TOOLCHAIN_NAME}-clang)
else()
set(ANDROID_TOOLCHAIN_NAME ${ANDROID_TOOLCHAIN_NAME}-4.9)
endif()
set(ANDROID_NDK_HOST_X64 TRUE)
set(ANDROID_NDK_LAYOUT RELEASE)
if(ANDROID_ABI STREQUAL armeabi-v7a)
set(ARMEABI_V7A TRUE)
if(ANDROID_ARM_NEON)
set(NEON TRUE)
endif()
elseif(ANDROID_ABI STREQUAL arm64-v8a)
set(ARM64_V8A TRUE)
elseif(ANDROID_ABI STREQUAL x86)
set(X86 TRUE)
elseif(ANDROID_ABI STREQUAL x86_64)
set(X86_64 TRUE)
endif()
set(ANDROID_NDK_HOST_SYSTEM_NAME ${ANDROID_HOST_TAG})
set(ANDROID_NDK_ABI_NAME ${ANDROID_ABI})
set(ANDROID_NDK_RELEASE r${ANDROID_NDK_REVISION})
set(ANDROID_ARCH_NAME ${ANDROID_SYSROOT_ABI})
set(TOOL_OS_SUFFIX ${ANDROID_TOOLCHAIN_SUFFIX})
if(ANDROID_TOOLCHAIN STREQUAL clang)
set(ANDROID_COMPILER_IS_CLANG TRUE)
endif()
# CMake 3.7+ compatibility.
if (CMAKE_VERSION VERSION_GREATER 3.7.0)
set(CMAKE_ANDROID_NDK ${ANDROID_NDK})
set(CMAKE_ANDROID_NDK_TOOLCHAIN_VERSION clang)
set(CMAKE_ANDROID_STL_TYPE ${ANDROID_STL})
if(ANDROID_ABI MATCHES "^armeabi(-v7a)?$")
set(CMAKE_ANDROID_ARM_NEON ${ANDROID_ARM_NEON})
set(CMAKE_ANDROID_ARM_MODE ${ANDROID_ARM_MODE})
endif()
# https://github.com/android/ndk/issues/861
if(ANDROID_ABI STREQUAL armeabi-v7a)
set(CMAKE_ANDROID_ARCH arm)
elseif(ANDROID_ABI STREQUAL arm64-v8a)
set(CMAKE_ANDROID_ARCH arm64)
elseif(ANDROID_ABI STREQUAL x86)
set(CMAKE_ANDROID_ARCH x86)
elseif(ANDROID_ABI STREQUAL x86_64)
set(CMAKE_ANDROID_ARCH x86_64)
endif()
# https://github.com/android/ndk/issues/1012
set(CMAKE_ASM_ANDROID_TOOLCHAIN_MACHINE "${ANDROID_TOOLCHAIN_NAME}")
set(CMAKE_C_ANDROID_TOOLCHAIN_MACHINE "${ANDROID_TOOLCHAIN_NAME}")
set(CMAKE_CXX_ANDROID_TOOLCHAIN_MACHINE "${ANDROID_TOOLCHAIN_NAME}")
set(CMAKE_ASM_ANDROID_TOOLCHAIN_PREFIX "${ANDROID_TOOLCHAIN_PREFIX}")
set(CMAKE_C_ANDROID_TOOLCHAIN_PREFIX "${ANDROID_TOOLCHAIN_PREFIX}")
set(CMAKE_CXX_ANDROID_TOOLCHAIN_PREFIX "${ANDROID_TOOLCHAIN_PREFIX}")
set(CMAKE_ASM_ANDROID_TOOLCHAIN_SUFFIX "${ANDROID_TOOLCHAIN_SUFFIX}")
set(CMAKE_C_ANDROID_TOOLCHAIN_SUFFIX "${ANDROID_TOOLCHAIN_SUFFIX}")
set(CMAKE_CXX_ANDROID_TOOLCHAIN_SUFFIX "${ANDROID_TOOLCHAIN_SUFFIX}")
endif()
# Copyright (C) 2016 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# Configurable variables.
# Modeled after the ndk-build system.
# For any variables defined in:
# https://developer.android.com/ndk/guides/android_mk.html
# https://developer.android.com/ndk/guides/application_mk.html
# if it makes sense for CMake, then replace LOCAL, APP, or NDK with ANDROID, and
# we have that variable below.
#
# ANDROID_TOOLCHAIN
# ANDROID_ABI
# ANDROID_PLATFORM
# ANDROID_STL
# ANDROID_PIE
# ANDROID_CPP_FEATURES
# ANDROID_ALLOW_UNDEFINED_SYMBOLS
# ANDROID_ARM_MODE
# ANDROID_DISABLE_FORMAT_STRING_CHECKS
# ANDROID_CCACHE
cmake_minimum_required(VERSION 3.6.0)
# message("---LOG---: start")
# CMake invokes the toolchain file twice during the first build, but only once
# during subsequent rebuilds. This was causing the various flags to be added
# twice on the first build, and on a rebuild ninja would see only one set of the
# flags and rebuild the world.
# https://github.com/android-ndk/ndk/issues/323
if(ANDROID_NDK_TOOLCHAIN_INCLUDED)
return()
endif(ANDROID_NDK_TOOLCHAIN_INCLUDED)
set(ANDROID_NDK_TOOLCHAIN_INCLUDED true)
if(DEFINED ANDROID_USE_LEGACY_TOOLCHAIN_FILE)
set(_USE_LEGACY_TOOLCHAIN_FILE ${ANDROID_USE_LEGACY_TOOLCHAIN_FILE})
else()
# Default to the legacy toolchain file to avoid changing the behavior of
# CMAKE_CXX_FLAGS. See https://github.com/android/ndk/issues/1693.
set(_USE_LEGACY_TOOLCHAIN_FILE true)
endif()
if(_USE_LEGACY_TOOLCHAIN_FILE)
include("${CMAKE_CURRENT_LIST_DIR}/android-legacy.toolchain.cmake")
return()
endif()
# Android NDK path
get_filename_component(ANDROID_NDK_EXPECTED_PATH
"${CMAKE_CURRENT_LIST_DIR}/../.." ABSOLUTE)
if(NOT ANDROID_NDK)
set(CMAKE_ANDROID_NDK "${ANDROID_NDK_EXPECTED_PATH}")
else()
message(WARNING "---LOG---: Using custom NDK path (ANDROID_NDK is set): ${ANDROID_NDK}")
# Allow the user to specify their own NDK path, but emit a warning. This is an
# uncommon use case, but helpful if users want to use a bleeding edge
# toolchain file with a stable NDK.
# https://github.com/android-ndk/ndk/issues/473
get_filename_component(ANDROID_NDK "${ANDROID_NDK}" ABSOLUTE)
if(NOT "${ANDROID_NDK}" STREQUAL "${ANDROID_NDK_EXPECTED_PATH}")
message(WARNING "Using custom NDK path (ANDROID_NDK is set): ${ANDROID_NDK}")
endif()
set(CMAKE_ANDROID_NDK ${ANDROID_NDK})
endif()
unset(ANDROID_NDK_EXPECTED_PATH)
file(TO_CMAKE_PATH "${CMAKE_ANDROID_NDK}" CMAKE_ANDROID_NDK)
# Android NDK revision
# Possible formats:
# * r16, build 1234: 16.0.1234
# * r16b, build 1234: 16.1.1234
# * r16 beta 1, build 1234: 16.0.1234-beta1
#
# Canary builds are not specially marked.
file(READ "${CMAKE_ANDROID_NDK}/source.properties" ANDROID_NDK_SOURCE_PROPERTIES)
set(ANDROID_NDK_REVISION_REGEX
"^Pkg\\.Desc = Android NDK\nPkg\\.Revision = ([0-9]+)\\.([0-9]+)\\.([0-9]+)(-beta([0-9]+))?")
if(NOT ANDROID_NDK_SOURCE_PROPERTIES MATCHES "${ANDROID_NDK_REVISION_REGEX}")
message(SEND_ERROR "Failed to parse Android NDK revision: ${CMAKE_ANDROID_NDK}/source.properties.\n${ANDROID_NDK_SOURCE_PROPERTIES}")
endif()
set(ANDROID_NDK_MAJOR "${CMAKE_MATCH_1}")
set(ANDROID_NDK_MINOR "${CMAKE_MATCH_2}")
set(ANDROID_NDK_BUILD "${CMAKE_MATCH_3}")
set(ANDROID_NDK_BETA "${CMAKE_MATCH_5}")
if(ANDROID_NDK_BETA STREQUAL "")
set(ANDROID_NDK_BETA "0")
endif()
set(ANDROID_NDK_REVISION
"${ANDROID_NDK_MAJOR}.${ANDROID_NDK_MINOR}.${ANDROID_NDK_BUILD}${CMAKE_MATCH_4}")
# Touch toolchain variable to suppress "unused variable" warning.
# This happens if CMake is invoked with the same command line the second time.
if(CMAKE_TOOLCHAIN_FILE)
endif()
# Determine the ABI.
if(NOT CMAKE_ANDROID_ARCH_ABI)
if(ANDROID_ABI STREQUAL "armeabi-v7a with NEON")
set(CMAKE_ANDROID_ARCH_ABI armeabi-v7a)
elseif(ANDROID_ABI)
set(CMAKE_ANDROID_ARCH_ABI ${ANDROID_ABI})
elseif(ANDROID_TOOLCHAIN_NAME MATCHES "^arm-linux-androideabi-")
set(CMAKE_ANDROID_ARCH_ABI armeabi-v7a)
elseif(ANDROID_TOOLCHAIN_NAME MATCHES "^aarch64-linux-android-")
set(CMAKE_ANDROID_ARCH_ABI arm64-v8a)
elseif(ANDROID_TOOLCHAIN_NAME MATCHES "^x86-")
set(CMAKE_ANDROID_ARCH_ABI x86)
elseif(ANDROID_TOOLCHAIN_NAME MATCHES "^x86_64-")
set(CMAKE_ANDROID_ARCH_ABI x86_64)
else()
set(CMAKE_ANDROID_ARCH_ABI armeabi-v7a)
endif()
endif()
if(DEFINED ANDROID_ARM_NEON AND NOT ANDROID_ARM_NEON)
message(FATAL_ERROR "Disabling Neon is no longer supported")
endif()
if(CMAKE_ANDROID_ARCH_ABI STREQUAL "armeabi-v7a")
set(CMAKE_ANDROID_ARM_NEON TRUE)
if(NOT DEFINED CMAKE_ANDROID_ARM_MODE)
if(DEFINED ANDROID_FORCE_ARM_BUILD)
set(CMAKE_ANDROID_ARM_MODE ${ANDROID_FORCE_ARM_BUILD})
elseif(DEFINED ANDROID_ARM_MODE)
if(ANDROID_ARM_MODE STREQUAL "arm")
set(CMAKE_ANDROID_ARM_MODE TRUE)
elseif(ANDROID_ARM_MODE STREQUAL "thumb")
set(CMAKE_ANDROID_ARM_MODE FALSE)
else()
message(FATAL_ERROR "Invalid Android ARM mode: ${ANDROID_ARM_MODE}.")
endif()
endif()
endif()
endif()
# PIE is supported on all currently supported Android releases, but it is not
# supported with static executables, so we still provide ANDROID_PIE as an
# escape hatch for those.
if(NOT DEFINED CMAKE_POSITION_INDEPENDENT_CODE)
if(DEFINED ANDROID_PIE)
set(CMAKE_POSITION_INDEPENDENT_CODE ${ANDROID_PIE})
elseif(DEFINED ANDROID_APP_PIE)
set(CMAKE_POSITION_INDEPENDENT_CODE ${ANDROID_APP_PIE})
else()
set(CMAKE_POSITION_INDEPENDENT_CODE TRUE)
endif()
endif()
# Default values for configurable variables.
if(NOT ANDROID_TOOLCHAIN)
set(ANDROID_TOOLCHAIN clang)
elseif(ANDROID_TOOLCHAIN STREQUAL gcc)
message(FATAL_ERROR "GCC is no longer supported. See "
"https://android.googlesource.com/platform/ndk/+/master/docs/ClangMigration.md.")
endif()
if(ANDROID_NATIVE_API_LEVEL AND NOT ANDROID_PLATFORM)
if(ANDROID_NATIVE_API_LEVEL MATCHES "^android-[0-9]+$")
set(ANDROID_PLATFORM ${ANDROID_NATIVE_API_LEVEL})
elseif(ANDROID_NATIVE_API_LEVEL MATCHES "^[0-9]+$")
set(ANDROID_PLATFORM android-${ANDROID_NATIVE_API_LEVEL})
endif()
endif()
include(${CMAKE_ANDROID_NDK}/build/cmake/adjust_api_level.cmake)
adjust_api_level("${ANDROID_PLATFORM}" CMAKE_SYSTEM_VERSION)
if(NOT DEFINED CMAKE_ANDROID_STL_TYPE AND DEFINED ANDROID_STL)
set(CMAKE_ANDROID_STL_TYPE ${ANDROID_STL})
endif()
if("${CMAKE_ANDROID_STL_TYPE}" STREQUAL "gnustl_shared" OR
"${CMAKE_ANDROID_STL_TYPE}" STREQUAL "gnustl_static" OR
"${CMAKE_ANDROID_STL_TYPE}" STREQUAL "stlport_shared" OR
"${CMAKE_ANDROID_STL_TYPE}" STREQUAL "stlport_static")
message(FATAL_ERROR "\
${CMAKE_ANDROID_STL_TYPE} is no longer supported. Please switch to either c++_shared \
or c++_static. See https://developer.android.com/ndk/guides/cpp-support.html \
for more information.")
endif()
# Standard cross-compiling stuff.
set(CMAKE_SYSTEM_NAME Android)
# STL.
if(ANDROID_STL)
set(CMAKE_ANDROID_STL_TYPE ${ANDROID_STL})
endif()
if(NDK_CCACHE AND NOT ANDROID_CCACHE)
set(ANDROID_CCACHE "${NDK_CCACHE}")
endif()
if(ANDROID_CCACHE)
set(CMAKE_C_COMPILER_LAUNCHER "${ANDROID_CCACHE}")
set(CMAKE_CXX_COMPILER_LAUNCHER "${ANDROID_CCACHE}")
endif()
# Configuration specific flags.
if(ANDROID_STL_FORCE_FEATURES AND NOT DEFINED ANDROID_CPP_FEATURES)
set(ANDROID_CPP_FEATURES "rtti exceptions")
endif()
if(ANDROID_CPP_FEATURES)
separate_arguments(ANDROID_CPP_FEATURES)
foreach(feature ${ANDROID_CPP_FEATURES})
if(NOT ${feature} MATCHES "^(rtti|exceptions|no-rtti|no-exceptions)$")
message(FATAL_ERROR "Invalid Android C++ feature: ${feature}.")
endif()
if(${feature} STREQUAL "rtti")
set(CMAKE_ANDROID_RTTI TRUE)
endif()
if(${feature} STREQUAL "no-rtti")
set(CMAKE_ANDROID_RTTI FALSE)
endif()
if(${feature} STREQUAL "exceptions")
set(CMAKE_ANDROID_EXCEPTIONS TRUE)
endif()
if(${feature} STREQUAL "no-exceptions")
set(CMAKE_ANDROID_EXCEPTIONS FALSE)
endif()
endforeach()
string(REPLACE ";" " " ANDROID_CPP_FEATURES "${ANDROID_CPP_FEATURES}")
endif()
# Export configurable variables for the try_compile() command.
set(CMAKE_TRY_COMPILE_PLATFORM_VARIABLES
ANDROID_ABI
ANDROID_ALLOW_UNDEFINED_SYMBOLS
ANDROID_ARM_MODE
ANDROID_ARM_NEON
ANDROID_CCACHE
ANDROID_CPP_FEATURES
ANDROID_DISABLE_FORMAT_STRING_CHECKS
ANDROID_PIE
ANDROID_PLATFORM
ANDROID_STL
ANDROID_TOOLCHAIN
ANDROID_USE_LEGACY_TOOLCHAIN_FILE
)
if(DEFINED ANDROID_NO_UNDEFINED AND NOT DEFINED ANDROID_ALLOW_UNDEFINED_SYMBOLS)
if(ANDROID_NO_UNDEFINED)
set(ANDROID_ALLOW_UNDEFINED_SYMBOLS FALSE)
else()
set(ANDROID_ALLOW_UNDEFINED_SYMBOLS TRUE)
endif()
endif()
if(DEFINED ANDROID_SO_UNDEFINED AND NOT DEFINED ANDROID_ALLOW_UNDEFINED_SYMBOLS)
set(ANDROID_ALLOW_UNDEFINED_SYMBOLS "${ANDROID_SO_UNDEFINED}")
endif()
# Exports compatible variables defined in exports.cmake.
set(_ANDROID_EXPORT_COMPATIBILITY_VARIABLES TRUE)
if(CMAKE_HOST_SYSTEM_NAME STREQUAL Linux)
set(ANDROID_HOST_TAG linux-x86_64)
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Darwin)
set(ANDROID_HOST_TAG darwin-x86_64)
elseif(CMAKE_HOST_SYSTEM_NAME STREQUAL Windows)
set(ANDROID_HOST_TAG windows-x86_64)
endif()
# Toolchain.
set(ANDROID_TOOLCHAIN_ROOT
"${CMAKE_ANDROID_NDK}/toolchains/llvm/prebuilt/${ANDROID_HOST_TAG}")
# NB: This variable causes CMake to automatically pass --sysroot to the
# toolchain. Studio currently relies on this to recognize Android builds. If
# this variable is removed, ensure that flag is still passed.
# TODO: Teach Studio to recognize Android builds based on --target.
set(CMAKE_SYSROOT "${ANDROID_TOOLCHAIN_ROOT}/sysroot")
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment