1
# -*- mode: cmake; coding: utf-8-dos -*-
2
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.2)
3
IF(COMMAND CMAKE_POLICY)
4
CMAKE_POLICY(SET CMP0003 NEW)
5
ENDIF(COMMAND CMAKE_POLICY)
10
OPTION(USE_COVERAGE "use gcov" FALSE)
11
OPTION(USE_BOOST_TEST "use boost::test" FALSE)
12
OPTION(USE_BOOST_STATIC_LINK "link statically against boost" TRUE)
15
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
17
# Set a default build type for single-configuration
18
# CMake generators if no build type is set.
19
IF(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
20
SET(CMAKE_BUILD_TYPE Debug)
21
ENDIF(NOT CMAKE_CONFIGURATION_TYPES AND NOT CMAKE_BUILD_TYPE)
22
MESSAGE(STATUS "CMAKE_BUILD_TYPE=${CMAKE_BUILD_TYPE}")
23
MESSAGE(STATUS "CMAKE_CONFIGURATION_TYPES=${CMAKE_CONFIGURATION_TYPES}")
25
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -DNDEBUG=1")
26
set(CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE} -DNDEBUG=1")
30
SET(DEP_ROOT "DEP_ROOT-NOTFOUND" CACHE PATH "dependency root path")
32
SET(LIBUSB_ROOT "${CMAKE_SOURCE_DIR}\\..\\3rd_party\\libusb-win32-bin-1.2.6.0\\")
33
SET(BOOST_ROOT "${DEP_ROOT}\\boost_1_43_0" CACHE PATH "Boost PATH" )
35
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /MP")
36
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MD")
37
ADD_DEFINITIONS(-D_CRT_SECURE_NO_WARNINGS)
40
IF(CMAKE_COMPILER_IS_GNUCXX)
41
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fpermissive -fms-extensions -std=c++0x -Wall")
42
SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} -O2 -g")
43
SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -O2")
44
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -O0 -g3 -ggdb3")
45
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -pedantic -Wextra -Wall")
46
set(CMAKE_C_FLAGS_DEBUG "${CMAKE_C_FLAGS_DEBUG} -g3 -ggdb3")
49
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fprofile-arcs -ftest-coverage")
50
set(CMAKE_EXE_LINKER_FLAGS
51
"${CMAKE_EXE_LINKER_FLAGS} -fprofile-arcs -ftest-coverage")
57
MESSAGE(FATAL_ERROR "Could not find LIBUSB")
60
IF(USE_BOOST_STATIC_LINK)
61
set(Boost_USE_STATIC_LIBS ON)
63
set(Boost_USE_STATIC_LIBS OFF)
65
set(Boost_USE_MULTITHREADED ON)
66
set(Boost_USE_STATIC_RUNTIME OFF)
67
FIND_PACKAGE(Boost 1.41.0 COMPONENTS thread unit_test_framework program_options system filesystem date_time atomic REQUIRED)
69
MESSAGE(FATAL_ERROR "Boost not found!")
73
INCLUDE_DIRECTORIES(.)
74
INCLUDE_DIRECTORIES(${Boost_INCLUDE_DIR})
75
INCLUDE_DIRECTORIES(${LIBUSB_INCLUDE_DIRS})
77
LINK_DIRECTORIES(${Boost_LIBRARY_DIRS})
80
ADD_DEFINITIONS(-D_CRT_NONSTDC_NO_WARNINGS)
81
#set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NODEFAULTLIB:libboost_date_time-vc90-mt-s-1_43.lib /NODEFAULTLIB:libboost_thread-vc90-mt-s-1_43.lib /NODEFAULTLIB:libboost_program_options-vc90-mt-s-1_43.lib /NODEFAULTLIB:libboost_filesystem-vc90-mt-s-1_43.lib /NODEFAULTLIB:libboost_system-vc90-mt-s-1_43.lib")
84
FILE(READ "${PROJECT_SOURCE_DIR}/VERSION" ANTPM_VERSION)
85
MESSAGE(STATUS "ANTPM_VERSION=\\\"${ANTPM_VERSION}\\\"")
86
ADD_DEFINITIONS(-DANTPM_VERSION=${ANTPM_VERSION})
89
antdefs.hpp antdefs.cpp
90
SmartPtrFwd.hpp w_inttypes.h w_stdint.h stdintfwd.hpp
92
AntMessage.hpp AntMessage.cpp
93
AntChannel.hpp AntChannel.cpp
94
AntMessenger.hpp AntMessenger.cpp
95
SerialUsb.hpp SerialUsb.cpp
96
AntFr310XT.hpp AntFr310XT.cpp
97
AntFr405.hpp AntFr405.cpp
103
GarminConvert.hpp GarminConvert.cpp
104
GarminPacketIntf.hpp GarminPacketIntf.cpp
106
DeviceSettings.hpp DeviceSettings.cpp
116
SerialTty.hpp SerialTty.cpp
118
SET(Boost_THREAD_LIBRARY "${Boost_THREAD_LIBRARY};pthread")
125
TARGET_LINK_LIBRARIES(antpm
126
${Boost_DATE_TIME_LIBRARY}
128
${Boost_THREAD_LIBRARY}
129
${Boost_SYSTEM_LIBRARY}
130
${Boost_FILESYSTEM_LIBRARY}
134
ADD_EXECUTABLE(antpm-usbmon2ant
137
TARGET_LINK_LIBRARIES(antpm-usbmon2ant
139
${Boost_PROGRAM_OPTIONS_LIBRARY}
141
INSTALL(TARGETS antpm-usbmon2ant RUNTIME DESTINATION bin)
144
ADD_EXECUTABLE(antpm-downloader
147
TARGET_LINK_LIBRARIES(antpm-downloader
149
${Boost_PROGRAM_OPTIONS_LIBRARY}
151
INSTALL(TARGETS antpm-downloader RUNTIME DESTINATION bin)
154
ADD_EXECUTABLE(antpm-fit2gpx
157
TARGET_LINK_LIBRARIES(antpm-fit2gpx
159
${Boost_PROGRAM_OPTIONS_LIBRARY}
161
INSTALL(TARGETS antpm-fit2gpx RUNTIME DESTINATION bin)
163
add_custom_target(dist COMMAND ${CMAKE_MAKE_PROGRAM} package_source)
165
ADD_SUBDIRECTORY(gant)
167
# set(CPACK_PACKAGE_VERSION_MAJOR "1")
168
# set(CPACK_PACKAGE_VERSION_MINOR "0")
169
# set(CPACK_SOURCE_GENERATOR "TGZ")
170
# set(CPACK_SOURCE_PACKAGE_FILE_NAME "${CMAKE_PROJECT_NAME}-${CPACK_PACKAGE_VERSION_MAJOR}.${CPACK_PACKAGE_VERSION_MINOR}-src")
171
# MESSAGE(STATUS "${CPACK_SOURCE_IGNORE_FILES}")
172
# set(CPACK_SOURCE_IGNORE_FILES
173
# "/build/;/.bzr/;~$;${CPACK_SOURCE_IGNORE_FILES};/CMakeLists.txt.user;/gpsbabel/;/gtest-1.6.0/")
174
# set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Kristof Ralovich <tade60@freemail.hu>")
175
# set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "ANT+minus")
176
# set(CPACK_PACKAGE_DESCRIPTION "Userspace implementation of a wire protocol similar to the ANT/ANT+ protocols. The goal is to be able to communicate with the Forerunner 310XT watch, in order to retrieve sports tracks. Communication with other watches might work, please report your experiences to improve the software.")
177
# set(CPACK_DEBIAN_PACKAGE_DEPENDS "libstdc++6 (>=4.6.0)")
178
# #set(CPACK_DEBIAN_PACKAGE_DEPENDS "libstdc++6 (>=4.6.0), cmake, debhelper (>= 7), libboost-filesystem, libboost-system")
179
# #set(CPACK_DEBIAN_PACKAGE_CONTROL_EXTRA This variable allow advanced user to add custom script to the control.tar.gz (inside the .deb archive) ${CMAKE_CURRENT_SOURCE_DIR}/postinst
180
# #set(CPACK_DEBIAN_PACKAGE_SECTION Package section (see http://packages.debian.org/stable/) Network
181
# #set(CPACK_DEBIAN_PACKAGE_VERSION Package version ${CPACK_PACKAGE_VERSION}+lenny1
186
if(${VALGRIND_PREFIX})
187
message(STATUS "Valgrind Prefix: ${VALGRIND_PREFIX}")
189
find_program(VALGRIND_PROGRAM NAMES valgrind PATH /usr/bin /usr/local/bin ${VALGRIND_PREFIX}/bin)
191
message(STATUS "Found Valgrind: ${VALGRIND_PROGRAM}")
192
SET(MEMORYCHECK_COMMAND:FILEPATH=${VALGRIND_PROGRAM})
193
# You can add additional options by specifying MEMORYCHECK_COMMAND_OPTIONS and MEMORYCHECK_SUPPRESSIONS_FILE.
197
ADD_SUBDIRECTORY(tests)