CMAKE_MINIMUM_REQUIRED(VERSION 2.6) PROJECT(ua-api C) SET(LIB_NAME "${PROJECT_NAME}") SET(LIB_PREFIX ${CMAKE_INSTALL_PREFIX}) SET(LIB_DIR "${LIB_PATH}") SET(LIB_INCLUDE_DIR "${LIB_PREFIX}/include") SET(LIB_PKGCONFIG_DIR "${LIB_PATH}/pkgconfig") INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/include) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include) INCLUDE(FindPkgConfig) pkg_check_modules(PKGS REQUIRED dlog glib-2.0 gio-2.0 ) INCLUDE_DIRECTORIES(${PKGS_INCLUDE_DIRS}) LINK_DIRECTORIES(${PKGS_LIBRARY_DIRS}) FOREACH(flag ${PKGS_CFLAGS}) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") ENDFOREACH(flag) SET(RELRO_FLAGS "-Wl,-z,relro") SET(FORTIFY_FLAGS "-D_FORTIFY_SOURCE=2") SET(STACK_CANARY_FLAGS "-fstack-protector-strong") SET(PIE_FLAGS "-fPIE -fPIC") SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden -g") SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${EXTRA_CFLAGS} ${STACK_CANARY_FLAGS} ${FORTIFY_FLAGS} ${RELRO_FLAGS} ${PIE_FLAGS} -Wall -Werror") SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed -pie") IF(BUILD_GCOV) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fprofile-arcs -ftest-coverage") ENDIF(BUILD_GCOV) SET(SRCS src/ua-api.c src/ua-common.c src/ua-event-handler.c src/ua-request-sender.c ) SET(HEADERS ua-api.h ) ADD_LIBRARY(${LIB_NAME} SHARED ${SRCS}) TARGET_LINK_LIBRARIES(${LIB_NAME} ${PKGS_LDFLAGS} -ldl) SET_TARGET_PROPERTIES(${LIB_NAME} PROPERTIES VERSION ${FULLVER} SOVERSION ${MAJORVER} CLEAN_DIRECT_OUTPUT 1 ) INSTALL(TARGETS ${LIB_NAME} DESTINATION ${LIB_DIR} COMPONENT RuntimeLibraries) FOREACH(hfile ${HEADERS}) INSTALL(FILES ${CMAKE_SOURCE_DIR}/include/${hfile} DESTINATION include/ua-manager) ENDFOREACH(hfile) SET(PC_NAME ${LIB_NAME}) SET(PC_REQUIRED ${pc_dependents}) SET(PC_LDFLAGS -l${LIB_NAME}) CONFIGURE_FILE( ${LIB_NAME}.pc.in ${CMAKE_CURRENT_SOURCE_DIR}/${LIB_NAME}.pc @ONLY ) INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/${LIB_NAME}.pc DESTINATION ${LIB_PKGCONFIG_DIR})