Soundux/CMakeLists.txt

104 lines
4.1 KiB
CMake
Raw Normal View History

2021-01-06 16:30:28 +01:00
cmake_minimum_required(VERSION 3.1)
2021-03-19 16:13:56 +01:00
project(soundux VERSION 0.2.2 DESCRIPTION "")
2020-10-20 14:54:12 +02:00
option(IS_CI_BUILD "Is used for windows ci build" 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
)
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-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})
2021-03-19 16:13:56 +01:00
target_compile_options(soundux PRIVATE -Wall -Wextra -Werror -pedantic -Wno-unused-lambda-capture)
2021-02-27 19:15:10 +01:00
endif()
2021-02-15 21:09:16 +01:00
2021-03-19 17:18:56 +01:00
target_compile_definitions(soundux PRIVATE SOUNDUX_VERSION="${PROJECT_VERSION}" WNCK_I_KNOW_THIS_IS_UNSTABLE=1)
2021-03-04 10:50:10 +01:00
target_include_directories(soundux SYSTEM PRIVATE "lib/miniaudio")
target_include_directories(soundux SYSTEM PRIVATE "lib/fancypp/include")
target_include_directories(soundux SYSTEM PRIVATE "lib/json/single_include")
target_include_directories(soundux SYSTEM PRIVATE "lib/InstanceGuard/Source")
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-03-04 10:35:11 +01:00
find_package(X11 REQUIRED)
include_directories(${X11_INCLUDE_DIR})
find_package(PkgConfig REQUIRED)
2021-03-17 21:24:46 +01:00
pkg_check_modules(WNCK libwnck-3.0)
2021-03-17 21:29:16 +01:00
target_link_libraries(soundux PRIVATE ${X11_LIBRARIES} ${X11_Xinput_LIB})
2021-03-17 21:24:46 +01:00
if (${WNCK_FOUND})
add_definitions(${WNCK_CFLAGS})
2021-03-17 21:29:16 +01:00
target_link_libraries(soundux PRIVATE ${WNCK_LIBRARIES})
target_include_directories(soundux PRIVATE ${WNCK_LIBRARY_DIRS})
2021-03-17 21:24:46 +01:00
target_compile_definitions(soundux PRIVATE USE_WNCK=1)
endif()
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)
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)
add_subdirectory(lib/InstanceGuard/Source EXCLUDE_FROM_ALL)
2021-03-19 16:13:56 +01:00
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)
target_link_libraries(soundux PUBLIC webview nfd InstanceGuard tiny-process-library httplib)
2021-02-15 21:09:16 +01:00
# [[ Copy Openssl dlls ]] - Needed because dlls are not copied to output folder in github action
if (MSVC)
if (IS_CI_BUILD)
find_package(OpenSSL REQUIRED)
file(COPY "${OPENSSL_INCLUDE_DIR}/../libcrypto-1_1-x64.dll"
DESTINATION "${CMAKE_SOURCE_DIR}/build/Release")
file(COPY "${OPENSSL_INCLUDE_DIR}/../libssl-1_1-x64.dll"
DESTINATION "${CMAKE_SOURCE_DIR}/build/Release")
message("Copied required dlls!")
endif()
endif()
2021-02-26 19:28:15 +01:00
# [[ Build Frontend ]]
if (MSVC)
2021-03-04 19:12:02 +01:00
file(COPY "${CMAKE_SOURCE_DIR}/src/ui/impl/webview/lib/soundux-ui/"
DESTINATION "${CMAKE_SOURCE_DIR}/build/Release/dist")
2021-02-26 19:28:15 +01:00
else()
2021-03-04 19:12:02 +01:00
file(COPY "${CMAKE_SOURCE_DIR}/src/ui/impl/webview/lib/soundux-ui/"
DESTINATION "${CMAKE_SOURCE_DIR}/build/dist")
2021-02-26 19:28:15 +01:00
endif()
2021-01-06 16:30:28 +01:00
target_compile_features(soundux PRIVATE cxx_std_17)
set_target_properties(soundux PROPERTIES CMAKE_CXX_STANDARD 17)
set_target_properties(soundux PROPERTIES CMAKE_CXX_EXTENSIONS Off)
set_target_properties(soundux PROPERTIES CMAKE_CXX_STANDARD_REQUIRED On)
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-13 15:15:01 +01:00
if(USE_FLATPAK)
2021-03-13 14:48:11 +01:00
install(TARGETS soundux DESTINATION bin)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/build/dist" DESTINATION bin)
else()
set(CMAKE_INSTALL_PREFIX "/opt/soundux" CACHE PATH "Install path prefix, prepended onto install directories." FORCE)
install(TARGETS soundux DESTINATION .)
install(DIRECTORY "${CMAKE_SOURCE_DIR}/build/dist" DESTINATION .)
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()