You've already forked libopenshot-audio
mirror of
https://github.com/OpenShot/libopenshot-audio.git
synced 2026-03-02 08:54:01 -08:00
513 lines
16 KiB
CMake
513 lines
16 KiB
CMake
#################### CMakeLists.txt (libopenshot-audio) ######################
|
|
# @file
|
|
# @brief CMake build file for libopenshot-audio (used to generate makefiles)
|
|
# @author Jonathan Thomas <jonathan@openshot.org>
|
|
# @author FeRD (Frank Dana) <ferdnyc@gmail.com>
|
|
#
|
|
# Copyright (c) 2008-2020 OpenShot Studios, LLC
|
|
# <http://www.openshotstudios.com/>. This file is part of
|
|
# OpenShot Audio Library (libopenshot-audio), an open-source project dedicated
|
|
# to delivering high quality audio editing and playback solutions to the
|
|
# world. For more information visit <http://www.openshot.org/>.
|
|
#
|
|
# OpenShot Audio Library (libopenshot-audio) is free software: you can
|
|
# redistribute it and/or modify it under the terms of the GNU General Public
|
|
# License as published by the Free Software Foundation, either version 3 of the
|
|
# License, or (at your option) any later version.
|
|
#
|
|
# OpenShot Audio Library (libopenshot-audio) is distributed in the hope that it
|
|
# will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
|
|
# of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
|
# Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with OpenShot Audio Library. If not, see <http://www.gnu.org/licenses/>.
|
|
################################################################################
|
|
|
|
cmake_minimum_required(VERSION 3.1...3.20 FATAL_ERROR)
|
|
|
|
message("\
|
|
-----------------------------------------------------------------
|
|
Welcome to the OpenShot Build System!
|
|
|
|
CMake will now check libopenshot-audio's build dependencies and
|
|
inform you of any missing files or other issues.
|
|
|
|
For more information, please visit <http://www.openshot.org/>.
|
|
-----------------------------------------------------------------")
|
|
|
|
################ ADD CMAKE MODULES ##################
|
|
set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake/Modules")
|
|
|
|
################ PROJECT VERSION ####################
|
|
set(PROJECT_VERSION_FULL "0.5.0")
|
|
set(PROJECT_SO_VERSION 10)
|
|
|
|
#### Set C++ standard level
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
set(CMAKE_CXX_EXTENSIONS OFF)
|
|
|
|
# Remove the dash and anything following, to get the #.#.# version for project()
|
|
string(REGEX REPLACE "\-.*$" "" VERSION_NUM "${PROJECT_VERSION_FULL}")
|
|
|
|
################### SETUP PROJECT ###################
|
|
# This will define the following variables
|
|
# PROJECT_NAME
|
|
# PROJECT_VERSION, OpenShotAudio_VERSION
|
|
# PROJECT_VERSION_MAJOR, OpenShotAudio_VERSION_MAJOR
|
|
# PROJECT_VERSION_MINOR, OpenShotAudio_VERSION_MINOR
|
|
# PROJECT_VERSION_PATCH, OpenShotAudio_VERSION_PATCH
|
|
project(OpenShotAudio LANGUAGES C CXX VERSION ${VERSION_NUM})
|
|
|
|
# JuceHeader.h needs a hexadecimal version number for the project
|
|
if(CMAKE_VERSION VERSION_GREATER 3.13)
|
|
math(EXPR PROJECT_VERSION_HEX
|
|
"(${PROJECT_VERSION_MAJOR} << 16) + \
|
|
(${PROJECT_VERSION_MINOR} << 8) + \
|
|
(${PROJECT_VERSION_PATCH})" OUTPUT_FORMAT HEXADECIMAL )
|
|
else()
|
|
# Compile and run a C++ program to generate the hex version
|
|
set(HEX_COMPILE_DEFINITIONS
|
|
-DVERSION_MAJOR=${PROJECT_VERSION_MAJOR}
|
|
-DVERSION_MINOR=${PROJECT_VERSION_MINOR}
|
|
-DVERSION_PATCH=${PROJECT_VERSION_PATCH}
|
|
)
|
|
try_run(HEX_VERSION_RUN HEX_VERSION_BUILD
|
|
${CMAKE_CURRENT_BINARY_DIR}/hex_version
|
|
${PROJECT_SOURCE_DIR}/src/hex_version.cpp
|
|
COMPILE_DEFINITIONS ${HEX_COMPILE_DEFINITIONS}
|
|
RUN_OUTPUT_VARIABLE HEX_VERSION_OUTPUT
|
|
)
|
|
if (NOT HEX_VERSION_BUILD)
|
|
message(ERROR "Failed to compile hex-version utility!")
|
|
elseif(HEX_VERSION_RUN STREQUAL FAILED_TO_RUN)
|
|
message(ERROR "Could not execute hex-version utility!")
|
|
else()
|
|
set(PROJECT_VERSION_HEX ${HEX_VERSION_OUTPUT})
|
|
endif()
|
|
endif()
|
|
|
|
message("
|
|
Generating build files for OpenShot with CMake ${CMAKE_VERSION}
|
|
Building ${PROJECT_NAME} version ${PROJECT_VERSION_FULL} (${PROJECT_VERSION_HEX})
|
|
SO/API/ABI Version: ${PROJECT_SO_VERSION}
|
|
")
|
|
|
|
|
|
# Define install paths according to system conventions
|
|
# XXX: This must be AFTER THE project() COMMAND w/ languages enabled,
|
|
# in order to properly configure CMAKE_INSTALL_LIBDIR path
|
|
include(GNUInstallDirs)
|
|
# Collect and display summary of options/dependencies
|
|
include(FeatureSummary)
|
|
|
|
### Build configuration (options)
|
|
option(ENABLE_AUDIO_DOCS "Attempt to build API docs for audio library" ON)
|
|
option(AUTO_INSTALL_DOCS "Include documentation in the default install" ON)
|
|
|
|
# Alternative location for JUCE modules (debian has their own)
|
|
set(JUCE_MODULES_PATH "${CMAKE_CURRENT_SOURCE_DIR}/JuceLibraryCode/modules" CACHE PATH
|
|
"Location of the JUCE source code 'modules' directory")
|
|
if(CMAKE_VERSION VERSION_GREATER 3.4 AND IS_ABSOLUTE ${JUCE_MODULES_PATH})
|
|
# Display path relative to project root
|
|
file(RELATIVE_PATH _juce_dir ${CMAKE_CURRENT_SOURCE_DIR} ${JUCE_MODULES_PATH})
|
|
else()
|
|
set(_juce_dir ${JUCE_MODULES_PATH})
|
|
endif()
|
|
string(REGEX REPLACE "/modules$" "" _juce_dir "${_juce_dir}")
|
|
add_feature_info("JUCE path" TRUE "Using JUCE sources from: ${_juce_dir}")
|
|
|
|
###
|
|
### Configure headers
|
|
###
|
|
|
|
# Generate our custom headers from templates
|
|
configure_file(include/OpenShotAudio.h.in include/OpenShotAudio.h @ONLY)
|
|
configure_file(include/JuceHeader.h.in include/JuceHeader.h @ONLY)
|
|
configure_file(include/AppConfig.h.in include/AppConfig.h @ONLY)
|
|
list(APPEND _extra_headers
|
|
${CMAKE_CURRENT_BINARY_DIR}/include/OpenShotAudio.h
|
|
${CMAKE_CURRENT_BINARY_DIR}/include/JuceHeader.h
|
|
${CMAKE_CURRENT_BINARY_DIR}/include/AppConfig.h
|
|
)
|
|
|
|
# Juce requires either DEBUG or NDEBUG to be defined on MacOS.
|
|
# -DNDEBUG is set by cmake for all release configs, so add
|
|
# -DDEBUG for debug builds. We'll do this for all OSes, even
|
|
# though only MacOS requires it.
|
|
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -DDEBUG")
|
|
# Make sure we've picked some build type, default to release
|
|
if(NOT DEFINED CMAKE_BUILD_TYPE OR CMAKE_BUILD_TYPE STREQUAL "")
|
|
set(CMAKE_BUILD_TYPE "Release")
|
|
endif()
|
|
|
|
# Default extension for source files
|
|
if(UNIX AND APPLE)
|
|
set(SOURCE_EXTENSION "mm")
|
|
else()
|
|
set(SOURCE_EXTENSION "cpp")
|
|
endif()
|
|
|
|
# List of modules to build
|
|
set(JUCE_MODULES
|
|
juce_audio_basics
|
|
juce_audio_devices
|
|
juce_audio_formats
|
|
juce_core
|
|
juce_data_structures
|
|
juce_dsp
|
|
juce_events )
|
|
# Convert to list of source files (extension based on OS)
|
|
foreach(j_module IN LISTS JUCE_MODULES)
|
|
list(APPEND JUCE_SOURCES
|
|
JuceLibraryCode/include_${j_module}.${SOURCE_EXTENSION} )
|
|
endforeach()
|
|
|
|
add_library(openshot-audio SHARED ${JUCE_SOURCES})
|
|
|
|
# Include header directories
|
|
target_include_directories(openshot-audio PUBLIC
|
|
$<BUILD_INTERFACE:${CMAKE_CURRENT_BINARY_DIR}/include>
|
|
$<BUILD_INTERFACE:${JUCE_MODULES_PATH}>
|
|
$<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}/libopenshot-audio/>
|
|
)
|
|
|
|
# Set SONAME and other library properties
|
|
set_target_properties(openshot-audio PROPERTIES
|
|
VERSION ${PROJECT_VERSION}
|
|
SOVERSION ${PROJECT_SO_VERSION}
|
|
EXPORT_NAME Audio # Exports as OpenShot::Audio target
|
|
)
|
|
|
|
# Require language features we use
|
|
if(CMAKE_VERSION VERSION_GREATER 3.8)
|
|
target_compile_features(openshot-audio PUBLIC
|
|
cxx_std_14
|
|
cxx_range_for
|
|
cxx_override
|
|
)
|
|
else()
|
|
set_target_properties(openshot-audio PROPERTIES
|
|
CXX_STANDARD 14
|
|
CXX_STANDARD_REQUIRED YES
|
|
CXX_EXTENSIONS NO
|
|
)
|
|
endif()
|
|
|
|
# Enable stack-unwinding support in c objects on gcc-based platforms.
|
|
# Failing to do so will cause your program to be terminated when a png
|
|
# or a jpeg exception is thrown on linux or macosx.
|
|
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
|
|
target_compile_options(openshot-audio PRIVATE -fexceptions)
|
|
endif()
|
|
|
|
# This ends up needing to be defined for consumers wishing to use
|
|
# JUCE classes in SWIG bindings, since some of the target languages
|
|
# (Ruby) have issues dealing with JUCE's use of isFinite()
|
|
target_compile_definitions(openshot-audio INTERFACE HAVE_ISFINITE=1)
|
|
|
|
# For EXPORTED config
|
|
set(NEED_ASIO FALSE)
|
|
if(WIN32)
|
|
# Try to load ASIO SDK
|
|
find_package(ASIO)
|
|
if(TARGET ASIO::SDK)
|
|
target_link_libraries(openshot-audio PRIVATE ASIO::SDK)
|
|
set(NEED_ASIO TRUE)
|
|
endif()
|
|
# Order here can be important!
|
|
# For example, winmm.lib must come before kernel32.lib (if linked)
|
|
# or older 32-bit windows versions will have linking issues for
|
|
# certain entry points
|
|
target_link_libraries(openshot-audio PRIVATE
|
|
winmm.lib
|
|
ws2_32.lib
|
|
wininet.lib
|
|
version.lib
|
|
Shlwapi.dll
|
|
)
|
|
endif()
|
|
|
|
if(APPLE)
|
|
set_target_properties(openshot-audio PROPERTIES
|
|
INSTALL_NAME_DIR "@rpath"
|
|
BUILD_WITH_INSTALL_RPATH ON
|
|
INSTALL_RPATH_USE_LINK_PATH ON
|
|
INSTALL_RPATH "@loader_path/../lib;@executable_path/../lib"
|
|
)
|
|
target_link_libraries(openshot-audio PRIVATE
|
|
"-framework Carbon"
|
|
"-framework Cocoa"
|
|
"-framework CoreFoundation"
|
|
"-framework CoreAudio"
|
|
"-framework CoreMidi"
|
|
"-framework IOKit"
|
|
"-framework AGL"
|
|
"-framework AudioToolbox"
|
|
"-framework QuartzCore"
|
|
"-framework Accelerate"
|
|
"-framework Security"
|
|
"-lobjc"
|
|
)
|
|
target_compile_options(openshot-audio PRIVATE
|
|
-flax-vector-conversions)
|
|
endif()
|
|
|
|
# ALSA (Linux only)
|
|
if(UNIX AND NOT APPLE)
|
|
set(NEED_ALSA TRUE)
|
|
find_package(ALSA REQUIRED)
|
|
if (ALSA_FOUND AND NOT TARGET ALSA::ALSA) # CMake < 3.12
|
|
add_library(ALSA::ALSA INTERFACE IMPORTED)
|
|
set_target_properties(ALSA::ALSA PROPERTIES
|
|
INTERFACE_INCLUDE_DIRECTORIES ${ALSA_INCLUDE_DIR}
|
|
INTERFACE_LINK_LIBRARIES ${ALSA_LIBRARIES})
|
|
endif()
|
|
target_compile_definitions(openshot-audio PUBLIC LINUX)
|
|
target_link_libraries(openshot-audio PUBLIC ALSA::ALSA)
|
|
else()
|
|
# For EXPORTED Config
|
|
set(NEED_ALSA FALSE)
|
|
endif()
|
|
|
|
# ZLIB -- uses IMPORTED target ZLIB::ZLIB which has existed since CMake 3.1
|
|
find_package(ZLIB REQUIRED)
|
|
target_link_libraries(openshot-audio PUBLIC ZLIB::ZLIB)
|
|
|
|
# Link with dynamic loader for platform
|
|
target_link_libraries(openshot-audio PUBLIC ${CMAKE_DL_LIBS})
|
|
|
|
# Create an alias so our EXPORT target name works internally, as well
|
|
add_library(OpenShot::Audio ALIAS openshot-audio)
|
|
|
|
# PROCESS SUB-DIRECTORIES
|
|
add_subdirectory(src)
|
|
|
|
###
|
|
###
|
|
### INSTALLATION
|
|
###
|
|
###
|
|
|
|
configure_file(
|
|
"${PROJECT_SOURCE_DIR}/cmake/Modules/FindASIO.cmake"
|
|
FindASIO.cmake @ONLY)
|
|
|
|
install(TARGETS openshot-audio
|
|
EXPORT OpenShotAudioTargets
|
|
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
|
|
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
|
|
INCLUDES DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libopenshot-audio
|
|
)
|
|
|
|
# Install all headers
|
|
install(FILES
|
|
${_extra_headers}
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libopenshot-audio
|
|
)
|
|
|
|
foreach(j_module IN LISTS JUCE_MODULES)
|
|
install(CODE "message(STATUS \"Installing ${j_module} headers\")")
|
|
install(DIRECTORY ${JUCE_MODULES_PATH}/${j_module}/
|
|
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libopenshot-audio/${j_module}
|
|
FILES_MATCHING PATTERN "*.h" )
|
|
endforeach()
|
|
|
|
# Install manpage
|
|
install(FILES
|
|
${CMAKE_CURRENT_SOURCE_DIR}/doc/openshot-audio-demo.1
|
|
DESTINATION ${CMAKE_INSTALL_MANDIR}/man1
|
|
)
|
|
|
|
# Export configuration to build tree
|
|
export(EXPORT OpenShotAudioTargets
|
|
FILE OpenShotAudioTargets.cmake
|
|
NAMESPACE OpenShot::
|
|
)
|
|
|
|
# Package the exported targets for external consumers
|
|
include(CMakePackageConfigHelpers)
|
|
|
|
set(CMAKECONFIG_INSTALL_DIR "${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME}"
|
|
CACHE STRING "install path for CMake configuration")
|
|
|
|
# Install EXPORTED configuration
|
|
install(
|
|
EXPORT OpenShotAudioTargets
|
|
FILE OpenShotAudioTargets.cmake
|
|
NAMESPACE OpenShot::
|
|
DESTINATION ${CMAKECONFIG_INSTALL_DIR}
|
|
)
|
|
configure_package_config_file(
|
|
cmake/Config.cmake.in
|
|
"${CMAKE_CURRENT_BINARY_DIR}/OpenShotAudioConfig.cmake"
|
|
INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
|
|
)
|
|
|
|
# Write version file for eported config
|
|
write_basic_package_version_file(
|
|
OpenShotAudioConfigVersion.cmake
|
|
VERSION "${PROJECT_VERSION}"
|
|
COMPATIBILITY AnyNewerVersion
|
|
)
|
|
|
|
# Export the configuration at install time
|
|
install(FILES
|
|
"${CMAKE_CURRENT_BINARY_DIR}/OpenShotAudioConfig.cmake"
|
|
"${CMAKE_CURRENT_BINARY_DIR}/OpenShotAudioConfigVersion.cmake"
|
|
DESTINATION ${CMAKECONFIG_INSTALL_DIR}
|
|
)
|
|
|
|
# Include our FindASIO module, which will be needed on Windows
|
|
install(FILES
|
|
"${PROJECT_SOURCE_DIR}/cmake/Modules/FindASIO.cmake"
|
|
DESTINATION ${CMAKECONFIG_INSTALL_DIR}
|
|
)
|
|
|
|
###
|
|
### DOCUMENTATION
|
|
###
|
|
|
|
set(CAN_BUILD_AUDIO_DOCS FALSE)
|
|
if(ENABLE_AUDIO_DOCS)
|
|
# Find Doxygen (used for documentation)
|
|
find_package(Doxygen)
|
|
|
|
if(DOXYGEN_FOUND)
|
|
set(CAN_BUILD_AUDIO_DOCS TRUE)
|
|
endif()
|
|
endif()
|
|
|
|
if(CAN_BUILD_AUDIO_DOCS)
|
|
set(DOXYGEN_QUIET YES)
|
|
set(DOXYGEN_PROJECT_NAME "OpenShot Audio Library | ${PROJECT_NAME}")
|
|
set(DOXYGEN_PROJECT_NUMBER "${PROJECT_VERSION_FULL}")
|
|
set(DOXYGEN_OUTPUT_DIRECTORY "${PROJECT_BINARY_DIR}/doc")
|
|
set(DOXYGEN_STRIP_FROM_PATH "${PROJECT_BINARY_DIR}/processed_source")
|
|
set(DOXYGEN_USE_MDFILE_AS_MAINPAGE "${PROJECT_SOURCE_DIR}/INSTALL.md")
|
|
|
|
set(DOXYGEN_FILE_PATTERNS
|
|
"juce_*.h"
|
|
"juce_*.cpp"
|
|
"*.md"
|
|
)
|
|
|
|
set(DOXYGEN_INLINE_SIMPLE_STRUCTS YES)
|
|
set(DOXYGEN_FULL_PATH_NAMES NO)
|
|
set(DOXYGEN_EXTRACT_ALL NO)
|
|
set(DOXYGEN_HIDE_UNDOC_CLASSES YES)
|
|
set(DOXYGEN_HIDE_FRIEND_COMPOUNDS YES)
|
|
set(DOXYGEN_HIDE_IN_BODY_DOCS YES)
|
|
set(DOXYGEN_SORT_BRIEF_DOCS NO)
|
|
set(DOXYGEN_INTERNAL_DOCS YES)
|
|
set(DOXYGEN_GENERATE_TODOLIST NO)
|
|
set(DOXYGEN_GENERATE_TESTLIST NO)
|
|
set(DOXYGEN_GENERATE_BUGLIST NO)
|
|
|
|
set(DOXYGEN_WARNINGS NO)
|
|
set(DOXYGEN_WARN_IF_UNDOCUMENTED NO)
|
|
set(DOXYGEN_RECURSIVE YES)
|
|
set(DOXYGEN_SOURCE_BROWSER YES)
|
|
set(DOXYGEN_REFERENCED_BY_RELATION YES)
|
|
|
|
set(DOXYGEN_GENERATE_HTML YES)
|
|
set(DOXYGEN_HTML_OUTPUT "html")
|
|
set(DOXYGEN_HTML_DYNAMIC_SECTIONS NO)
|
|
set(DOXYGEN_GENERATE_TREEVIEW YES)
|
|
|
|
set(DOXYGEN_DOT_IMAGE_FORMAT svg)
|
|
set(DOXYGEN_INTERACTIVE_SVG YES)
|
|
set(DOXYGEN_DOT_TRANSPARENT YES)
|
|
set(DOXYGEN_GRAPHICAL_HIERARCHY NO)
|
|
|
|
set(DOXYGEN_EXCLUDE
|
|
"${JUCE_MODULES_PATH}/juce_core/zip/zlib"
|
|
"${JUCE_MODULES_PATH}/juce_audio_formats/codecs/flac"
|
|
"${JUCE_MODULES_PATH}/juce_audio_formats/codecs/oggvorbis"
|
|
"${JUCE_MODULES_PATH}/juce_audio_devices/native"
|
|
"${JUCE_MODULES_PATH}/juce_core/native"
|
|
"${JUCE_MODULES_PATH}/juce_events/native"
|
|
)
|
|
set(DOXYGEN_EXCLUDE_PATTERNS
|
|
[["*/.*"]]
|
|
[["*/.*/*"]]
|
|
juce_CompilerSupport.h
|
|
juce_StdFunctionCompat.h
|
|
juce_FlacHeader.h
|
|
)
|
|
|
|
set(DOXYGEN_ALIASES
|
|
tags{1}=
|
|
[[topictag{1}=\1]]
|
|
[["box{1}=<dl class=\"section attention\"><dt>\1</dt><dd>"]]
|
|
endbox=</dd></dl>
|
|
c_void=@s_code{void}
|
|
c_bool=@s_code{bool}
|
|
c_char=@s_code{char}
|
|
c_float=@s_code{float}
|
|
c_double=@s_code{double}
|
|
c_int=@s_code{int}
|
|
c_nullptr=@s_code{nullptr}
|
|
[[c_for=@s_code{for()}]]
|
|
[[c_if=@s_code{if()}]]
|
|
c_ifelse=@s_code{if..else}
|
|
[[c_while=@s_code{while()}]]
|
|
c_true=@s_code{true}
|
|
c_false=@s_code{false}
|
|
c_enum=@s_code{enum}
|
|
c_switch=@s_code{switch..case}
|
|
c_static=@s_code{static}
|
|
c_new=@s_code{new}
|
|
c_typedef=@s_code{typedef}
|
|
)
|
|
set(DOXYGEN_VERBATIM_VARS
|
|
DOXYGEN_ALIASES
|
|
DOXYGEN_EXCLUDE_PATTERNS
|
|
)
|
|
|
|
doxygen_add_docs(${PROJECT_NAME}-doc
|
|
${JUCE_MODULES_PATH}
|
|
${PROJECT_BINARY_DIR}/include
|
|
${PROJECT_SOURCE_DIR}/INSTALL.md
|
|
${PROJECT_SOURCE_DIR}/doc
|
|
COMMENT "Generate ${PROJECT_NAME} documentation"
|
|
)
|
|
endif()
|
|
|
|
if(NOT TARGET doc)
|
|
if(CAN_BUILD_AUDIO_DOCS AND AUTO_INSTALL_DOCS)
|
|
add_custom_target(doc ALL)
|
|
else()
|
|
add_custom_target(doc)
|
|
endif()
|
|
endif()
|
|
if(TARGET doc AND TARGET ${PROJECT_NAME}-doc)
|
|
add_dependencies(doc ${PROJECT_NAME}-doc)
|
|
endif()
|
|
|
|
# Install docs, automatically if possible
|
|
if (TARGET ${PROJECT_NAME}-doc)
|
|
if(NOT AUTO_INSTALL_DOCS)
|
|
set(DOCS_AUTO_INSTALL_ARG EXCLUDE_FROM_ALL)
|
|
endif()
|
|
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/doc/html/
|
|
DESTINATION ${CMAKE_INSTALL_DOCDIR}/API
|
|
MESSAGE_NEVER # Don't spew about file copies
|
|
COMPONENT "Documentation"
|
|
${DOCS_AUTO_INSTALL_ARG}
|
|
OPTIONAL # No error if the docs aren't found
|
|
)
|
|
endif()
|
|
add_feature_info("${PROJECT_NAME} docs" CAN_BUILD_AUDIO_DOCS "Build API documentation")
|
|
|
|
###
|
|
### PRINT FEATURE SUMMARY
|
|
###
|
|
feature_summary(WHAT ALL
|
|
INCLUDE_QUIET_PACKAGES
|
|
FATAL_ON_MISSING_REQUIRED_PACKAGES
|
|
DESCRIPTION "${PROJECT_NAME} build configuration:"
|
|
)
|