mirror of
https://github.com/projectM-visualizer/projectm.git
synced 2026-03-01 13:06:25 +00:00
Fix CMake scripts, so they can be used via add_subdirectory().
This commit is contained in:
@ -1,8 +1,12 @@
|
||||
cmake_minimum_required(VERSION 3.20 FATAL_ERROR)
|
||||
cmake_minimum_required(VERSION 3.21 FATAL_ERROR)
|
||||
|
||||
include(CMakeDependentOption)
|
||||
include(CheckSymbolExists)
|
||||
|
||||
# Save the current source/binary dirs if we're in a subdirectory of a larger CMake project.
|
||||
set(PROJECTM_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
set(PROJECTM_BINARY_DIR "${CMAKE_CURRENT_BINARY_DIR}")
|
||||
|
||||
set(CMAKE_CXX_STANDARD 14)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED YES)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE YES)
|
||||
@ -32,7 +36,7 @@ set(PROJECTM_SO_VERSION "4")
|
||||
# The actual (full) library version of projectM
|
||||
set(PROJECTM_LIB_VERSION "${CMAKE_PROJECT_VERSION}")
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
||||
list(APPEND CMAKE_MODULE_PATH "${PROJECTM_SOURCE_DIR}/cmake")
|
||||
|
||||
include(VCSVersion)
|
||||
include(GNUInstallDirs)
|
||||
@ -42,7 +46,7 @@ set(PROJECTM_LIB_DIR "${CMAKE_INSTALL_LIBDIR}" CACHE STRING "Library installatio
|
||||
set(PROJECTM_INCLUDE_DIR "${CMAKE_INSTALL_INCLUDEDIR}" CACHE STRING "Header installation directory, relative to the install prefix.")
|
||||
|
||||
# Dummy file for merged static libs.
|
||||
set(PROJECTM_DUMMY_SOURCE_FILE "${CMAKE_BINARY_DIR}/dummy.cpp")
|
||||
set(PROJECTM_DUMMY_SOURCE_FILE "${PROJECTM_BINARY_DIR}/dummy.cpp")
|
||||
file(TOUCH "${PROJECTM_DUMMY_SOURCE_FILE}")
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL Emscripten)
|
||||
@ -59,6 +63,7 @@ cmake_dependent_option(ENABLE_SDL_UI "Build the SDL2-based developer test UI" OF
|
||||
cmake_dependent_option(ENABLE_GLES "Enable OpenGL ES support" OFF "NOT ENABLE_EMSCRIPTEN AND NOT CMAKE_SYSTEM_NAME STREQUAL Android" ON)
|
||||
cmake_dependent_option(ENABLE_OPENMP "Enable OpenMP support if available" ON "NOT ENABLE_EMSCRIPTEN" OFF)
|
||||
cmake_dependent_option(ENABLE_THREADING "Enable multithreading support." ON "NOT ENABLE_EMSCRIPTEN" OFF)
|
||||
cmake_dependent_option(ENABLE_INSTALL "Enable installing projectM libraries and headers." OFF "NOT PROJECT_IS_TOP_LEVEL" ON)
|
||||
option(ENABLE_SYSTEM_GLM "Enable use of system-install GLM library" OFF)
|
||||
|
||||
# Experimental/unsupported features
|
||||
@ -70,7 +75,7 @@ if(ENABLE_SYSTEM_GLM)
|
||||
else()
|
||||
add_library(GLM::GLM INTERFACE IMPORTED)
|
||||
set_target_properties(GLM::GLM PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${CMAKE_SOURCE_DIR}/vendor"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${PROJECTM_SOURCE_DIR}/vendor"
|
||||
)
|
||||
endif()
|
||||
|
||||
@ -85,21 +90,21 @@ if(ENABLE_EMSCRIPTEN)
|
||||
# Instead, specifying the required options directly to emcc is the way to go.
|
||||
# Note: The "SHELL:" syntax is required to pass each argument as-is, but without quotes and CMake's de-duplication.
|
||||
add_compile_options(
|
||||
"SHELL:-s USE_SDL=2"
|
||||
"SHELL:-s MIN_WEBGL_VERSION=2"
|
||||
"SHELL:-s MAX_WEBGL_VERSION=2"
|
||||
"SHELL:-s ALLOW_MEMORY_GROWTH=1"
|
||||
"SHELL:-s NO_DISABLE_EXCEPTION_CATCHING"
|
||||
)
|
||||
"SHELL:-s USE_SDL=2"
|
||||
"SHELL:-s MIN_WEBGL_VERSION=2"
|
||||
"SHELL:-s MAX_WEBGL_VERSION=2"
|
||||
"SHELL:-s ALLOW_MEMORY_GROWTH=1"
|
||||
"SHELL:-s NO_DISABLE_EXCEPTION_CATCHING"
|
||||
)
|
||||
|
||||
add_link_options(
|
||||
"SHELL:-s USE_SDL=2"
|
||||
"SHELL:-s MIN_WEBGL_VERSION=2"
|
||||
"SHELL:-s MAX_WEBGL_VERSION=2"
|
||||
"SHELL:-s FULL_ES2=1"
|
||||
"SHELL:-s ALLOW_MEMORY_GROWTH=1"
|
||||
"SHELL:-s NO_DISABLE_EXCEPTION_CATCHING"
|
||||
)
|
||||
"SHELL:-s USE_SDL=2"
|
||||
"SHELL:-s MIN_WEBGL_VERSION=2"
|
||||
"SHELL:-s MAX_WEBGL_VERSION=2"
|
||||
"SHELL:-s FULL_ES2=1"
|
||||
"SHELL:-s ALLOW_MEMORY_GROWTH=1"
|
||||
"SHELL:-s NO_DISABLE_EXCEPTION_CATCHING"
|
||||
)
|
||||
|
||||
if(ENABLE_THREADING)
|
||||
message(AUTHOR_WARNING "Threading on emscripten is deemed stable, but may have issues. Use with care.\n"
|
||||
@ -120,12 +125,12 @@ else()
|
||||
if(ENABLE_GLES)
|
||||
message(STATUS "Building for OpenGL Embedded Profile")
|
||||
if(NOT CMAKE_SYSTEM_NAME STREQUAL Linux
|
||||
AND NOT CMAKE_SYSTEM_NAME STREQUAL Android)
|
||||
AND NOT CMAKE_SYSTEM_NAME STREQUAL Android)
|
||||
message(FATAL_ERROR "OpenGL ES 3 support is currently only available for Linux platforms. You're building for ${CMAKE_SYSTEM_NAME}.")
|
||||
endif()
|
||||
|
||||
# We use a local find script for OpenGL::GLES3 until the proposed changes are merged upstream.
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/gles")
|
||||
list(APPEND CMAKE_MODULE_PATH "${PROJECTM_SOURCE_DIR}/cmake/gles")
|
||||
find_package(OpenGL REQUIRED COMPONENTS GLES3)
|
||||
if(NOT TARGET OpenGL::GLES3)
|
||||
message(FATAL_ERROR "No suitable GLES3 library was found.")
|
||||
|
||||
@ -30,7 +30,7 @@ macro(GENERATE_PKG_CONFIG_FILES target package_name)
|
||||
# multi-config packages such as CMake provides. It's a mess.
|
||||
set(PKGCONFIG_PROJECTM_LIBRARY "${_lib_name}")
|
||||
set(PKGCONFIG_PACKAGE_REQUIREMENTS "${PKGCONFIG_PACKAGE_REQUIREMENTS_ALL} ${PKGCONFIG_PACKAGE_REQUIREMENTS_RELEASE}")
|
||||
configure_file(${CMAKE_SOURCE_DIR}/cmake/pkgconfig-file.in "${CMAKE_CURRENT_BINARY_DIR}/${package_name}.pc" @ONLY)
|
||||
configure_file(${PROJECTM_SOURCE_DIR}/cmake/pkgconfig-file.in "${CMAKE_CURRENT_BINARY_DIR}/${package_name}.pc" @ONLY)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${package_name}.pc"
|
||||
CONFIGURATIONS Release;RelWithDebInfo;MinSizeRel
|
||||
DESTINATION "${PROJECTM_LIB_DIR}/pkgconfig"
|
||||
@ -39,7 +39,7 @@ macro(GENERATE_PKG_CONFIG_FILES target package_name)
|
||||
|
||||
set(PKGCONFIG_PROJECTM_LIBRARY "${_lib_name}${CMAKE_DEBUG_POSTFIX}")
|
||||
set(PKGCONFIG_PACKAGE_REQUIREMENTS "${PKGCONFIG_PACKAGE_REQUIREMENTS_ALL} ${PKGCONFIG_PACKAGE_REQUIREMENTS_DEBUG}")
|
||||
configure_file(${CMAKE_SOURCE_DIR}/cmake/pkgconfig-file.in "${CMAKE_CURRENT_BINARY_DIR}/${package_name}-debug.pc" @ONLY)
|
||||
configure_file(${PROJECTM_SOURCE_DIR}/cmake/pkgconfig-file.in "${CMAKE_CURRENT_BINARY_DIR}/${package_name}-debug.pc" @ONLY)
|
||||
install(FILES "${CMAKE_CURRENT_BINARY_DIR}/${package_name}-debug.pc"
|
||||
CONFIGURATIONS Debug
|
||||
DESTINATION "${PROJECTM_LIB_DIR}/pkgconfig"
|
||||
|
||||
@ -80,9 +80,9 @@ check_include_files("${_std_c_headers}" STDC_HEADERS LANGUAGE C)
|
||||
unset(_std_c_headers)
|
||||
|
||||
# Create global configuration header
|
||||
file(MAKE_DIRECTORY "${CMAKE_BINARY_DIR}/include")
|
||||
configure_file(config.h.cmake.in "${CMAKE_BINARY_DIR}/include/config.h")
|
||||
include_directories("${CMAKE_BINARY_DIR}/include")
|
||||
file(MAKE_DIRECTORY "${PROJECTM_BINARY_DIR}/include")
|
||||
configure_file(config.h.cmake.in "${PROJECTM_BINARY_DIR}/include/config.h")
|
||||
include_directories("${PROJECTM_BINARY_DIR}/include")
|
||||
|
||||
# Force-include the file in all targets
|
||||
if(MSVC)
|
||||
|
||||
@ -37,22 +37,26 @@ generate_export_header(projectM_api
|
||||
add_library(libprojectM::API ALIAS projectM_api)
|
||||
|
||||
|
||||
install(TARGETS projectM_api
|
||||
EXPORT libprojectMTargets
|
||||
LIBRARY DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Runtime
|
||||
RUNTIME DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Runtime
|
||||
ARCHIVE DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Devel
|
||||
PUBLIC_HEADER DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4" COMPONENT Devel
|
||||
)
|
||||
if(ENABLE_INSTALL)
|
||||
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/include/projectM-4/projectM_export.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/include/projectM-4/version.h"
|
||||
DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4"
|
||||
COMPONENT Devel
|
||||
)
|
||||
install(TARGETS projectM_api
|
||||
EXPORT libprojectMTargets
|
||||
LIBRARY DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Runtime
|
||||
RUNTIME DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Runtime
|
||||
ARCHIVE DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Devel
|
||||
PUBLIC_HEADER DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4" COMPONENT Devel
|
||||
)
|
||||
|
||||
install(DIRECTORY include/projectM-4
|
||||
DESTINATION "${PROJECTM_INCLUDE_DIR}"
|
||||
COMPONENT Devel
|
||||
)
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/include/projectM-4/projectM_export.h"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/include/projectM-4/version.h"
|
||||
DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4"
|
||||
COMPONENT Devel
|
||||
)
|
||||
|
||||
install(DIRECTORY include/projectM-4
|
||||
DESTINATION "${PROJECTM_INCLUDE_DIR}"
|
||||
COMPONENT Devel
|
||||
)
|
||||
|
||||
endif()
|
||||
@ -4,7 +4,7 @@ add_compile_definitions(
|
||||
$<IF:$<PLATFORM_ID:Windows>,NOMINMAX,>
|
||||
$<IF:$<PLATFORM_ID:Windows>,WIN32_LEAN_AND_MEAN,>
|
||||
$<IF:$<PLATFORM_ID:Windows>,STBI_NO_DDS,>
|
||||
)
|
||||
)
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
# dirent.h support
|
||||
@ -59,10 +59,10 @@ endif()
|
||||
|
||||
target_include_directories(projectM_main
|
||||
PRIVATE
|
||||
"${CMAKE_SOURCE_DIR}/src"
|
||||
"${PROJECTM_SOURCE_DIR}/src"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/Renderer"
|
||||
"${CMAKE_SOURCE_DIR}/vendor/hlslparser/src"
|
||||
"${PROJECTM_SOURCE_DIR}/vendor/hlslparser/src"
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/MilkdropPreset"
|
||||
"${MSVC_EXTRA_INCLUDE_DIR}"
|
||||
)
|
||||
@ -92,9 +92,9 @@ target_link_libraries(projectM
|
||||
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Darwin")
|
||||
target_link_libraries(projectM
|
||||
PUBLIC
|
||||
"-framework CoreFoundation"
|
||||
)
|
||||
PUBLIC
|
||||
"-framework CoreFoundation"
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ENABLE_LLVM)
|
||||
@ -120,9 +120,9 @@ set_target_properties(projectM PROPERTIES
|
||||
|
||||
if(BUILD_SHARED_LIBS)
|
||||
target_compile_definitions(projectM_main
|
||||
PRIVATE
|
||||
projectM_api_EXPORTS
|
||||
)
|
||||
PRIVATE
|
||||
projectM_api_EXPORTS
|
||||
)
|
||||
|
||||
target_link_libraries(projectM
|
||||
PUBLIC
|
||||
@ -130,9 +130,9 @@ if(BUILD_SHARED_LIBS)
|
||||
)
|
||||
else()
|
||||
target_compile_definitions(projectM_main
|
||||
PUBLIC
|
||||
PROJECTM_STATIC_DEFINE
|
||||
)
|
||||
PUBLIC
|
||||
PROJECTM_STATIC_DEFINE
|
||||
)
|
||||
|
||||
set_target_properties(projectM PROPERTIES
|
||||
OUTPUT_NAME $<IF:$<PLATFORM_ID:Windows>,libprojectM,projectM>
|
||||
@ -142,117 +142,121 @@ endif()
|
||||
|
||||
add_library(libprojectM::projectM ALIAS projectM)
|
||||
|
||||
install(TARGETS projectM
|
||||
EXPORT libprojectMTargets
|
||||
LIBRARY DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Runtime
|
||||
RUNTIME DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Runtime
|
||||
ARCHIVE DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Devel
|
||||
PUBLIC_HEADER DESTINATION "${PROJECTM_INCLUDE_DIR}/libprojectM" COMPONENT Devel
|
||||
)
|
||||
if(ENABLE_INSTALL)
|
||||
|
||||
if(ENABLE_CXX_INTERFACE)
|
||||
if(ENABLE_THREADING)
|
||||
install(TARGETS projectM
|
||||
EXPORT libprojectMTargets
|
||||
LIBRARY DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Runtime
|
||||
RUNTIME DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Runtime
|
||||
ARCHIVE DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Devel
|
||||
PUBLIC_HEADER DESTINATION "${PROJECTM_INCLUDE_DIR}/libprojectM" COMPONENT Devel
|
||||
)
|
||||
|
||||
if(ENABLE_CXX_INTERFACE)
|
||||
if(ENABLE_THREADING)
|
||||
target_compile_definitions(projectM
|
||||
INTERFACE
|
||||
PROJECTM_USE_THREADS
|
||||
)
|
||||
endif()
|
||||
|
||||
install(FILES
|
||||
Audio/PCM.hpp
|
||||
ProjectM.hpp
|
||||
DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4"
|
||||
COMPONENT Devel
|
||||
)
|
||||
else()
|
||||
# Set PROJECTM_STATIC_EXPORT for C++ implementations to use project default visibility
|
||||
# and no dllimport/dllexport.
|
||||
set_source_files_properties(ProjectM.cpp Audio/PCM.cpp Audio/FrameAudioData.cpp PROPERTIES
|
||||
COMPILE_DEFINITIONS PROJECTM_STATIC_DEFINE
|
||||
)
|
||||
target_compile_definitions(projectM
|
||||
INTERFACE
|
||||
PROJECTM_USE_THREADS
|
||||
PROJECTM_STATIC_DEFINE
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
# CMake target exports
|
||||
|
||||
# For use from a local projectM build tree (without installing)
|
||||
export(TARGETS
|
||||
projectM_api
|
||||
projectM
|
||||
NAMESPACE libprojectM::
|
||||
FILE projectM-exports.cmake
|
||||
)
|
||||
|
||||
|
||||
# For use from an installed package (system install, vcpkg, homebrew etc.)
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
write_basic_package_version_file(
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/libprojectM/projectM4ConfigVersion.cmake"
|
||||
VERSION ${PROJECT_VERSION}
|
||||
COMPATIBILITY AnyNewerVersion
|
||||
)
|
||||
|
||||
configure_package_config_file(projectM4Config.cmake.in
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/libprojectM/projectM4Config.cmake"
|
||||
INSTALL_DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
|
||||
PATH_VARS PROJECTM_BIN_DIR PROJECTM_INCLUDE_DIR
|
||||
)
|
||||
|
||||
install(FILES
|
||||
Audio/PCM.hpp
|
||||
ProjectM.hpp
|
||||
DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4"
|
||||
COMPONENT Devel
|
||||
)
|
||||
else()
|
||||
# Set PROJECTM_STATIC_EXPORT for C++ implementations to use project default visibility
|
||||
# and no dllimport/dllexport.
|
||||
set_source_files_properties(ProjectM.cpp Audio/PCM.cpp Audio/FrameAudioData.cpp PROPERTIES
|
||||
COMPILE_DEFINITIONS PROJECTM_STATIC_DEFINE
|
||||
)
|
||||
target_compile_definitions(projectM
|
||||
INTERFACE
|
||||
PROJECTM_STATIC_DEFINE
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
# CMake target exports
|
||||
|
||||
# For use from a local projectM build tree (without installing)
|
||||
export(TARGETS
|
||||
projectM_api
|
||||
projectM
|
||||
NAMESPACE libprojectM::
|
||||
FILE projectM-exports.cmake
|
||||
)
|
||||
|
||||
|
||||
# For use from an installed package (system install, vcpkg, homebrew etc.)
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
write_basic_package_version_file(
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/libprojectM/projectM4ConfigVersion.cmake"
|
||||
VERSION ${PROJECT_VERSION}
|
||||
COMPATIBILITY AnyNewerVersion
|
||||
)
|
||||
|
||||
configure_package_config_file(projectM4Config.cmake.in
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/libprojectM/projectM4Config.cmake"
|
||||
INSTALL_DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
|
||||
PATH_VARS PROJECTM_BIN_DIR PROJECTM_INCLUDE_DIR
|
||||
)
|
||||
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/libprojectM/projectM4ConfigVersion.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/libprojectM/projectM4Config.cmake"
|
||||
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
|
||||
COMPONENT Devel
|
||||
)
|
||||
|
||||
if(NOT ENABLE_EMSCRIPTEN AND ENABLE_GLES)
|
||||
install(FILES
|
||||
"${CMAKE_SOURCE_DIR}/cmake/gles/FindOpenGL.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/libprojectM/projectM4ConfigVersion.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/libprojectM/projectM4Config.cmake"
|
||||
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
|
||||
COMPONENT Devel
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ENABLE_LLVM)
|
||||
install(FILES
|
||||
"${CMAKE_SOURCE_DIR}/cmake/gles/FindLLVM.cmake"
|
||||
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
|
||||
COMPONENT Devel
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
install(EXPORT libprojectMTargets
|
||||
FILE projectM4Targets.cmake
|
||||
NAMESPACE libprojectM::
|
||||
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
|
||||
COMPONENT Devel
|
||||
)
|
||||
|
||||
# pkg-config export, only supported on UNIX systems.
|
||||
if(UNIX)
|
||||
include(GeneratePkgConfigFiles)
|
||||
if(NOT ENABLE_EMSCRIPTEN AND ENABLE_GLES)
|
||||
install(FILES
|
||||
"${PROJECTM_SOURCE_DIR}/cmake/gles/FindOpenGL.cmake"
|
||||
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
|
||||
COMPONENT Devel
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ENABLE_LLVM)
|
||||
set(PKGCONFIG_LIBS "${PKGCONFIG_LIBS} -L${LLVM_LIB_DIR} ${LLVM_LIBRARIES}")
|
||||
install(FILES
|
||||
"${PROJECTM_SOURCE_DIR}/cmake/gles/FindLLVM.cmake"
|
||||
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
|
||||
COMPONENT Devel
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ENABLE_OPENMP)
|
||||
set(PKGCONFIG_FLAGS "${PKGCONFIG_FLAGS} ${OpenMP_CXX_FLAGS}")
|
||||
foreach(_library ${OpenMP_CXX_LIBRARIES})
|
||||
set(PKGCONFIG_LIBS "${PKGCONFIG_LIBS} -l${_library}")
|
||||
endforeach()
|
||||
|
||||
install(EXPORT libprojectMTargets
|
||||
FILE projectM4Targets.cmake
|
||||
NAMESPACE libprojectM::
|
||||
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4"
|
||||
COMPONENT Devel
|
||||
)
|
||||
|
||||
# pkg-config export, only supported on UNIX systems.
|
||||
if(UNIX)
|
||||
include(GeneratePkgConfigFiles)
|
||||
|
||||
if(ENABLE_LLVM)
|
||||
set(PKGCONFIG_LIBS "${PKGCONFIG_LIBS} -L${LLVM_LIB_DIR} ${LLVM_LIBRARIES}")
|
||||
endif()
|
||||
|
||||
if(ENABLE_OPENMP)
|
||||
set(PKGCONFIG_FLAGS "${PKGCONFIG_FLAGS} ${OpenMP_CXX_FLAGS}")
|
||||
foreach(_library ${OpenMP_CXX_LIBRARIES})
|
||||
set(PKGCONFIG_LIBS "${PKGCONFIG_LIBS} -l${_library}")
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
set(PKGCONFIG_PACKAGE_NAME "projectM-4")
|
||||
set(PKGCONFIG_PACKAGE_DESCRIPTION "projectM Music Visualizer")
|
||||
set(PKGCONFIG_PACKAGE_REQUIREMENTS_ALL "opengl")
|
||||
|
||||
generate_pkg_config_files(projectM projectM-4)
|
||||
|
||||
endif()
|
||||
|
||||
set(PKGCONFIG_PACKAGE_NAME "projectM-4")
|
||||
set(PKGCONFIG_PACKAGE_DESCRIPTION "projectM Music Visualizer")
|
||||
set(PKGCONFIG_PACKAGE_REQUIREMENTS_ALL "opengl")
|
||||
|
||||
generate_pkg_config_files(projectM projectM-4)
|
||||
|
||||
endif()
|
||||
|
||||
@ -94,63 +94,67 @@ include(FilesystemSupport.cmake)
|
||||
|
||||
add_library(libprojectM::playlist ALIAS projectM_playlist)
|
||||
|
||||
install(TARGETS projectM_playlist
|
||||
EXPORT libprojectMPlaylist
|
||||
LIBRARY DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Runtime
|
||||
RUNTIME DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Runtime
|
||||
ARCHIVE DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Devel
|
||||
PUBLIC_HEADER DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4" COMPONENT Devel
|
||||
)
|
||||
if(ENABLE_INSTALL)
|
||||
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/include/projectM-4/projectM_playlist_export.h"
|
||||
DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4"
|
||||
COMPONENT Devel
|
||||
)
|
||||
install(TARGETS projectM_playlist
|
||||
EXPORT libprojectMPlaylist
|
||||
LIBRARY DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Runtime
|
||||
RUNTIME DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Runtime
|
||||
ARCHIVE DESTINATION "${PROJECTM_LIB_DIR}" COMPONENT Devel
|
||||
PUBLIC_HEADER DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4" COMPONENT Devel
|
||||
)
|
||||
|
||||
install(DIRECTORY api/projectM-4
|
||||
DESTINATION "${PROJECTM_INCLUDE_DIR}"
|
||||
COMPONENT Devel
|
||||
)
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/include/projectM-4/projectM_playlist_export.h"
|
||||
DESTINATION "${PROJECTM_INCLUDE_DIR}/projectM-4"
|
||||
COMPONENT Devel
|
||||
)
|
||||
|
||||
install(DIRECTORY api/projectM-4
|
||||
DESTINATION "${PROJECTM_INCLUDE_DIR}"
|
||||
COMPONENT Devel
|
||||
)
|
||||
|
||||
|
||||
# For use from an installed package (system install, vcpkg, homebrew etc.)
|
||||
include(CMakePackageConfigHelpers)
|
||||
# For use from an installed package (system install, vcpkg, homebrew etc.)
|
||||
include(CMakePackageConfigHelpers)
|
||||
|
||||
write_basic_package_version_file(
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/libprojectMPlaylist/projectM4PlaylistConfigVersion.cmake"
|
||||
VERSION ${PROJECT_VERSION}
|
||||
COMPATIBILITY AnyNewerVersion
|
||||
)
|
||||
write_basic_package_version_file(
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/libprojectMPlaylist/projectM4PlaylistConfigVersion.cmake"
|
||||
VERSION ${PROJECT_VERSION}
|
||||
COMPATIBILITY AnyNewerVersion
|
||||
)
|
||||
|
||||
configure_package_config_file(projectM4PlaylistConfig.cmake.in
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/libprojectMPlaylist/projectM4PlaylistConfig.cmake"
|
||||
INSTALL_DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4Playlist"
|
||||
PATH_VARS PROJECTM_BIN_DIR PROJECTM_INCLUDE_DIR
|
||||
)
|
||||
configure_package_config_file(projectM4PlaylistConfig.cmake.in
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/libprojectMPlaylist/projectM4PlaylistConfig.cmake"
|
||||
INSTALL_DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4Playlist"
|
||||
PATH_VARS PROJECTM_BIN_DIR PROJECTM_INCLUDE_DIR
|
||||
)
|
||||
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/libprojectMPlaylist/projectM4PlaylistConfigVersion.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/libprojectMPlaylist/projectM4PlaylistConfig.cmake"
|
||||
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4Playlist"
|
||||
COMPONENT Devel
|
||||
)
|
||||
install(FILES
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/libprojectMPlaylist/projectM4PlaylistConfigVersion.cmake"
|
||||
"${CMAKE_CURRENT_BINARY_DIR}/libprojectMPlaylist/projectM4PlaylistConfig.cmake"
|
||||
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4Playlist"
|
||||
COMPONENT Devel
|
||||
)
|
||||
|
||||
install(EXPORT libprojectMPlaylist
|
||||
FILE projectM4PlaylistTargets.cmake
|
||||
NAMESPACE libprojectM::
|
||||
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4Playlist"
|
||||
COMPONENT Devel
|
||||
)
|
||||
install(EXPORT libprojectMPlaylist
|
||||
FILE projectM4PlaylistTargets.cmake
|
||||
NAMESPACE libprojectM::
|
||||
DESTINATION "${PROJECTM_LIB_DIR}/cmake/projectM4Playlist"
|
||||
COMPONENT Devel
|
||||
)
|
||||
|
||||
# pkg-config export, only supported on UNIX systems.
|
||||
if(UNIX)
|
||||
include(GeneratePkgConfigFiles)
|
||||
# pkg-config export, only supported on UNIX systems.
|
||||
if(UNIX)
|
||||
include(GeneratePkgConfigFiles)
|
||||
|
||||
set(PKGCONFIG_PACKAGE_NAME "projectM-4-playlist")
|
||||
set(PKGCONFIG_PACKAGE_DESCRIPTION "projectM Playlist Library")
|
||||
set(PKGCONFIG_PACKAGE_REQUIREMENTS_RELEASE "projectM-4")
|
||||
set(PKGCONFIG_PACKAGE_REQUIREMENTS_DEBUG "projectM-4-debug")
|
||||
set(PKGCONFIG_PACKAGE_NAME "projectM-4-playlist")
|
||||
set(PKGCONFIG_PACKAGE_DESCRIPTION "projectM Playlist Library")
|
||||
set(PKGCONFIG_PACKAGE_REQUIREMENTS_RELEASE "projectM-4")
|
||||
set(PKGCONFIG_PACKAGE_REQUIREMENTS_DEBUG "projectM-4-debug")
|
||||
|
||||
generate_pkg_config_files(projectM_playlist projectM-4-playlist)
|
||||
endif()
|
||||
|
||||
generate_pkg_config_files(projectM_playlist projectM-4-playlist)
|
||||
endif()
|
||||
|
||||
@ -19,8 +19,8 @@ target_compile_definitions(projectM-unittest
|
||||
# Test includes a header file from libprojectM with its full path in the source dir.
|
||||
target_include_directories(projectM-unittest
|
||||
PRIVATE
|
||||
"${CMAKE_SOURCE_DIR}/src/libprojectM"
|
||||
"${CMAKE_SOURCE_DIR}"
|
||||
"${PROJECTM_SOURCE_DIR}/src/libprojectM"
|
||||
"${PROJECTM_SOURCE_DIR}"
|
||||
)
|
||||
|
||||
target_link_libraries(projectM-unittest
|
||||
|
||||
Reference in New Issue
Block a user