2019-03-15 06:59:16 +00:00
|
|
|
#cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr .
|
|
|
|
#cmake -DCMAKE_BUILD_TYPE=Debug -DCMAKE_INSTALL_PREFIX=/usr .
|
2022-02-16 00:16:37 +00:00
|
|
|
#cmake -DGENERATE_DEB=true -DDEB_ARCHITECTURE=i386|amd64|armhf -DDEB_PLATFORM=ubuntu -DDEB_DISTRO=eoan -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release .
|
2022-04-23 22:15:02 +00:00
|
|
|
#cmake -DCMAKE_BUILD_TYPE=Release -DBUILD_STANDALONE=true .
|
2017-02-24 07:45:25 +00:00
|
|
|
|
2016-05-26 05:02:09 +00:00
|
|
|
cmake_minimum_required(VERSION 3.0)
|
2009-05-06 09:12:12 +00:00
|
|
|
|
2017-07-20 00:36:50 +00:00
|
|
|
project(musikcube)
|
|
|
|
set (musikcube_VERSION_MAJOR 0)
|
2022-12-05 06:16:28 +00:00
|
|
|
set (musikcube_VERSION_MINOR 99)
|
2023-03-19 18:44:45 +00:00
|
|
|
set (musikcube_VERSION_PATCH 6)
|
2017-07-20 00:36:50 +00:00
|
|
|
set (musikcube_VERSION "${musikcube_VERSION_MAJOR}.${musikcube_VERSION_MINOR}.${musikcube_VERSION_PATCH}")
|
2022-02-08 01:22:51 +00:00
|
|
|
set (LIBRARY_OUTPUT_PATH ${musikcube_SOURCE_DIR}/bin/plugins)
|
|
|
|
set (EXECUTABLE_OUTPUT_PATH ${musikcube_SOURCE_DIR}/bin)
|
2016-05-26 05:02:09 +00:00
|
|
|
|
2019-10-28 04:45:17 +00:00
|
|
|
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_LIST_DIR}/.cmake)
|
2022-03-13 23:52:18 +00:00
|
|
|
include(Colors)
|
2017-05-29 23:37:19 +00:00
|
|
|
include(CMakeToolsHelpers OPTIONAL)
|
2019-10-28 04:45:17 +00:00
|
|
|
include(CheckAtomic)
|
2022-02-11 02:34:07 +00:00
|
|
|
include(AddPlugin)
|
2022-02-08 01:22:51 +00:00
|
|
|
include(ConfigureRpath)
|
|
|
|
include(ConfigureBsdPaths)
|
2023-03-20 03:27:10 +00:00
|
|
|
include(ConfigureStandalone)
|
2022-02-08 09:22:00 +00:00
|
|
|
include(AddDarwinSystemLibs)
|
2022-02-08 21:31:58 +00:00
|
|
|
include(AddLinuxSystemLibs)
|
2022-02-08 08:20:55 +00:00
|
|
|
include(ConfigureCurses)
|
2022-02-08 01:22:51 +00:00
|
|
|
include(ConfigureCompilerFlags)
|
2022-02-13 19:26:17 +00:00
|
|
|
include(FindVendorLibrary)
|
2009-07-18 11:50:49 +00:00
|
|
|
|
2023-03-19 18:42:52 +00:00
|
|
|
if (NOT DEFINED ENV{HOMEBREW_PREFIX})
|
|
|
|
find_program(CCACHE_FOUND ccache)
|
|
|
|
if (CCACHE_FOUND)
|
|
|
|
message(STATUS "${BoldGreen}[ccache] ccache enabled!${ColorReset}")
|
|
|
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_COMPILE ccache)
|
|
|
|
set_property(GLOBAL PROPERTY RULE_LAUNCH_LINK ccache)
|
|
|
|
endif(CCACHE_FOUND)
|
|
|
|
endif()
|
2022-03-24 22:09:53 +00:00
|
|
|
|
2022-02-17 09:45:22 +00:00
|
|
|
if (CROSS_COMPILE_SYSROOT)
|
|
|
|
message(STATUS "[cross-compile] enabled, rooted at: ${CROSS_COMPILE_SYSROOT}")
|
2022-02-17 18:45:15 +00:00
|
|
|
set(CMAKE_FIND_ROOT_PATH ${CROSS_COMPILE_SYSROOT} ${musikcube_SOURCE_DIR}/vendor)
|
|
|
|
set(ENV{PKG_CONFIG_PATH} ${CROSS_COMPILE_PKG_CONFIG_PATH})
|
2022-02-17 09:45:22 +00:00
|
|
|
else()
|
|
|
|
message(STATUS "[cross-compile] not enabled!")
|
|
|
|
endif()
|
|
|
|
|
2022-02-08 08:20:55 +00:00
|
|
|
message(STATUS "[vendor-link-directories] ${VENDOR_LINK_DIRECTORIES}")
|
2022-02-08 21:02:18 +00:00
|
|
|
message(STATUS "[vendor-include-directories] ${VENDOR_INCLUDE_DIRECTORIES}")
|
2022-02-08 21:31:58 +00:00
|
|
|
message(STATUS "[os-system-libs] ${DEFAULT_OS_SYSTEM_LIBS}")
|
2022-02-08 08:20:55 +00:00
|
|
|
|
2022-02-08 01:22:51 +00:00
|
|
|
include_directories(
|
2021-04-11 03:59:05 +00:00
|
|
|
"${musikcube_SOURCE_DIR}/src"
|
|
|
|
"${musikcube_SOURCE_DIR}/src/musikcore"
|
|
|
|
"${musikcube_SOURCE_DIR}/src/musikcube"
|
|
|
|
"${musikcube_SOURCE_DIR}/src/musikcube/cursespp"
|
2022-12-04 21:52:07 +00:00
|
|
|
"${musikcube_SOURCE_DIR}/src/3rdparty/include"
|
|
|
|
"${musikcube_SOURCE_DIR}/src/3rdparty/asio/asio/include")
|
2021-04-11 03:59:05 +00:00
|
|
|
|
2022-02-08 01:22:51 +00:00
|
|
|
link_directories("${musikcube_SOURCE_DIR}/bin/plugins")
|
2009-07-18 11:50:49 +00:00
|
|
|
|
2022-12-04 21:52:07 +00:00
|
|
|
# these are used to (1) disable the standalone ASIO from trying to use
|
|
|
|
# boost, and (2) instruct websocketpp to use standalone (not boost) ASIO
|
|
|
|
add_definitions(
|
|
|
|
-DBOOST_DATE_TIME_NO_LIB
|
|
|
|
-DBOOST_REGEX_NO_LIB
|
|
|
|
-D_WEBSOCKETPP_CPP11_TYPE_TRAITS_
|
|
|
|
-D_WEBSOCKETPP_CPP11_RANDOM_DEVICE_
|
|
|
|
-DASIO_STANDALONE)
|
2009-07-18 11:50:49 +00:00
|
|
|
|
2022-02-08 21:31:58 +00:00
|
|
|
if (${BUILD_STANDALONE} MATCHES "true")
|
2022-02-13 19:26:17 +00:00
|
|
|
find_vendor_library(LIBCURL curl)
|
|
|
|
find_vendor_library(LIBSSL ssl)
|
|
|
|
find_vendor_library(LIBCRYPTO crypto)
|
2022-02-08 21:31:58 +00:00
|
|
|
else()
|
2022-02-19 03:20:47 +00:00
|
|
|
# need VENDOR_LINK_DIRECTORIES here for Darwin.
|
|
|
|
find_library(LIBCURL NAMES curl PATHS ${VENDOR_LINK_DIRECTORIES})
|
|
|
|
find_library(LIBSSL NAMES ssl PATHS ${VENDOR_LINK_DIRECTORIES})
|
|
|
|
find_library(LIBCRYPTO NAMES crypto PATHS ${VENDOR_LINK_DIRECTORIES})
|
2022-02-08 21:31:58 +00:00
|
|
|
endif()
|
|
|
|
|
2022-02-08 21:02:18 +00:00
|
|
|
find_library(LIBZ NAMES z)
|
2022-12-04 23:15:37 +00:00
|
|
|
find_library(PTHREAD NAMES pthread)
|
2022-02-08 03:53:26 +00:00
|
|
|
|
2022-12-04 23:15:37 +00:00
|
|
|
set(musikcube_LINK_LIBS ${DEFAULT_OS_SYSTEM_LIBS} ${LIBCURL} ${LIBSSL} ${LIBCRYPTO} ${LIBZ} ${PTHREAD})
|
2019-10-20 03:58:26 +00:00
|
|
|
|
2019-10-28 04:45:17 +00:00
|
|
|
if(NOT HAVE_CXX_ATOMICS_WITHOUT_LIB)
|
|
|
|
if(NOT HAVE_CXX_ATOMICS64_WITHOUT_LIB)
|
|
|
|
message(STATUS "[build] libatomic required, adding to library list")
|
|
|
|
set (musikcube_LINK_LIBS ${musikcube_LINK_LIBS} atomic)
|
|
|
|
endif()
|
|
|
|
endif()
|
|
|
|
|
2022-12-15 02:56:08 +00:00
|
|
|
if (
|
|
|
|
(CMAKE_COMPILER_IS_GNUCC AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 9.0) OR
|
|
|
|
(CMAKE_CXX_COMPILER_ID MATCHES "Clang" AND CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0)
|
|
|
|
)
|
2022-12-04 23:09:53 +00:00
|
|
|
message(STATUS "[build] detected old gcc, manually adding -lstdc++fs")
|
|
|
|
set (musikcube_LINK_LIBS ${musikcube_LINK_LIBS} stdc++fs)
|
|
|
|
endif()
|
|
|
|
|
2022-02-08 08:20:55 +00:00
|
|
|
message(STATUS "[build] musikcube_LINK_LIBS: " ${musikcube_LINK_LIBS})
|
2019-10-28 04:45:17 +00:00
|
|
|
|
2020-10-13 02:23:17 +00:00
|
|
|
add_subdirectory(src/musikcore)
|
2022-02-08 09:22:00 +00:00
|
|
|
add_subdirectory(src/core_c_demo)
|
2020-07-01 05:42:56 +00:00
|
|
|
add_subdirectory(src/musikcube)
|
|
|
|
add_subdirectory(src/musikcubed)
|
|
|
|
|
2022-02-08 01:22:51 +00:00
|
|
|
add_dependencies(musikcube musikcore)
|
|
|
|
add_dependencies(musikcubed musikcore)
|
2021-12-29 04:14:08 +00:00
|
|
|
|
2022-03-13 23:52:18 +00:00
|
|
|
# tag readers
|
2022-02-11 03:43:48 +00:00
|
|
|
add_plugin("src/plugins/taglib_plugin" "taglibreader")
|
2022-03-13 23:52:18 +00:00
|
|
|
# outputs
|
|
|
|
add_plugin("src/plugins/alsaout" "alsaout")
|
2022-12-29 21:37:38 +00:00
|
|
|
add_plugin("src/plugins/coreaudioout" "coreaudioout")
|
|
|
|
add_plugin("src/plugins/nullout" "nullout")
|
2022-03-13 23:52:18 +00:00
|
|
|
add_plugin("src/plugins/pipewireout" "pipewireout")
|
2022-12-29 21:37:38 +00:00
|
|
|
add_plugin("src/plugins/portaudioout" "portaudioout")
|
|
|
|
add_plugin("src/plugins/pulseout" "pulseout")
|
2022-03-13 23:52:18 +00:00
|
|
|
add_plugin("src/plugins/sndioout" "sndioout")
|
|
|
|
# remotes
|
|
|
|
add_plugin("src/plugins/macosmediakeys" "macosmediakeys")
|
2022-12-29 21:37:38 +00:00
|
|
|
add_plugin("src/plugins/mpris" "mpris")
|
|
|
|
add_plugin("src/plugins/server" "server")
|
2022-03-13 23:52:18 +00:00
|
|
|
# streams
|
2022-02-11 03:43:48 +00:00
|
|
|
add_plugin("src/plugins/httpdatastream" "httpdatastream")
|
2022-03-13 23:52:18 +00:00
|
|
|
# decoders
|
|
|
|
add_plugin("src/plugins/ffmpegdecoder" "ffmpegdecoder")
|
|
|
|
add_plugin("src/plugins/gmedecoder" "gmedecoder")
|
2022-12-29 21:37:38 +00:00
|
|
|
add_plugin("src/plugins/libopenmptdecoder" "openmptdecoder")
|
2022-03-13 23:52:18 +00:00
|
|
|
# encoders
|
2022-02-11 03:43:48 +00:00
|
|
|
add_plugin("src/plugins/stockencoders" "stockencoders")
|
2022-03-13 23:52:18 +00:00
|
|
|
# dsps
|
2022-02-11 03:43:48 +00:00
|
|
|
add_plugin("src/plugins/supereqdsp" "supereqdsp")
|
2022-02-11 02:34:07 +00:00
|
|
|
|
2023-01-09 02:10:56 +00:00
|
|
|
add_custom_target(postbuild ALL DEPENDS musikcube musikcubed)
|
|
|
|
add_custom_command(
|
|
|
|
TARGET postbuild
|
|
|
|
POST_BUILD
|
|
|
|
COMMAND
|
|
|
|
"${CMAKE_CURRENT_SOURCE_DIR}/script/post-build.sh"
|
|
|
|
${CMAKE_CURRENT_SOURCE_DIR}
|
|
|
|
${CMAKE_SYSTEM_NAME}
|
|
|
|
${CMAKE_BUILD_TYPE}
|
|
|
|
${BUILD_STANDALONE})
|
|
|
|
|
2022-02-08 01:22:51 +00:00
|
|
|
include(InstallFiles)
|
2022-02-16 03:15:30 +00:00
|
|
|
include(GeneratePackage)
|