amuse/CMakeLists.txt

180 lines
4.8 KiB
CMake
Raw Permalink Normal View History

2017-11-13 20:52:03 -08:00
cmake_minimum_required(VERSION 3.10 FATAL_ERROR) # because of c++17
project(amuse)
2021-01-23 16:27:34 -08:00
if(POLICY CMP0072)
cmake_policy(SET CMP0072 NEW)
endif()
2020-04-10 21:59:16 -07:00
if (NOT MSVC)
set(CMAKE_CXX_STANDARD 20)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
endif()
if(NOT MSVC)
add_compile_options(-Wno-narrowing)
endif()
2016-07-18 10:52:17 -07:00
if(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/boo AND EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/athena)
message(STATUS "Preparing standalone build")
add_subdirectory(boo)
2016-07-18 10:52:17 -07:00
add_subdirectory(athena)
endif()
2023-09-20 10:59:52 -07:00
option(AMUSE_BUILD_EDITOR "Build Amuse with editor enabled (includes VST)" ON)
2023-01-11 12:49:43 -08:00
add_library(amuse
lib/AudioGroup.cpp
lib/AudioGroupData.cpp
lib/AudioGroupPool.cpp
lib/AudioGroupProject.cpp
lib/AudioGroupSampleDirectory.cpp
lib/Common.cpp
lib/ContainerRegistry.cpp
lib/DirectoryEnumerator.cpp
lib/DSPCodec.cpp
lib/EffectChorus.cpp
lib/EffectDelay.cpp
lib/EffectReverb.cpp
lib/Emitter.cpp
lib/Engine.cpp
lib/Envelope.cpp
lib/Listener.cpp
lib/N64MusyXCodec.cpp
lib/Sequencer.cpp
lib/SongConverter.cpp
lib/SongState.cpp
lib/SoundMacroState.cpp
lib/Studio.cpp
lib/Submix.cpp
lib/Voice.cpp
lib/VolumeTable.cpp
include/amuse/amuse.hpp
include/amuse/AudioGroup.hpp
include/amuse/AudioGroupData.hpp
include/amuse/AudioGroupPool.hpp
include/amuse/AudioGroupProject.hpp
include/amuse/AudioGroupSampleDirectory.hpp
include/amuse/Common.hpp
include/amuse/ContainerRegistry.hpp
include/amuse/DirectoryEnumerator.hpp
include/amuse/DSPCodec.hpp
include/amuse/EffectBase.hpp
include/amuse/EffectChorus.hpp
include/amuse/EffectDelay.hpp
include/amuse/EffectReverb.hpp
include/amuse/Emitter.hpp
include/amuse/Engine.hpp
include/amuse/Entity.hpp
include/amuse/Envelope.hpp
include/amuse/IBackendSubmix.hpp
include/amuse/IBackendVoice.hpp
include/amuse/IBackendVoiceAllocator.hpp
include/amuse/Listener.hpp
include/amuse/N64MusyXCodec.hpp
include/amuse/Sequencer.hpp
include/amuse/SongConverter.hpp
include/amuse/SoundMacroState.hpp
include/amuse/SongState.hpp
include/amuse/Submix.hpp
include/amuse/Studio.hpp
include/amuse/Voice.hpp
include/amuse/VolumeTable.hpp
)
2019-06-11 19:02:52 -07:00
target_include_directories(amuse PUBLIC include)
target_link_libraries(amuse
athena-core
lzokay
2021-01-06 17:27:57 -08:00
logvisor
fmt
${ZLIB_LIBRARIES}
)
2021-01-06 17:27:57 -08:00
target_atdna(amuse atdna_AudioGroupPool.cpp include/amuse/AudioGroupPool.hpp)
target_atdna(amuse atdna_AudioGroupProject.cpp include/amuse/AudioGroupProject.hpp)
target_atdna(amuse atdna_AudioGroupSampleDirectory.cpp include/amuse/AudioGroupSampleDirectory.hpp)
if(NX)
target_sources(amuse PRIVATE include/switch_math.hpp)
endif()
2019-06-11 19:02:52 -07:00
if(TARGET boo)
target_sources(amuse PRIVATE lib/BooBackend.cpp include/amuse/BooBackend.hpp)
target_link_libraries(amuse boo)
endif()
if (MSVC)
target_compile_options(amuse PRIVATE
# Enforce various standards compliant behavior.
2020-04-10 21:59:16 -07:00
$<$<COMPILE_LANGUAGE:CXX>:/permissive->
# Enable standard volatile semantics.
2020-04-10 21:59:16 -07:00
$<$<COMPILE_LANGUAGE:CXX>:/volatile:iso>
# Reports the proper value for the __cplusplus preprocessor macro.
2020-04-10 21:59:16 -07:00
$<$<COMPILE_LANGUAGE:CXX>:/Zc:__cplusplus>
2020-04-10 21:59:16 -07:00
# Use latest C++ standard.
$<$<COMPILE_LANGUAGE:CXX>:/std:c++latest>
)
2020-04-10 21:59:16 -07:00
if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
# Flags for MSVC (not clang-cl)
target_compile_options(amuse PRIVATE
# Allow constexpr variables to have explicit external linkage.
$<$<COMPILE_LANGUAGE:CXX>:/Zc:externConstexpr>
# Assume that new throws exceptions, allowing better code generation.
$<$<COMPILE_LANGUAGE:CXX>:/Zc:throwingNew>
)
endif()
else()
2019-06-11 19:02:52 -07:00
target_compile_options(amuse PRIVATE -Wno-unknown-pragmas)
endif()
2017-12-11 18:05:54 -08:00
if(COMMAND add_sanitizers)
add_sanitizers(amuse)
endif()
2016-05-09 00:22:58 -07:00
2018-10-06 19:54:56 -07:00
if(TARGET boo AND NOT WINDOWS_STORE AND NOT NX)
# AudioUnit Target (OS X only)
add_subdirectory(AudioUnit)
# VST Target
add_subdirectory(VST)
# Multi-platform CLI tools
# Player
add_executable(amuseplay WIN32 driver/amuseplay.cpp)
2019-06-11 19:02:52 -07:00
target_link_libraries(amuseplay amuse logvisor)
# Converter
add_executable(amuseconv driver/amuseconv.cpp)
2019-06-11 19:02:52 -07:00
target_link_libraries(amuseconv amuse logvisor)
2016-07-06 14:30:46 -07:00
# Renderer
add_executable(amuserender driver/amuserender.cpp)
2019-06-11 19:02:52 -07:00
target_link_libraries(amuserender amuse logvisor)
2018-03-14 17:25:29 -07:00
2018-05-06 16:06:49 -07:00
if(COMMAND add_sanitizers)
add_sanitizers(amuseplay)
add_sanitizers(amuseconv)
add_sanitizers(amuserender)
endif()
2018-03-14 17:25:29 -07:00
# Editor
2021-01-23 16:27:34 -08:00
find_package(Qt6 COMPONENTS Widgets PATHS /usr/local/opt/qt)
2023-01-11 12:49:43 -08:00
if (Qt6Widgets_FOUND AND AMUSE_BUILD_EDITOR)
2021-01-23 16:27:34 -08:00
message(STATUS "Qt6 found, amuse-gui will be built")
2018-03-14 17:25:29 -07:00
add_subdirectory(Editor)
else()
2023-01-11 12:49:43 -08:00
if (NOT AMUSE_BUILD_EDITOR)
message(STATUS "amuse-gui has been disabled and will not be built, to enable pass `-DAMUSE_BUILD_EDITOR=ON` to cmake")
else()
message(STATUS "Qt6 not found, amuse-gui will not be built")
endif()
2018-03-14 17:25:29 -07:00
endif()
2016-05-09 00:22:58 -07:00
endif()