summaryrefslogtreecommitdiff
blob: aa322c1c7896f9eba449484b73a96ebfdc44a823 (plain)
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
From a3dd080fda5a3581de0602b5887cda87dca2a915 Mon Sep 17 00:00:00 2001
From: hasufell <hasufell@hasufell.de>
Date: Sat, 5 Sep 2015 14:07:22 +0200
Subject: [PATCH] Make building examples and tests optional

---
 CMakeLists.txt | 136 +++++++++++++++++++++++++++++++--------------------------
 1 file changed, 74 insertions(+), 62 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index c109af4..7fa8247 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -25,6 +25,8 @@ set(LIBSOUNDIO_VERSION "${LIBSOUNDIO_VERSION_MAJOR}.${LIBSOUNDIO_VERSION_MINOR}.
 message("Configuring libsoundio version ${LIBSOUNDIO_VERSION}")
 
 option(BUILD_STATIC_LIBS "Build static libraries" ON)
+option(BUILD_EXAMPLE_PROGRAMS "Build example programs" ON)
+option(BUILD_TESTS "Build tests" ON)
 option(ENABLE_JACK "Enable JACK backend" ON)
 option(ENABLE_PULSEAUDIO "Enable PulseAudio backend" ON)
 option(ENABLE_ALSA "Enable ALSA backend" ON)
@@ -254,80 +256,88 @@ install(FILES
 
 # Example Programs
 
-add_executable(sio_sine example/sio_sine.c)
-set_target_properties(sio_sine PROPERTIES
-    LINKER_LANGUAGE C
-    COMPILE_FLAGS ${EXAMPLE_CFLAGS})
-target_link_libraries(sio_sine libsoundio_shared)
-install(TARGETS sio_sine DESTINATION ${CMAKE_INSTALL_BINDIR})
+if(BUILD_EXAMPLE_PROGRAMS)
+    add_executable(sio_sine example/sio_sine.c)
+    set_target_properties(sio_sine PROPERTIES
+        LINKER_LANGUAGE C
+        COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+    target_link_libraries(sio_sine libsoundio_shared)
+    install(TARGETS sio_sine DESTINATION ${CMAKE_INSTALL_BINDIR})
 
-add_executable(sio_list_devices example/sio_list_devices.c)
-set_target_properties(sio_list_devices PROPERTIES
-    LINKER_LANGUAGE C
-    COMPILE_FLAGS ${EXAMPLE_CFLAGS})
-target_link_libraries(sio_list_devices libsoundio_shared)
-install(TARGETS sio_list_devices DESTINATION ${CMAKE_INSTALL_BINDIR})
+    add_executable(sio_list_devices example/sio_list_devices.c)
+    set_target_properties(sio_list_devices PROPERTIES
+        LINKER_LANGUAGE C
+        COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+    target_link_libraries(sio_list_devices libsoundio_shared)
+    install(TARGETS sio_list_devices DESTINATION ${CMAKE_INSTALL_BINDIR})
 
-add_executable(sio_microphone example/sio_microphone.c)
-set_target_properties(sio_microphone PROPERTIES
-    LINKER_LANGUAGE C
-    COMPILE_FLAGS ${EXAMPLE_CFLAGS})
-target_link_libraries(sio_microphone libsoundio_shared)
-install(TARGETS sio_microphone DESTINATION ${CMAKE_INSTALL_BINDIR})
+    add_executable(sio_microphone example/sio_microphone.c)
+    set_target_properties(sio_microphone PROPERTIES
+        LINKER_LANGUAGE C
+        COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+    target_link_libraries(sio_microphone libsoundio_shared)
+    install(TARGETS sio_microphone DESTINATION ${CMAKE_INSTALL_BINDIR})
 
-add_executable(sio_record example/sio_record.c)
-set_target_properties(sio_record PROPERTIES
-    LINKER_LANGUAGE C
-    COMPILE_FLAGS ${EXAMPLE_CFLAGS})
-target_link_libraries(sio_record libsoundio_shared)
-install(TARGETS sio_record DESTINATION ${CMAKE_INSTALL_BINDIR})
+    add_executable(sio_record example/sio_record.c)
+    set_target_properties(sio_record PROPERTIES
+        LINKER_LANGUAGE C
+        COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+    target_link_libraries(sio_record libsoundio_shared)
+    install(TARGETS sio_record DESTINATION ${CMAKE_INSTALL_BINDIR})
+endif()
 
+if(BUILD_TESTS)
+    include_directories(
+        "${CMAKE_SOURCE_DIR}/test"
+    )
 
-add_executable(unit_tests "${CMAKE_SOURCE_DIR}/test/unit_tests.cpp" ${LIBSOUNDIO_SOURCES})
-target_link_libraries(unit_tests LINK_PUBLIC ${LIBSOUNDIO_LIBS})
-set_target_properties(unit_tests PROPERTIES
-    LINKER_LANGUAGE C
-    COMPILE_FLAGS ${TEST_CFLAGS}
-    LINK_FLAGS ${TEST_LDFLAGS}
-)
+    add_executable(unit_tests "${CMAKE_SOURCE_DIR}/test/unit_tests.cpp" ${LIBSOUNDIO_SOURCES})
+    target_link_libraries(unit_tests LINK_PUBLIC ${LIBSOUNDIO_LIBS})
+    set_target_properties(unit_tests PROPERTIES
+        LINKER_LANGUAGE C
+        COMPILE_FLAGS ${TEST_CFLAGS}
+        LINK_FLAGS ${TEST_LDFLAGS}
+    )
 
-add_executable(latency "${CMAKE_SOURCE_DIR}/test/latency.cpp" ${LIBSOUNDIO_SOURCES})
-target_link_libraries(latency LINK_PUBLIC ${LIBSOUNDIO_LIBS})
-set_target_properties(latency PROPERTIES
-    LINKER_LANGUAGE C
-    COMPILE_FLAGS ${LIB_CFLAGS}
-)
+    add_executable(latency "${CMAKE_SOURCE_DIR}/test/latency.cpp" ${LIBSOUNDIO_SOURCES})
+    target_link_libraries(latency LINK_PUBLIC ${LIBSOUNDIO_LIBS})
+    set_target_properties(latency PROPERTIES
+        LINKER_LANGUAGE C
+        COMPILE_FLAGS ${LIB_CFLAGS}
+    )
 
-add_executable(underflow test/underflow.c)
-set_target_properties(underflow PROPERTIES
-    LINKER_LANGUAGE C
-    COMPILE_FLAGS ${EXAMPLE_CFLAGS})
-target_link_libraries(underflow libsoundio_shared)
+    add_executable(underflow test/underflow.c)
+    set_target_properties(underflow PROPERTIES
+        LINKER_LANGUAGE C
+        COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+    target_link_libraries(underflow libsoundio_shared)
 
-add_executable(backend_disconnect_recover test/backend_disconnect_recover.c)
-set_target_properties(backend_disconnect_recover PROPERTIES
-    LINKER_LANGUAGE C
-    COMPILE_FLAGS ${EXAMPLE_CFLAGS})
-target_link_libraries(backend_disconnect_recover libsoundio_shared)
+    add_executable(backend_disconnect_recover test/backend_disconnect_recover.c)
+    set_target_properties(backend_disconnect_recover PROPERTIES
+        LINKER_LANGUAGE C
+        COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+    target_link_libraries(backend_disconnect_recover libsoundio_shared)
 
-add_executable(overflow test/overflow.c)
-set_target_properties(overflow PROPERTIES
-    LINKER_LANGUAGE C
-    COMPILE_FLAGS ${EXAMPLE_CFLAGS})
-target_link_libraries(overflow libsoundio_shared)
+    add_executable(overflow test/overflow.c)
+    set_target_properties(overflow PROPERTIES
+        LINKER_LANGUAGE C
+        COMPILE_FLAGS ${EXAMPLE_CFLAGS})
+    target_link_libraries(overflow libsoundio_shared)
 
 
 
-add_custom_target(coverage
-    DEPENDS unit_tests
-    WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
-    COMMAND lcov --directory . --zerocounters --rc lcov_branch_coverage=1
-    COMMAND ./unit_tests
-    COMMAND lcov --directory . --capture --output-file coverage.info --rc lcov_branch_coverage=1
-    COMMAND lcov --remove coverage.info '/usr/*' --output-file coverage.info.cleaned --rc lcov_branch_coverage=1
-    COMMAND genhtml -o coverage coverage.info.cleaned --rc lcov_branch_coverage=1
-    COMMAND rm coverage.info coverage.info.cleaned
-)
+    add_custom_target(coverage
+        DEPENDS unit_tests
+        WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
+        COMMAND lcov --directory . --zerocounters --rc lcov_branch_coverage=1
+        COMMAND ./unit_tests
+        COMMAND lcov --directory . --capture --output-file coverage.info --rc lcov_branch_coverage=1
+        COMMAND lcov --remove coverage.info '/usr/*' --output-file coverage.info.cleaned --rc lcov_branch_coverage=1
+        COMMAND genhtml -o coverage coverage.info.cleaned --rc lcov_branch_coverage=1
+        COMMAND rm coverage.info coverage.info.cleaned
+    )
+endif()
+
 
 add_custom_target(doc
     WORKING_DIRECTORY ${CMAKE_BINARY_DIR}
@@ -342,6 +352,8 @@ message("\n"
     "* Install Directory            : ${CMAKE_INSTALL_PREFIX}\n"
     "* Build Type                   : ${CMAKE_BUILD_TYPE}\n"
     "* Build static libs            : ${BUILD_STATIC_LIBS}\n"
+    "* Build examples               : ${BUILD_EXAMPLE_PROGRAMS}\n"
+    "* Build tests                  : ${BUILD_TESTS}\n"
 )
 
 message(