cmake and travis support added

This commit is contained in:
Holger Nahrstaedt 2016-03-09 13:32:39 +01:00
parent f7786d4dd5
commit 0ed5135772
5 changed files with 162 additions and 0 deletions

42
.travis.yml Normal file
View File

@ -0,0 +1,42 @@
sudo: false
addons:
apt:
sources:
- kalakris-cmake
- kubuntu-backports
- boost-latest
packages:
- cmake
- libboost1.55-all-dev
language: cpp
os:
- linux
- osx
compiler:
- gcc
- clang
env:
- BUILD_CONFIG=Release
- BUILD_CONFIG=Debug
matrix:
allow_failures:
- compiler: clang
before_install:
install:
before_script:
- mkdir build.ci
- cd build.ci
- cmake .. -DBUILD_UT=ON -DCMAKE_BUILD_TYPE=$BUILD_CONFIG
script:
- cmake --build .
- ctest -VV

57
CMakeLists.txt Normal file
View File

@ -0,0 +1,57 @@
cmake_minimum_required(VERSION 3.0)
project(wavelib VERSION 1.0)
# src root path
set(WAVELIB_SRC_ROOT ${PROJECT_SOURCE_DIR} CACHE PATH "Wavelib source root")
# binary output by default
set(COMMON_BIN_PATH ${CMAKE_BINARY_DIR}/Bin)
set(LIBRARY_OUTPUT_PATH ${COMMON_BIN_PATH}/${CMAKE_BUILD_TYPE})
set(EXECUTABLE_OUTPUT_PATH ${COMMON_BIN_PATH}/${CMAKE_BUILD_TYPE})
# set where to find additional cmake modules if any
set(CMAKE_MODULE_PATH ${WAVELIB_SRC_ROOT}/cmake ${CMAKE_MODULE_PATH})
option(BUILD_UT "Enable Unit test" ON)
# make include globaly visible
set(PROJECT_WIDE_INCLUDE ${WAVELIB_SRC_ROOT}/include)
include_directories(${PROJECT_WIDE_INCLUDE})
# TODO: need to handle this with option
set(Boost_USE_MULTITHREADED ON)
#set(Boost_USE_STATIC_LIBS ON)
set(Boost_USE_STATIC_RUNTIME OFF)
find_package(Boost COMPONENTS unit_test_framework REQUIRED)
if (Boost_FOUND)
# disable autolinking feature
add_definitions(-DBOOST_ALL_NO_LIB)
include_directories(${Boost_INCLUDE_DIRS})
else()
message(FATAL_ERROR "Boost >= 1.35 required for testing wavelib")
endif()
if(BUILD_UT)
include(CTest)
enable_testing()
add_subdirectory(unitTests)
add_custom_target(CopyDataFiles
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/test/signal.txt ${COMMON_BIN_PATH}/Debug
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/test/signal.txt ${COMMON_BIN_PATH}/Release
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/test/x1.txt ${COMMON_BIN_PATH}/Debug
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/test/x1.txt ${COMMON_BIN_PATH}/Release
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/test/x2.txt ${COMMON_BIN_PATH}/Debug
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/test/x2.txt ${COMMON_BIN_PATH}/Release
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/test/s1.txt ${COMMON_BIN_PATH}/Debug
COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/test/s1.txt ${COMMON_BIN_PATH}/Release
)
add_dependencies(wavelibLibTests CopyDataFiles)
endif()
add_subdirectory(src)

26
src/CMakeLists.txt Normal file
View File

@ -0,0 +1,26 @@
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
set(SOURCE_FILES conv.c
hsfft.c
real.c
wavefilt.c
wavelib.c
wtmath.c
)
set(HEADER_FILES conv.h
hsfft.h
real.h
wavefilt.h
wavelib.h
wtmath.h
)
add_library(wavelib STATIC ${SOURCE_FILES} ${HEADER_FILES})
set_property(TARGET wavelib PROPERTY FOLDER "lib")
target_include_directories(wavelib PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})

3
unitTests/CMakeLists.txt Normal file
View File

@ -0,0 +1,3 @@
add_subdirectory(wavelibBoostTests)

View File

@ -0,0 +1,34 @@
enable_testing()
set(SOURCE_FILES
tst_dwt.cpp
BoostTest.cpp
)
set(HEADER_FILES
BoostTest.h
)
add_executable(wavelibLibTests ${SOURCE_FILES} ${HEADER_FILES})
add_test(NAME wavelibTests COMMAND wavelibTests)
include_directories(${BOOST_DIR})
add_dependencies(wavelibLibTests wavelib)
target_link_libraries(wavelibLibTests ${Boost_LIBRARIES}
wavelib)
target_include_directories(wavelibLibTests PUBLIC
${CMAKE_SOURCE_DIR}/../../header
${Boost_INCLUDE_DIR}
)
target_compile_definitions(wavelibLibTests PUBLIC BOOST_ALL_NO_LIB UNIT_TEST)
file( MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/Debug")
file( MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/Release")