-
Notifications
You must be signed in to change notification settings - Fork 36
/
Copy pathCMakeLists.txt
151 lines (129 loc) · 3.63 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
cmake_minimum_required(VERSION 3.12)
project(sndfile-tools
VERSION 1.5
DESCRIPTION "Collection of programs for operating on sound files"
HOMEPAGE_URL "http://libsndfile.github.io/libsamplerate/"
LANGUAGES C
)
include(CheckIncludeFile)
include(CheckLibraryExists)
include(CMakeDependentOption)
include(CPack)
include(GNUInstallDirs)
include(FeatureSummary)
include(CTest)
find_library(HAVE_LIBM m)
if(HAVE_LIBM)
check_library_exists(m floor "" HAVE_FLOOR_IN_LIBM)
if(HAVE_FLOOR_IN_LIBM)
list(APPEND CMAKE_REQUIRED_LIBRARIES m)
endif()
endif()
check_include_file(sys/wait.h HAVE_SYS_WAIT_H)
find_package(PkgConfig)
pkg_check_modules(SNDFILE REQUIRED IMPORTED_TARGET sndfile>=1.0.19)
pkg_check_modules(SAMPLERATE REQUIRED IMPORTED_TARGET samplerate>=0.1.5)
pkg_check_modules(FFTW3 REQUIRED IMPORTED_TARGET fftw3>=0.15.0)
pkg_check_modules(CAIRO REQUIRED IMPORTED_TARGET cairo>=1.4.0)
pkg_check_modules(JACK IMPORTED_TARGET jack>=0.100)
if(JACK_FOUND)
find_package(Threads)
endif()
configure_file(config.h.cmake config.h)
add_compile_definitions(HAVE_CONFIG_H)
include_directories(${PROJECT_BINARY_DIR})
cmake_dependent_option(ENABLE_JACK "Enable libjack" ON "ENABLE_JACK" OFF)
add_executable(sndfile-generate-chirp
src/generate-chirp.c
src/common.c
src/common.h
)
target_link_libraries(sndfile-generate-chirp PRIVATE PkgConfig::SNDFILE)
add_executable(sndfile-spectrogram
src/spectrogram.c
src/window.c
src/common.c
src/window.h
src/common.h
src/spectrum.c
src/spectrum.h
)
target_link_libraries(sndfile-spectrogram
PRIVATE
PkgConfig::SNDFILE
PkgConfig::FFTW3
PkgConfig::CAIRO
)
add_executable(sndfile-mix-to-mono
src/mix-to-mono.c
src/common.h
src/common.c
)
target_link_libraries(sndfile-mix-to-mono PRIVATE PkgConfig::SNDFILE)
add_executable(sndfile-waveform
src/waveform.c
src/common.c
src/common.h
)
target_link_libraries(sndfile-waveform
PRIVATE
PkgConfig::SNDFILE
PkgConfig::CAIRO
)
add_executable(sndfile-resample
src/resample.c
src/common.c
src/common.h
)
target_link_libraries(sndfile-resample
PRIVATE
PkgConfig::SNDFILE
PkgConfig::SAMPLERATE
)
if(ENABLE_JACK)
add_executable(sndfile-jackplay src/jackplay.c)
target_link_libraries(sndfile-jackplay
PRIVATE
PkgConfig::SNDFILE
PkgConfig::JACK
)
if(Threads_FOUND)
target_link_libraries(sndfile-jackplay PRIVATE Threads::Threads)
endif()
endif()
set(SNDFILE_TOOLS_TARGETS
sndfile-generate-chirp
sndfile-spectrogram
sndfile-mix-to-mono
sndfile-waveform
sndfile-resample
)
if(ENABLE_JACK)
list(APPEND SNDFILE_TOOLS_TARGETS sndfile-jackplay)
endif()
install(TARGETS ${SNDFILE_TOOLS_TARGETS}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
)
set(SNDFILE_TOOLS_MANS
man/sndfile-generate-chirp.1
man/sndfile-mix-to-mono.1
man/sndfile-resample.1
man/sndfile-spectrogram.1
man/sndfile-waveform.1
)
if(ENABLE_JACK)
list(APPEND SNDFILE_TOOLS_MANS man/sndfile-jackplay.1)
endif()
install(FILES ${SNDFILE_TOOLS_MANS} DESTINATION ${CMAKE_INSTALL_MANDIR}/man1)
add_feature_info(ENABLE_JACK ENABLE_JACK "build sndfile-jackplay (requires libjack library).")
feature_summary(WHAT ENABLED_FEATURES DISABLED_FEATURES)
if(BUILD_TESTING)
add_executable(kaiser_window_test tests/kaiser_window_test.c src/window.h src/window.c)
target_include_directories(kaiser_window_test PRIVATE ${PROJECT_SOURCE_DIR})
add_test(COMMAND kaiser_window_test NAME kaiser_window_test)
if(HAVE_SYS_WAIT_H)
add_executable(common_tests tests/common_tests.c src/common.c src/common.h)
target_include_directories(common_tests PRIVATE ${PROJECT_SOURCE_DIR})
add_test(COMMAND common_tests NAME common_tests)
endif()
endif()