cmake_minimum_required(VERSION 2.6)
project(simpl)

set(source_files src/simpl/base.cpp
                 src/simpl/peak_detection.cpp
                 src/simpl/partial_tracking.cpp
                 src/simpl/synthesis.cpp
                 src/simpl/residual.cpp
)

FILE(GLOB sms_src src/sms/*.c)
FILE(GLOB sndobj_src src/sndobj/*.cpp)
FILE(GLOB loris_src src/loris/*.C)
LIST(APPEND source_files ${source_files}
                         ${sndobj_src}
                         ${sms_src}
                         ${loris_src})

set(include_files src/simpl/simpl.h
                  src/simpl/base.h
                  src/simpl/peak_detection.h
                  src/simpl/partial_tracking.h
                  src/simpl/synthesis.h
                  src/simpl/residual.h
                  src/sms/sms.h
                  src/sndobj/SndObj.h
                  src/loris/Analyzer.h
)

add_definitions(-DHAVE_FFTW3_H)

set(libs m fftw3 gsl gslcblas)

include_directories(src/simpl src/sms src/sndobj src/sndobj/rfftw src/loris)

add_library(simpl SHARED ${source_files})
target_link_libraries(simpl ${libs})

install(TARGETS simpl LIBRARY DESTINATION lib)
install(FILES ${include_files} DESTINATION include/simpl)

# tests
set(test_base_src ${source_files} tests/test_base.cpp)
set(test_peak_detection_src ${source_files} tests/test_peak_detection.cpp)
set(test_partial_tracking_src ${source_files} tests/test_partial_tracking.cpp)
set(test_synthesis_src ${source_files} tests/test_synthesis.cpp)

LIST(APPEND libs cppunit sndfile)

add_executable(test_base ${test_base_src})
add_executable(test_peak_detection ${test_peak_detection_src})
add_executable(test_partial_tracking ${test_partial_tracking_src})
add_executable(test_synthesis ${test_synthesis_src})

target_link_libraries(test_base ${libs})
target_link_libraries(test_peak_detection ${libs})
target_link_libraries(test_partial_tracking ${libs})
target_link_libraries(test_synthesis ${libs})