Commit fe102e59 by guoxin

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

parent d034272b
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)
......
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