From a3dd080fda5a3581de0602b5887cda87dca2a915 Mon Sep 17 00:00:00 2001 From: hasufell 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(