CMAKE_MINIMUM_REQUIRED(VERSION 2.6) PROJECT(sensor-fusion CXX) INCLUDE(GNUInstallDirs) SET(AUTO_ROTATION "ON") SET(GRAVITY "ON") SET(LINEAR_ACCEL "ON") SET(RV "ON") SET(ORIENTATION "ON") SET(PEDOMETER "ON") INCLUDE_DIRECTORIES( ${CMAKE_SOURCE_DIR}/src/shared ${CMAKE_CURRENT_SOURCE_DIR} ) # Common Options SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O2 -omit-frame-pointer -std=gnu++0x") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fdata-sections -ffunction-sections") SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--gc-sections -Wl,--print-gc-sections") MESSAGE("FLAGS: ${CMAKE_CXX_FLAGS}") MESSAGE("FLAGS: ${CMAKE_EXE_LINKER_FLAGS}") # Internal Debugging Options #ADD_DEFINITIONS(-Wall -g -D_DEBUG) INCLUDE(FindPkgConfig) PKG_CHECK_MODULES(PLUGINS_PKGS REQUIRED dlog) FOREACH(flag ${PLUGINS_PKGS_CFLAGS}) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${flag}") ENDFOREACH(flag) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fPIC") FILE(GLOB SRCS *.cpp) IF("${AUTO_ROTATION}" STREQUAL "ON") FILE(GLOB_RECURSE SRCS ${SRCS} auto_rotation/*.cpp) ADD_DEFINITIONS(-DENABLE_AUTO_ROTATION) ENDIF() IF("${GRAVITY}" STREQUAL "ON") FILE(GLOB_RECURSE SRCS ${SRCS} gravity/*.cpp) ADD_DEFINITIONS(-DENABLE_GRAVITY) ENDIF() IF("${LINEAR_ACCEL}" STREQUAL "ON") FILE(GLOB_RECURSE SRCS ${SRCS} linear_accel/*.cpp) ADD_DEFINITIONS(-DENABLE_LINEAR_ACCEL) ENDIF() IF("${RV}" STREQUAL "ON") FILE(GLOB_RECURSE SRCS ${SRCS} rotation_vector/*.cpp) ADD_DEFINITIONS(-DENABLE_ROTATION_VECTOR) ENDIF() IF("${ORIENTATION}" STREQUAL "ON") FILE(GLOB_RECURSE SRCS ${SRCS} orientation/*.cpp) ADD_DEFINITIONS(-DENABLE_ORIENTATION) ENDIF() IF("${PEDOMETER}" STREQUAL "ON") FILE(GLOB_RECURSE SRCS ${SRCS} pedometer/*.cpp) ADD_DEFINITIONS(-DENABLE_PEDOMETER) ENDIF() MESSAGE("Sources: ${SRCS}") ADD_LIBRARY(${PROJECT_NAME} SHARED ${SRCS}) TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${PLUGINS_PKGS_LDFLAGS}) INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${CMAKE_INSTALL_LIBDIR}/sensor/fusion)