cmake_minimum_required(VERSION 3.11) project(ncpamixer) set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) set(CMAKE_INCLUDE_CURRENT_DIR ON) option(BUILD_MANPAGES "Build Man pages using pandoc" ON) set(CMAKE_EXPORT_COMPILE_COMMANDS TRUE) if(USE_WIDE) set(CURSES_NEED_WIDE TRUE) endif() include(FetchContent) include(GNUInstallDirs) if (BUILD_MANPAGES) include("${CMAKE_CURRENT_SOURCE_DIR}/cmake.deps/FetchPandocMan.cmake") include(PandocMan) add_pandoc_man("${CMAKE_CURRENT_SOURCE_DIR}/man/ncpamixer.1.md") endif() set(CURSES_NEED_NCURSES TRUE) find_package(Curses REQUIRED) # See https://gitlab.kitware.com/cmake/cmake/issues/18517 find_library(MENU_LIBRARY menu) find_package(PulseAudio REQUIRED) find_package(Threads REQUIRED) string(TIMESTAMP BUILD_DATE "%Y-%m-%d %H:%M") if(NOT CMAKE_BUILD_TYPE) set(CMAKE_BUILD_TYPE "empty") endif() string(TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE) execute_process(COMMAND "git" "describe" "--tags" "--dirty" WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}" OUTPUT_VARIABLE GIT_VERSION ERROR_QUIET OUTPUT_STRIP_TRAILING_WHITESPACE ) configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/version.cpp.in" "${CMAKE_CURRENT_BINARY_DIR}/version.cpp" ) message("-- Got version ${GIT_VERSION}") set(COMMON_SRC "pulsemixer.cpp" "pa_object.cpp" "pa_card.cpp" "pa_sink.cpp" "pa_input.cpp" "pa_source.cpp" "pa_source_output.cpp" "pa.cpp" "config.cpp" "ui/ui.cpp" "ui/tab.cpp" "ui/tabs/playback.cpp" "ui/tabs/recording.cpp" "ui/tabs/output.cpp" "ui/tabs/input.cpp" "ui/tabs/configuration.cpp" "ui/tabs/fallback.cpp" "${CMAKE_CURRENT_BINARY_DIR}/version.cpp" ) include_directories( "src/" ${CURSES_INCLUDE_DIR} ${PULSEAUDIO_INCLUDE_DIR} ) add_executable(${CMAKE_PROJECT_NAME} ${COMMON_SRC} ${UI_RESOURCES}) target_link_libraries(${CMAKE_PROJECT_NAME} ${CURSES_LIBRARIES} ${MENU_LIBRARY} ${PULSEAUDIO_LIBRARY} ${CMAKE_THREAD_LIBS_INIT} ) target_compile_options(${CMAKE_PROJECT_NAME} PUBLIC "-Werror") target_compile_options(${CMAKE_PROJECT_NAME} PUBLIC "-Wall") target_compile_options(${CMAKE_PROJECT_NAME} PUBLIC "-Wpedantic") install(TARGETS ${CMAKE_PROJECT_NAME} RUNTIME DESTINATION bin) # uninstall target if(NOT TARGET uninstall) configure_file( "${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" "${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake" IMMEDIATE @ONLY) add_custom_target(uninstall COMMAND ${CMAKE_COMMAND} -P ${CMAKE_CURRENT_BINARY_DIR}/cmake_uninstall.cmake) endif()