CMAKE_MINIMUM_REQUIRED(VERSION 2.8) PROJECT(bundle C CXX) IF("${VERSION}" STREQUAL "") MESSAGE(FATAL_ERROR "VERSION is not defined") ENDIF() STRING(REGEX MATCH "^[0-9]+" VERSION_MAJOR ${VERSION}) IF("${VERSION_MAJOR}" STREQUAL "") MESSAGE(FATAL_ERROR "can't get VERSION_MAJOR") ENDIF() INCLUDE(FindPkgConfig) pkg_check_modules(pkgs REQUIRED glib-2.0 dlog capi-base-common json-glib-1.0 ) FOREACH(flag ${pkgs_CFLAGS}) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${flag}") ENDFOREACH(flag) SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden -flto -Wall -Werror -Winline") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS} -std=c++11") SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") SET(CMAKE_CXX_FLAGS_RELEASE "-O2") INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include) INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/src) AUX_SOURCE_DIRECTORY(src SOURCES) ADD_LIBRARY (${PROJECT_NAME} SHARED ${SOURCES}) set_target_properties(bundle PROPERTIES SOVERSION ${VERSION_MAJOR}) set_target_properties(bundle PROPERTIES VERSION "${VERSION}") SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES COMPILE_FLAGS "${EXTRA_CFLAGS} -fPIE") SET_TARGET_PROPERTIES(${PROJECT_NAME} PROPERTIES LINK_FLAGS "-pie") TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${pkgs_LDFLAGS}) ### Make pkgconfig file SET(PREFIX ${CMAKE_INSTALL_PREFIX}) CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/bundle.pc.in ${CMAKE_BINARY_DIR}/bundle.pc @ONLY) ### Install install(TARGETS bundle DESTINATION ${LIB_INSTALL_DIR}) install(DIRECTORY ${CMAKE_SOURCE_DIR}/include/ DESTINATION include/) install(FILES ${CMAKE_BINARY_DIR}/bundle.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig/) IF(NOT DEFINED MINIMUM_BUILD) ENABLE_TESTING() SET(BUNDLE_UNITTESTS bundle_unittests) ADD_TEST(NAME ${BUNDLE_UNITTESTS} COMMAND ${BUNDLE_UNITTESTS} WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/unit_tests) ADD_SUBDIRECTORY(unit_tests) ADD_DEPENDENCIES(bundle_unittests bundle) ENDIF(NOT DEFINED MINIMUM_BUILD)