217 lines
5.9 KiB
CMake
217 lines
5.9 KiB
CMake
cmake_minimum_required(VERSION 3.12...3.31)
|
|
|
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules")
|
|
|
|
project(
|
|
zlibAda
|
|
VERSION 1.0.0
|
|
LANGUAGES C ADA
|
|
DESCRIPTION "A library for creating zipfiles based in zlib"
|
|
HOMEPAGE_URL "https://www.zlib.net")
|
|
|
|
option(ZLIB_ADA_BUILD_SHARED "Enable building ada bindings shared library" ON)
|
|
option(ZLIB_ADA_BUILD_STATIC "Enable building ada bindings static library" ON)
|
|
option(ZLIB_ADA_BUILD_TESTING "Enable building tests for ada bindings library" ON)
|
|
|
|
if(WIN32 OR CYGWIN)
|
|
set(zlib_Ada_static_suffix "s")
|
|
set(CMAKE_DEBUG_POSTFIX "d")
|
|
endif(WIN32 OR CYGWIN)
|
|
|
|
if(NOT DEFINED ZLIB_BUILD_ADA)
|
|
if(ZLIB_ADA_BUILD_SHARED)
|
|
list(APPEND REQUIRED_COMPONENTS "shared")
|
|
endif(ZLIB_ADA_BUILD_SHARED)
|
|
|
|
if(ZLIB_ADA_BUILD_STATIC)
|
|
list(APPEND REQUIRED_COMPONENTS "static")
|
|
endif(ZLIB_ADA_BUILD_STATIC)
|
|
|
|
find_package(ZLIB REQUIRED COMPONENTS ${REQUIRED_COMPONENTS} CONFIG)
|
|
endif(NOT DEFINED ZLIB_BUILD_ADA)
|
|
|
|
function(ZLIB_ADA_findTestEnv testName)
|
|
set(testEnv "PATH=")
|
|
|
|
if(MSVC OR MINGW)
|
|
set(separator "\\\;")
|
|
else()
|
|
set(separator ":")
|
|
endif()
|
|
|
|
string(APPEND testEnv "$<TARGET_FILE_DIR:ZLIB::ZLIB>${separator}")
|
|
string(APPEND testEnv "$ENV{PATH}")
|
|
|
|
set_tests_properties(${testName} PROPERTIES ENVIRONMENT "${testEnv}")
|
|
endfunction(ZLIB_ADA_findTestEnv testName)
|
|
|
|
if(ZLIB_ADA_BUILD_SHARED)
|
|
ada_add_library(zlib_ada_Ada SHARED
|
|
zlib-thin.adb
|
|
zlib.adb)
|
|
|
|
set_target_properties(zlib_ada_Ada
|
|
PROPERTIES OUTPUT_NAME zlib-ada)
|
|
|
|
target_link_libraries(zlib_ada_Ada
|
|
INTERFACE ZLIB::ZLIB)
|
|
|
|
ada_add_library(zlib_ada_streams SHARED
|
|
zlib-streams.adb)
|
|
|
|
target_link_libraries(zlib_ada_streams
|
|
PUBLIC
|
|
zlib_ada_Ada)
|
|
|
|
ada_find_ali(zlib_ada_streams)
|
|
|
|
if(ZLIB_ADA_BUILD_TESTING)
|
|
enable_testing()
|
|
ada_add_executable(zlib_ada_test test.adb)
|
|
|
|
target_link_libraries(zlib_ada_test
|
|
PRIVATE
|
|
zlib_ada_Ada
|
|
zlib_ada_streams)
|
|
|
|
ada_find_ali(zlib_ada_test)
|
|
|
|
add_test(NAME zlib_ada_ada-test COMMAND zlib_ada_test)
|
|
set_tests_properties(zlib_ada_ada-test PROPERTIES FIXTURES_REQUIRED zlib_ada_cleanup)
|
|
|
|
if(MSVC
|
|
OR MSYS
|
|
OR MINGW
|
|
OR CYGWIN)
|
|
zlib_ada_findtestenv(zlib_ada_ada-test)
|
|
endif(
|
|
MSVC
|
|
OR MSYS
|
|
OR MINGW
|
|
OR CYGWIN)
|
|
|
|
ada_add_executable(zlib_ada_buffer_demo buffer_demo.adb)
|
|
|
|
target_link_libraries(zlib_ada_buffer_demo
|
|
PRIVATE
|
|
zlib_ada_Ada)
|
|
|
|
ada_find_ali(zlib_ada_buffer_demo)
|
|
|
|
add_test(NAME zlib_ada_buffer-demo COMMAND zlib_ada_buffer_demo)
|
|
|
|
if(MSVC
|
|
OR MSYS
|
|
OR MINGW
|
|
OR CYGWIN)
|
|
zlib_ada_findtestenv(zlib_ada_buffer-demo)
|
|
endif(
|
|
MSVC
|
|
OR MSYS
|
|
OR MINGW
|
|
OR CYGWIN)
|
|
|
|
ada_add_executable(zlib_ada_mtest mtest.adb)
|
|
|
|
target_link_libraries(zlib_ada_mtest
|
|
PRIVATE
|
|
zlib_ada_Ada)
|
|
|
|
ada_find_ali(zlib_ada_mtest)
|
|
|
|
#Not adding test as this is an endless-loop
|
|
|
|
ada_add_executable(zlib_ada_read read.adb)
|
|
|
|
target_link_libraries(zlib_ada_read
|
|
PRIVATE
|
|
zlib_ada_Ada)
|
|
|
|
ada_find_ali(zlib_ada_read)
|
|
|
|
add_test(NAME zlib_ada_read COMMAND zlib_ada_read)
|
|
|
|
if(MSVC
|
|
OR MSYS
|
|
OR MINGW
|
|
OR CYGWIN)
|
|
zlib_ada_findtestenv(zlib_ada_read)
|
|
endif(
|
|
MSVC
|
|
OR MSYS
|
|
OR MINGW
|
|
OR CYGWIN)
|
|
endif(ZLIB_ADA_BUILD_TESTING)
|
|
endif(ZLIB_ADA_BUILD_SHARED)
|
|
|
|
if(ZLIB_ADA_BUILD_STATIC)
|
|
ada_add_library(zlib_ada_AdaStatic STATIC
|
|
zlib-thin.adb
|
|
zlib.adb)
|
|
|
|
target_link_libraries(zlib_ada_AdaStatic
|
|
INTERFACE ZLIB::ZLIBSTATIC)
|
|
|
|
set_target_properties(zlib_ada_AdaStatic
|
|
PROPERTIES OUTPUT_NAME zlib-ada${zlib_Ada_static_suffix})
|
|
|
|
ada_add_library(zlib_ada_streamsStatic STATIC
|
|
zlib-streams.adb)
|
|
|
|
target_link_libraries(zlib_ada_streamsStatic
|
|
PUBLIC
|
|
zlib_ada_AdaStatic)
|
|
|
|
ada_find_ali(zlib_ada_streamsStatic)
|
|
|
|
if(ZLIB_ADA_BUILD_TESTING)
|
|
enable_testing()
|
|
ada_add_executable(zlib_ada_testStatic test.adb)
|
|
|
|
target_link_libraries(zlib_ada_testStatic
|
|
PRIVATE
|
|
zlib_ada_AdaStatic
|
|
zlib_ada_streamsStatic)
|
|
|
|
ada_find_ali(zlib_ada_testStatic)
|
|
|
|
add_test(NAME zlib_ada_testStatic COMMAND zlib_ada_testStatic)
|
|
set_tests_properties(zlib_ada_testStatic PROPERTIES FIXTURES_REQUIRED zlib_ada_cleanup)
|
|
|
|
ada_add_executable(zlib_ada_buffer-demoStatic buffer_demo.adb)
|
|
|
|
target_link_libraries(zlib_ada_buffer-demoStatic
|
|
PRIVATE
|
|
zlib_ada_AdaStatic)
|
|
|
|
ada_find_ali(zlib_ada_buffer-demoStatic)
|
|
|
|
add_test(NAME zlib_ada_buffer-demoStatic COMMAND zlib_ada_buffer-demoStatic)
|
|
|
|
ada_add_executable(zlib_ada_mtestStatic mtest.adb)
|
|
|
|
target_link_libraries(zlib_ada_mtestStatic
|
|
PRIVATE
|
|
zlib_ada_AdaStatic)
|
|
|
|
ada_find_ali(zlib_ada_mtestStatic)
|
|
|
|
# Not adding test as this is an endless-loop
|
|
|
|
ada_add_executable(zlib_ada_readStatic read.adb)
|
|
|
|
target_link_libraries(zlib_ada_readStatic
|
|
PRIVATE
|
|
zlib_ada_AdaStatic)
|
|
|
|
ada_find_ali(zlib_ada_readStatic)
|
|
|
|
add_test(NAME zlib_ada_readStatic COMMAND zlib_ada_readStatic)
|
|
endif(ZLIB_ADA_BUILD_TESTING)
|
|
endif(ZLIB_ADA_BUILD_STATIC)
|
|
|
|
if(ZLIB_ADA_BUILD_TESTING)
|
|
add_test(NAME zlib_ada_cleanup COMMAND ${CMAKE_COMMAND} -E rm ${CMAKE_CURRENT_BINARY_DIR}/testzlib.in
|
|
${CMAKE_CURRENT_BINARY_DIR}/testzlib.out ${CMAKE_CURRENT_BINARY_DIR}/testzlib.zlb)
|
|
set_tests_properties(zlib_ada_cleanup PROPERTIES FIXTURES_CLEANUP zlib_ada_cleanup)
|
|
endif(ZLIB_ADA_BUILD_TESTING)
|