2021-01-06 16:30:28 +01:00
|
|
|
cmake_minimum_required(VERSION 3.1)
|
2021-06-04 19:55:59 +02:00
|
|
|
project(soundux VERSION 0.2.7 DESCRIPTION "A crossplatform soundboard")
|
2020-10-20 14:54:12 +02:00
|
|
|
|
2021-06-04 19:55:59 +02:00
|
|
|
set(FULL_VERSION_STRING "0.2.7")
|
2021-04-03 02:38:35 +02:00
|
|
|
option(EMBED_PATH "The path used for embedding" "OFF")
|
2021-03-13 15:15:01 +01:00
|
|
|
option(USE_FLATPAK "Allows the program to run under flatpak" OFF)
|
2021-03-13 14:48:11 +01:00
|
|
|
|
2021-01-06 16:30:28 +01:00
|
|
|
file(GLOB src
|
|
|
|
"src/*.cpp"
|
|
|
|
"src/*/*.cpp"
|
2021-02-15 21:09:16 +01:00
|
|
|
"src/*/*/*.cpp"
|
|
|
|
"src/*/*/*/*.cpp"
|
2021-03-01 21:47:44 +01:00
|
|
|
"src/*/*/*/*/*.cpp"
|
2021-01-06 16:30:28 +01:00
|
|
|
)
|
2020-12-18 01:06:39 +01:00
|
|
|
|
2021-02-27 19:15:10 +01:00
|
|
|
if (WIN32)
|
2021-03-04 10:35:11 +01:00
|
|
|
add_executable(soundux WIN32 ${src} "assets/icon.rc")
|
2021-03-20 11:21:54 +01:00
|
|
|
|
|
|
|
set(CompilerFlags
|
|
|
|
CMAKE_CXX_FLAGS
|
|
|
|
CMAKE_CXX_FLAGS_DEBUG
|
|
|
|
CMAKE_CXX_FLAGS_RELEASE
|
|
|
|
CMAKE_CXX_FLAGS_MINSIZEREL
|
|
|
|
CMAKE_CXX_FLAGS_RELWITHDEBINFO
|
|
|
|
CMAKE_C_FLAGS
|
|
|
|
CMAKE_C_FLAGS_DEBUG
|
|
|
|
CMAKE_C_FLAGS_RELEASE
|
|
|
|
CMAKE_C_FLAGS_MINSIZEREL
|
|
|
|
CMAKE_C_FLAGS_RELWITHDEBINFO
|
|
|
|
)
|
|
|
|
|
|
|
|
foreach(CompilerFlag ${CompilerFlags})
|
|
|
|
string(REPLACE "/MD" "/MT" ${CompilerFlag} "${${CompilerFlag}}")
|
|
|
|
set(${CompilerFlag} "${${CompilerFlag}}" CACHE STRING "msvc compiler flags" FORCE)
|
|
|
|
message("MSVC flags: ${CompilerFlag}:${${CompilerFlag}}")
|
|
|
|
endforeach()
|
|
|
|
|
2021-03-19 16:20:15 +01:00
|
|
|
target_compile_definitions(soundux PRIVATE WIN32_LEAN_AND_MEAN=1)
|
2021-03-04 10:50:10 +01:00
|
|
|
target_compile_options(soundux PRIVATE /W4)
|
2021-02-27 19:15:10 +01:00
|
|
|
else()
|
2021-03-04 10:35:11 +01:00
|
|
|
add_executable(soundux ${src})
|
2022-04-04 23:40:53 +02:00
|
|
|
|
|
|
|
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
|
|
|
message(STATUS "Enabling warning and error flags for debug build")
|
|
|
|
target_compile_options(soundux PRIVATE -Wall -Werror -Wextra -pedantic -Wno-unused-lambda-capture -Wno-gnu)
|
|
|
|
endif()
|
2021-02-27 19:15:10 +01:00
|
|
|
endif()
|
2021-02-15 21:09:16 +01:00
|
|
|
|
2021-03-24 18:55:16 +01:00
|
|
|
target_compile_definitions(soundux PRIVATE SOUNDUX_VERSION="${FULL_VERSION_STRING}" WNCK_I_KNOW_THIS_IS_UNSTABLE=1)
|
2021-04-13 20:31:51 +02:00
|
|
|
target_include_directories(soundux SYSTEM PRIVATE "src")
|
2021-03-04 10:50:10 +01:00
|
|
|
target_include_directories(soundux SYSTEM PRIVATE "lib/miniaudio")
|
2021-05-14 22:13:54 +02:00
|
|
|
target_include_directories(soundux SYSTEM PRIVATE "lib/semver/include")
|
2021-03-04 10:50:10 +01:00
|
|
|
target_include_directories(soundux SYSTEM PRIVATE "lib/fancypp/include")
|
|
|
|
target_include_directories(soundux SYSTEM PRIVATE "lib/json/single_include")
|
2020-10-20 15:25:12 +02:00
|
|
|
|
2021-02-15 21:09:16 +01:00
|
|
|
set(THREADS_PREFER_PTHREAD_FLAG ON)
|
|
|
|
find_package(Threads REQUIRED)
|
|
|
|
target_link_libraries(soundux PRIVATE Threads::Threads ${CMAKE_DL_LIBS})
|
|
|
|
|
|
|
|
if (UNIX)
|
2021-05-13 13:58:55 +02:00
|
|
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
|
|
|
|
find_package(PipeWire REQUIRED)
|
|
|
|
|
2021-05-04 19:31:46 +02:00
|
|
|
find_package(PulseAudio)
|
2021-03-04 10:35:11 +01:00
|
|
|
find_package(X11 REQUIRED)
|
2021-05-13 13:58:55 +02:00
|
|
|
target_include_directories(soundux SYSTEM PRIVATE ${X11_INCLUDE_DIR} ${PULSEAUDIO_INCLUDE_DIR} ${PipeWire_INCLUDE_DIRS} ${Spa_INCLUDE_DIRS})
|
2021-05-04 19:31:46 +02:00
|
|
|
|
2021-03-17 21:15:00 +01:00
|
|
|
find_package(PkgConfig REQUIRED)
|
2021-03-17 21:24:46 +01:00
|
|
|
pkg_check_modules(WNCK libwnck-3.0)
|
2021-03-31 16:44:23 +02:00
|
|
|
target_link_libraries(soundux PRIVATE ${X11_LIBRARIES} ${X11_Xinput_LIB} ${X11_XTest_LIB})
|
2021-02-16 00:07:10 +01:00
|
|
|
endif()
|
2021-02-24 18:27:00 +01:00
|
|
|
if (WIN32)
|
2021-03-04 10:35:11 +01:00
|
|
|
target_compile_definitions(soundux PRIVATE _CRT_SECURE_NO_WARNINGS=1 _SILENCE_ALL_CXX17_DEPRECATION_WARNINGS=1 _UNICODE=1)
|
2021-02-24 18:27:00 +01:00
|
|
|
endif()
|
2021-02-15 21:09:16 +01:00
|
|
|
|
2021-03-06 01:20:05 +01:00
|
|
|
add_subdirectory(src/ui/impl/webview/lib/webviewpp EXCLUDE_FROM_ALL)
|
2021-03-01 22:50:17 +01:00
|
|
|
add_subdirectory(lib/nativefiledialog-extended EXCLUDE_FROM_ALL)
|
2021-03-18 20:46:33 +01:00
|
|
|
add_subdirectory(lib/tiny-process-library EXCLUDE_FROM_ALL)
|
2021-05-24 02:26:48 +02:00
|
|
|
add_subdirectory(lib/backward-cpp EXCLUDE_FROM_ALL)
|
2021-03-29 18:17:33 +02:00
|
|
|
add_subdirectory(lib/traypp EXCLUDE_FROM_ALL)
|
2021-06-13 01:42:36 +02:00
|
|
|
add_subdirectory(lib/libremidi)
|
2021-05-29 02:43:56 +02:00
|
|
|
add_subdirectory(lib/guardpp)
|
2021-05-21 20:23:24 +02:00
|
|
|
add_subdirectory(lib/lockpp)
|
2021-03-19 16:13:56 +01:00
|
|
|
|
2021-05-24 02:26:48 +02:00
|
|
|
add_backward(soundux)
|
|
|
|
|
2021-04-07 21:53:29 +02:00
|
|
|
if (WIN32)
|
|
|
|
set(OPENSSL_USE_STATIC_LIBS TRUE)
|
|
|
|
set(OPENSSL_MSVC_STATIC_RT TRUE)
|
|
|
|
set(BROTLI_USE_STATIC_LIBS TRUE)
|
|
|
|
endif()
|
|
|
|
|
2021-03-19 17:18:56 +01:00
|
|
|
set(HTTPLIB_REQUIRE_OPENSSL ON)
|
2021-03-19 16:13:56 +01:00
|
|
|
add_subdirectory(lib/cpp-httplib EXCLUDE_FROM_ALL)
|
2021-05-18 12:51:19 +02:00
|
|
|
target_include_directories(soundux SYSTEM PRIVATE "lib/cpp-httplib")
|
|
|
|
|
2022-01-08 13:57:35 +01:00
|
|
|
target_link_libraries(soundux PRIVATE webview nfd tiny-process-library tray guardpp httplib lockpp libremidi)
|
2021-02-15 21:09:16 +01:00
|
|
|
|
2021-04-03 02:38:35 +02:00
|
|
|
if (${EMBED_PATH} STREQUAL "OFF")
|
2021-04-03 02:30:52 +02:00
|
|
|
message("Web-content will not be embedded")
|
|
|
|
|
|
|
|
# [[ Copy required files ]]
|
|
|
|
# > Copies frontend files
|
|
|
|
if (MSVC)
|
|
|
|
file(COPY "${CMAKE_SOURCE_DIR}/src/ui/impl/webview/lib/soundux-ui/"
|
|
|
|
DESTINATION "${CMAKE_SOURCE_DIR}/build/Release/dist")
|
|
|
|
else()
|
|
|
|
file(COPY "${CMAKE_SOURCE_DIR}/src/ui/impl/webview/lib/soundux-ui/"
|
|
|
|
DESTINATION "${CMAKE_SOURCE_DIR}/build/dist")
|
|
|
|
endif()
|
2021-04-03 02:03:54 +02:00
|
|
|
else()
|
2021-04-03 02:30:52 +02:00
|
|
|
message("Using embed path " ${EMBED_PATH})
|
2021-04-03 02:48:38 +02:00
|
|
|
target_include_directories(webview PUBLIC ${EMBED_PATH})
|
2021-04-03 02:30:52 +02:00
|
|
|
target_compile_definitions(soundux PRIVATE IS_EMBEDDED=1)
|
|
|
|
endif()
|
|
|
|
|
2021-01-06 16:30:28 +01:00
|
|
|
target_compile_features(soundux PRIVATE cxx_std_17)
|
2021-05-18 12:09:40 +02:00
|
|
|
set_target_properties(soundux PROPERTIES
|
2021-05-18 12:51:19 +02:00
|
|
|
CXX_STANDARD 17
|
|
|
|
CXX_EXTENSIONS OFF
|
|
|
|
CXX_STANDARD_REQUIRED ON)
|
2021-01-06 16:30:28 +01:00
|
|
|
|
|
|
|
set_target_properties(soundux PROPERTIES VERSION ${PROJECT_VERSION})
|
2021-02-15 21:09:16 +01:00
|
|
|
set_target_properties(soundux PROPERTIES PROJECT_NAME ${PROJECT_NAME})
|
2021-03-01 23:02:09 +01:00
|
|
|
|
2021-05-17 13:54:05 +02:00
|
|
|
|
2021-03-13 15:15:01 +01:00
|
|
|
if(USE_FLATPAK)
|
2021-05-17 13:54:05 +02:00
|
|
|
target_compile_definitions(soundux PRIVATE USE_FLATPAK)
|
|
|
|
target_link_libraries(soundux PRIVATE ${PULSEAUDIO_LIBRARY})
|
|
|
|
|
|
|
|
install(TARGETS soundux DESTINATION bin)
|
|
|
|
if (${EMBED_PATH} STREQUAL "OFF")
|
|
|
|
install(DIRECTORY "${CMAKE_SOURCE_DIR}/build/dist" DESTINATION bin)
|
|
|
|
endif()
|
2021-03-13 14:48:11 +01:00
|
|
|
else()
|
|
|
|
set(CMAKE_INSTALL_PREFIX "/opt/soundux" CACHE PATH "Install path prefix, prepended onto install directories." FORCE)
|
|
|
|
install(TARGETS soundux DESTINATION .)
|
2021-04-03 11:59:04 +02:00
|
|
|
if (${EMBED_PATH} STREQUAL "OFF")
|
2021-04-03 02:30:52 +02:00
|
|
|
install(DIRECTORY "${CMAKE_SOURCE_DIR}/build/dist" DESTINATION .)
|
|
|
|
endif()
|
2021-03-13 15:15:01 +01:00
|
|
|
install(FILES "${CMAKE_SOURCE_DIR}/deployment/soundux.desktop" DESTINATION /usr/share/applications)
|
2021-03-19 10:50:43 +01:00
|
|
|
install(FILES "${CMAKE_SOURCE_DIR}/deployment/appstream/io.github.Soundux.metainfo.xml" DESTINATION /usr/share/metainfo)
|
2021-03-13 15:27:01 +01:00
|
|
|
install(FILES "${CMAKE_SOURCE_DIR}/assets/soundux.png" DESTINATION /usr/share/pixmaps)
|
2021-03-13 15:15:01 +01:00
|
|
|
endif()
|