From 0ed51357721b5e01108014606c0e7ad5c2599c52 Mon Sep 17 00:00:00 2001 From: Holger Nahrstaedt Date: Wed, 9 Mar 2016 13:32:39 +0100 Subject: [PATCH] cmake and travis support added --- .travis.yml | 42 ++++++++++++++++ CMakeLists.txt | 57 ++++++++++++++++++++++ src/CMakeLists.txt | 26 ++++++++++ unitTests/CMakeLists.txt | 3 ++ unitTests/wavelibBoostTests/CMakeLists.txt | 34 +++++++++++++ 5 files changed, 162 insertions(+) create mode 100644 .travis.yml create mode 100644 CMakeLists.txt create mode 100644 src/CMakeLists.txt create mode 100644 unitTests/CMakeLists.txt create mode 100644 unitTests/wavelibBoostTests/CMakeLists.txt diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 0000000..78636af --- /dev/null +++ b/.travis.yml @@ -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 diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..d1b5215 --- /dev/null +++ b/CMakeLists.txt @@ -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) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt new file mode 100644 index 0000000..58f085e --- /dev/null +++ b/src/CMakeLists.txt @@ -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}) + diff --git a/unitTests/CMakeLists.txt b/unitTests/CMakeLists.txt new file mode 100644 index 0000000..dbee49a --- /dev/null +++ b/unitTests/CMakeLists.txt @@ -0,0 +1,3 @@ + +add_subdirectory(wavelibBoostTests) + diff --git a/unitTests/wavelibBoostTests/CMakeLists.txt b/unitTests/wavelibBoostTests/CMakeLists.txt new file mode 100644 index 0000000..715e67e --- /dev/null +++ b/unitTests/wavelibBoostTests/CMakeLists.txt @@ -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")