2020-01-09 23:55:50 -05:00
|
|
|
cmake_minimum_required (VERSION 2.8)
|
2019-09-30 10:35:21 -04:00
|
|
|
project (clibcni)
|
|
|
|
|
|
|
|
|
|
option(VERSION "set clibcni version" ON)
|
|
|
|
|
if (VERSION STREQUAL "ON")
|
2020-03-18 04:10:01 -04:00
|
|
|
set(CLIBCNI_VERSION "2.0.0")
|
2019-09-30 10:35:21 -04:00
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
option(DEBUG "set clibcni gcc option" ON)
|
|
|
|
|
if (DEBUG STREQUAL "ON")
|
|
|
|
|
add_definitions("-g -o2")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
option(GCOV "set clibcni gcov option" OFF)
|
|
|
|
|
if (GCOV STREQUAL "ON")
|
|
|
|
|
set(CLIBCNI_GCOV "ON")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
# check depends libs and headers
|
|
|
|
|
include(cmake/checker.cmake)
|
|
|
|
|
if (CHECKER_RESULT)
|
|
|
|
|
return()
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
set(CMAKE_C_COMPILER "gcc" CACHE PATH "c compiler")
|
|
|
|
|
set(CMAKE_C_FLAGS "-fPIC -fstack-protector-all -D_FORTIFY_SOURCE=2 -O2 -Wall -Werror")
|
|
|
|
|
set(CMAKE_SHARED_LINKER_FLAGS "-Wl,-E -Wl,-z,relro -Wl,-z,now -Wl,-z,noexecstack -Wtrampolines -fPIE -pie -shared -pthread")
|
2020-01-20 10:45:57 +08:00
|
|
|
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D__FILENAME__='\"$(subst ${CMAKE_SOURCE_DIR}/,,$(abspath $<))\"'")
|
2019-09-30 10:35:21 -04:00
|
|
|
|
|
|
|
|
configure_file(
|
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/config.h.in"
|
|
|
|
|
"${CMAKE_BINARY_DIR}/conf/config.h"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
configure_file(
|
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/clibcni.pc.in"
|
|
|
|
|
"${CMAKE_BINARY_DIR}/conf/clibcni.pc"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
# build which type of clibcni library
|
|
|
|
|
option(USESHARED "set type of libclibcni, default is shared" ON)
|
|
|
|
|
if (USESHARED STREQUAL "ON")
|
|
|
|
|
set(LIBTYPE "SHARED")
|
|
|
|
|
message("-- Build shared library")
|
|
|
|
|
else ()
|
|
|
|
|
set(LIBTYPE "STATIC")
|
|
|
|
|
message("-- Build static library")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
if (LIB_INSTALL_DIR)
|
|
|
|
|
set(LIB_INSTALL_DIR_DEFAULT ${LIB_INSTALL_DIR})
|
|
|
|
|
else()
|
|
|
|
|
set(LIB_INSTALL_DIR_DEFAULT "lib")
|
|
|
|
|
endif()
|
|
|
|
|
|
|
|
|
|
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src)
|
|
|
|
|
|
|
|
|
|
# install all files
|
|
|
|
|
install(FILES ${CMAKE_BINARY_DIR}/conf/clibcni.pc
|
|
|
|
|
DESTINATION ${LIB_INSTALL_DIR_DEFAULT}/pkgconfig PERMISSIONS OWNER_READ OWNER_WRITE GROUP_READ GROUP_WRITE)
|
|
|
|
|
install(FILES src/types/types.h DESTINATION include/clibcni)
|
|
|
|
|
install(FILES src/version/version.h DESTINATION include/clibcni)
|
|
|
|
|
install(FILES src/api.h DESTINATION include/clibcni)
|