From: Nathan Moinvaziri Date: Tue, 4 Jun 2019 08:48:43 +0000 (-0700) Subject: Added cmake toolchain arm support. (#350) X-Git-Tag: 1.9.9-b1~482 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=ef3edcb9135c4a5dd6443a0162c8a9ff31841955;p=thirdparty%2Fzlib-ng.git Added cmake toolchain arm support. (#350) This PR only adds cmake toolchain files for ARM. NAME/COMMAND stuff is so CMAKE_CROSSCOMPILING_EMULATOR is used. The message() is to prevent a warning about unused variable when specifying CMAKE_TOOLCHAIN_FILE. --- diff --git a/CMakeLists.txt b/CMakeLists.txt index ba55fb5a..25bd31b7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -79,6 +79,10 @@ else() endif() message(STATUS "Architecture: ${ARCH}") +if(CMAKE_TOOLCHAIN_FILE) + message(STATUS "Using cmake toolchain: ${CMAKE_TOOLCHAIN_FILE}") +endif() + option (WITH_GZFILEOP "Compile with support for gzFile related functions" OFF) option (ZLIB_COMPAT "Compile with zlib compatible API" OFF) if (ZLIB_COMPAT) @@ -807,7 +811,7 @@ if (ZLIB_ENABLE_TESTS) enable_testing() add_executable(example test/example.c) target_link_libraries(example zlib) - add_test(example example${CMAKE_EXECUTABLE_SUFFIX}) + add_test(NAME example COMMAND example${CMAKE_EXECUTABLE_SUFFIX}) add_executable(minigzip test/minigzip.c) target_link_libraries(minigzip zlib) @@ -816,7 +820,7 @@ if (ZLIB_ENABLE_TESTS) add_executable(example64 test/example.c) target_link_libraries(example64 zlib) set_target_properties(example64 PROPERTIES COMPILE_FLAGS "-D_FILE_OFFSET_BITS=64") - add_test(example64 example64${CMAKE_EXECUTABLE_SUFFIX}) + add_test(NAME example64 COMMAND example64${CMAKE_EXECUTABLE_SUFFIX}) add_executable(minigzip64 test/minigzip.c) target_link_libraries(minigzip64 zlib) diff --git a/cmake/toolchain-aarch64.cmake b/cmake/toolchain-aarch64.cmake new file mode 100644 index 00000000..31894fdc --- /dev/null +++ b/cmake/toolchain-aarch64.cmake @@ -0,0 +1,26 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR aarch64) +set(CMAKE_SYSTEM_VERSION 1) + +message(STATUS "Using cross-compile toolchain: ${CROSS_COMPILE_TOOLCHAIN}") + +set(CMAKE_C_COMPILER_TARGET "aarch64-linux-gnu") +set(CMAKE_CXX_COMPILER_TARGET "aarch64-linux-gnu") + +set(CMAKE_CROSSCOMPILING TRUE) +set(CMAKE_CROSSCOMPILING_EMULATOR qemu-aarch64 -L /usr/${CMAKE_C_COMPILER_TARGET}/) + +SET(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +SET(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +SET(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) + +find_program(C_COMPILER_FULL_PATH ${CMAKE_C_COMPILER_TARGET}-gcc) +if(NOT C_COMPILER_FULL_PATH) + message(FATAL_ERROR "Cross-compiler ${CMAKE_C_COMPILER_TARGET}-gcc not found") +endif() +set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH}) + +find_program(CXX_COMPILER_FULL_PATH ${CMAKE_C_COMPILER_TARGET}-g++) +if(CXX_COMPILER_FULL_PATH) + set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH}) +endif() diff --git a/cmake/toolchain-arm.cmake b/cmake/toolchain-arm.cmake new file mode 100644 index 00000000..0e3c5c37 --- /dev/null +++ b/cmake/toolchain-arm.cmake @@ -0,0 +1,24 @@ +set(CMAKE_SYSTEM_NAME Linux) +set(CMAKE_SYSTEM_PROCESSOR arm) +set(CMAKE_SYSTEM_VERSION 1) + +message(STATUS "Using cross-compile toolchain: ${CMAKE_C_COMPILER_TARGET}") + +set(CMAKE_CROSSCOMPILING TRUE) +set(CMAKE_CROSSCOMPILING_EMULATOR qemu-arm -L /usr/${CMAKE_C_COMPILER_TARGET}/) + +set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER) +set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY) +set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY) + +find_program(C_COMPILER_FULL_PATH ${CMAKE_C_COMPILER_TARGET}-gcc) +if(NOT C_COMPILER_FULL_PATH) + message(FATAL_ERROR "Cross-compiler ${CMAKE_C_COMPILER_TARGET}-gcc not found") +endif() +set(CMAKE_C_COMPILER ${C_COMPILER_FULL_PATH}) + +find_program(CXX_COMPILER_FULL_PATH ${CMAKE_C_COMPILER_TARGET}-g++) +if(CXX_COMPILER_FULL_PATH) + set(CMAKE_CXX_COMPILER ${CXX_COMPILER_FULL_PATH}) +endif()