You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

150 lines
5.3 KiB

PROJECT (trax)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.12)
GET_FILENAME_COMPONENT(PROJECT_ROOT . ABSOLUTE)
SET (CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR})
INCLUDE(GNUInstallDirs)
INCLUDE(CMakePackageConfigHelpers)
SET (BUILD_DEBUG FALSE CACHE BOOL "Build in debug mode")
IF (NOT BUILD_DATE)
STRING(TIMESTAMP BUILD_DATE "%Y-%m-%d")
ENDIF()
IF (NOT BUILD_VERSION)
FILE(READ "${CMAKE_CURRENT_SOURCE_DIR}/VERSION" BUILD_VERSION)
STRING(REPLACE "\n" "" BUILD_VERSION ${BUILD_VERSION})
ENDIF()
IF (WIN32 OR WIN64)
SET(LIBRARIES ws2_32)
SET(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_DATAROOTDIR}")
SET(CMAKE_DEBUG_POSTFIX "d")
ELSE ()
SET(LIBRARIES m)
SET(CONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/trax")
IF (CMAKE_COMPILER_IS_GNUCXX)
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pthread")
ENDIF ()
SET(CPACK_SET_DESTDIR 1)
ENDIF ()
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/include)
LINK_LIBRARIES(${LIBRARIES})
ADD_DEFINITIONS(-DTRAX_BUILD_VERSION="${BUILD_VERSION}" -DTRAX_BUILD_DATE="${BUILD_DATE}")
SET(TRAX_SOURCE
${CMAKE_CURRENT_SOURCE_DIR}/src/trax.c
${CMAKE_CURRENT_SOURCE_DIR}/src/region.c
${CMAKE_CURRENT_SOURCE_DIR}/src/strmap.c
${CMAKE_CURRENT_SOURCE_DIR}/src/message.c
${CMAKE_CURRENT_SOURCE_DIR}/src/base64.c
${CMAKE_CURRENT_SOURCE_DIR}/src/traxpp.cpp
${CMAKE_CURRENT_SOURCE_DIR}/src/debug.c)
SET(TRAX_HEADERS
${CMAKE_CURRENT_SOURCE_DIR}/include/trax.h
${CMAKE_CURRENT_SOURCE_DIR}/src/region.h
${CMAKE_CURRENT_SOURCE_DIR}/src/strmap.h
${CMAKE_CURRENT_SOURCE_DIR}/src/message.h
${CMAKE_CURRENT_SOURCE_DIR}/src/base64.h
${CMAKE_CURRENT_SOURCE_DIR}/src/buffer.h
${CMAKE_CURRENT_SOURCE_DIR}/src/debug.h)
IF (BUILD_DEBUG)
ADD_DEFINITIONS(-DTRAX_DEBUG=1)
ENDIF ()
ADD_LIBRARY(trax SHARED ${TRAX_SOURCE})
ADD_LIBRARY(traxstatic STATIC ${TRAX_SOURCE})
if(MSVC)
ADD_DEFINITIONS(/MP) # Build with multiple processes
ADD_DEFINITIONS(/wd4244 /wd4267 /wd4018 /wd4355 /wd4800 /wd4251 /wd4996 /wd4146 /wd4305) # Ignore some of the warnings
elseif(CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wno-long-long -pedantic")
IF (BUILD_DEBUG)
SET_TARGET_PROPERTIES(trax PROPERTIES COMPILE_FLAGS "-finstrument-functions")
SET_TARGET_PROPERTIES(traxstatic PROPERTIES COMPILE_FLAGS "-finstrument-functions")
ADD_SUBDIRECTORY(src/tests)
ENDIF ()
endif()
SET_TARGET_PROPERTIES(trax PROPERTIES VERSION ${BUILD_VERSION} SOVERSION 2)
TARGET_COMPILE_OPTIONS(traxstatic PUBLIC -DTRAX_STATIC_DEFINE)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/src)
SET_TARGET_PROPERTIES(traxstatic PROPERTIES POSITION_INDEPENDENT_CODE 1)
SET (BUILD_TESTS FALSE CACHE BOOL "Build with support for tests")
SET (BUILD_OPENCV FALSE CACHE BOOL "Build with OpenCV support")
SET (BUILD_CLIENT FALSE CACHE BOOL "Build with client support library and executable")
SET (BUILD_MATLAB FALSE CACHE BOOL "Build Matlab/Octave bindings")
SET (BUILD_PYTHON FALSE CACHE BOOL "Build Python wrapper")
IF (BUILD_OPENCV)
FIND_PACKAGE(OpenCV REQUIRED)
ADD_SUBDIRECTORY(support/opencv)
INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/support/opencv/include)
ENDIF (BUILD_OPENCV)
IF (BUILD_CLIENT)
ADD_SUBDIRECTORY(support/client)
ENDIF (BUILD_CLIENT)
IF (BUILD_MATLAB)
ADD_SUBDIRECTORY(support/matlab)
ENDIF (BUILD_MATLAB)
IF (WIN32 OR WIN64)
INSTALL(TARGETS trax traxstatic EXPORT core RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
ELSE ()
INSTALL(TARGETS trax EXPORT core LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR} ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR})
ENDIF()
INSTALL(FILES include/trax.h DESTINATION ${CMAKE_INSTALL_INCLUDEDIR})
INSTALL(EXPORT core DESTINATION ${CONFIG_INSTALL_DIR} FILE trax-component-core.cmake)
IF (BUILD_PYTHON)
ADD_SUBDIRECTORY(support/python)
ENDIF (BUILD_PYTHON)
IF (BUILD_TESTS)
INCLUDE( CTest )
ADD_SUBDIRECTORY(support/tests)
ENDIF (BUILD_TESTS)
# CMake config file
SET(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR})
SET(INCLUDE_INSTALL_DIR "${CMAKE_INSTALL_INCLUDEDIR}")
CONFIGURE_PACKAGE_CONFIG_FILE(trax-config.cmake.in
${PROJECT_BINARY_DIR}/trax-config.cmake
INSTALL_DESTINATION ${CONFIG_INSTALL_DIR}
PATH_VARS LIB_INSTALL_DIR INCLUDE_INSTALL_DIR)
WRITE_BASIC_PACKAGE_VERSION_FILE(
${PROJECT_BINARY_DIR}/trax-config-version.cmake
VERSION ${BUILD_VERSION}
COMPATIBILITY SameMajorVersion)
INSTALL(FILES
${CMAKE_CURRENT_BINARY_DIR}/trax-config.cmake
${CMAKE_CURRENT_BINARY_DIR}/trax-config-version.cmake
DESTINATION ${CONFIG_INSTALL_DIR})
SET(CPACK_PACKAGE_NAME "TraX")
SET(CPACK_GENERATOR "ZIP")
STRING(REPLACE "." ";" VERSION_LIST ${BUILD_VERSION})
LIST(GET VERSION_LIST 0 CPACK_PACKAGE_VERSION_MAJOR)
LIST(GET VERSION_LIST 1 CPACK_PACKAGE_VERSION_MINOR)
LIST(GET VERSION_LIST 2 CPACK_PACKAGE_VERSION_PATCH)
SET(CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
IF (BUILD_PLATFORM)
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}-${BUILD_PLATFORM}")
ELSE()
set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}.${CPACK_PACKAGE_VERSION_PATCH}")
ENDIF()
INCLUDE(CPack)