Set CMake up for FetchContent

nix
Owen Green 6 years ago
parent d6fe4f705a
commit 3904590dbf

@ -1,22 +1,29 @@
####### original SC Cmake file starts here
cmake_minimum_required(VERSION 3.3)
cmake_minimum_required(VERSION 3.11)
################################################################################
# Paths
set(CMAKE_INSTALL_PREFIX "${CMAKE_CURRENT_SOURCE_DIR}/release-packaging")
set(MAX_TARGET_NAMESPACE "" CACHE STRING "Optional namesapce to prepend to targets to prevent collision in super-builds")
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_STANDARD 14)
set(CMAKE_CXX_EXTENSIONS OFF)
if(APPLE)
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -mavx -msse -msse2 -msse3 -msse4")
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -stdlib=libc++")
SET(CMAKE_XCODE_ATTRIBUTE_CLANG_CXX_LIBRARY "libc++")
set(CMAKE_OSX_DEPLOYMENT_TARGET "10.7" CACHE STRING "Minimum OS X deployment version")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic")
set(SC_PATH "" CACHE PATH "Path to the top of SuperCollider source tree")
if(NOT SC_PATH)
message(FATAL_ERROR "SuperCollider source path is not set")
endif()
project (fluid_decomposition_supercollider LANGUAGES CXX)
set(FLUID_PATH "" CACHE PATH "Optional path to the Fluid Decomposition repo")
# set(FLUID_M_PATH "" CACHE PATH "Optional path to the Fluid fluid_manipulation repo")
if (APPLE)
set(CMAKE_OSX_ARCHITECTURES x86_64)
set(CMAKE_XCODE_GENERATE_SCHEME ON)
endif()
option(SUPERNOVA "Build plugins for supernova" OFF)
################################################################################
# Main project
project (fluid_decomposition_supercollider LANGUAGES CXX)
set_property(GLOBAL PROPERTY USE_FOLDERS ON)
set(CMAKE_XCODE_GENERATE_TOP_LEVEL_PROJECT_ONLY ON)
MACRO(SUBDIRLIST result curdir)
FILE(GLOB children RELATIVE ${curdir} ${curdir}/*)
@ -33,37 +40,16 @@ include(FetchContent)
set(FETCHCONTENT_QUIET FALSE)
if(DEFINED FLUID_PATH)
get_filename_component(FLUID_PATH ${FLUID_PATH} ABSOLUTE)
message(${FLUID_PATH})
FetchContent_Declare(
fluid_decomposition
# URL ${FLUID_PATH}
DOWNLOAD_COMMAND ""
SOURCE_DIR "${FLUID_PATH}/"
)
else()
FetchContent_Declare(
fluid_decomposition
GIT_REPOSITORY https://bitbucket.org/flucoma/fluid_decomposition.git
GIT_PROGRESS TRUE
)
endif()
if(DEFINED FLUID_M_PATH)
get_filename_component(FLUID_M_PATH ${FLUID_M_PATH} ABSOLUTE)
FetchContent_Declare(
fluid_manipulation
# URL ${FLUID_M_PATH}
DOWNLOAD_COMMAND ""
SOURCE_DIR "${FLUID_M_PATH}/"
)
else()
FetchContent_Declare(
fluid_manipulation
GIT_REPOSITORY https://bitbucket.org/flucoma/fluid_manipulation.git
GIT_PROGRESS TRUE
)
if(FLUID_PATH)
get_filename_component(
FETCHCONTENT_SOURCE_DIR_FLUID_DECOMPOSITION ${FLUID_PATH} ABSOLUTE
)
endif()
FetchContent_GetProperties(fluid_decomposition)
@ -72,37 +58,25 @@ if(NOT fluid_decomposition_POPULATED)
add_subdirectory(${fluid_decomposition_SOURCE_DIR} ${fluid_decomposition_BINARY_DIR})
endif()
FetchContent_GetProperties(fluid_manipulation)
if(NOT fluid_manipulation_POPULATED)
FetchContent_Populate(fluid_manipulation)
add_subdirectory(${fluid_manipulation_SOURCE_DIR} ${fluid_manipulation_BINARY_DIR})
endif()
if (NOT (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/release-packaging/AudioFiles/"))
file(MAKE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/release-packaging/AudioFiles/")
endif()
file(COPY "${fluid_decomposition_SOURCE_DIR}/AudioFiles/" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/release-packaging/AudioFiles/")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/release-packaging/plugins")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_SYSTEM_NAME}/plugins")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
set(CMAKE_SHARED_MODULE_PREFIX "")
if(APPLE OR WIN32)
set(CMAKE_SHARED_MODULE_SUFFIX ".scx")
set(CMAKE_SHARED_MODULE_SUFFIX ".scx")
endif()
#needed for complaint-free static linking with GCC
if(CMAKE_COMPILER_IS_GNUCXX)
target_compile_options( HISSTools_FFT PUBLIC -fPIC )
ENDIF(CMAKE_COMPILER_IS_GNUCXX)
target_compile_options( HISSTools_FFT PUBLIC -fPIC )
ENDIF()
add_library(FLUID_SC_WRAPPER INTERFACE)
target_sources(FLUID_SC_WRAPPER
INTERFACE
"${CMAKE_CURRENT_SOURCE_DIR}/include/FluidSCWrapper.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/include/SCBufferAdaptor.hpp"
target_sources(FLUID_SC_WRAPPER
INTERFACE
"${CMAKE_CURRENT_SOURCE_DIR}/include/FluidSCWrapper.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/include/SCBufferAdaptor.hpp"
)
SUBDIRLIST(PROJECT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src")
@ -112,3 +86,17 @@ foreach (project_dir ${PROJECT_DIRS})
add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/${project_dir}")
endif ()
endforeach ()
#install bits.
set(SC_INSTALL_PREFIX "." CACHE PATH "Prefix for assembling PD packages")
set(FLUID_PACKAGE_NAME FluidCorpusManipulation CACHE STRING "Name for published package")
set(SC_PACKAGE_ROOT ${SC_INSTALL_PREFIX}/${FLUID_PACKAGE_NAME})
foreach(PACKAGE_DIRECTORY Classes;HelpSource;ignore)
install(DIRECTORY "release-packaging/${PACKAGE_DIRECTORY}" DESTINATION ${SC_PACKAGE_ROOT})
endforeach()
install(DIRECTORY CMAKE_LIBRARY_OUTPUT_DIRECTORY DESTINATION plugins PATTERN "*.ilk" EXCLUDE PATTERN "*.PDB" EXCLUDE)
install(DIRECTORY "${fluid_decomposition_SOURCE_DIR}/AudioFiles/" DESTINATION ./AudioFiles)
install(FILES QuickStart.md DESTINATION .)

@ -1,10 +1,12 @@
target_compile_features(${PLUGIN} PUBLIC cxx_std_14)
target_compile_features(${PLUGIN} PRIVATE cxx_std_14)
if(MSVC)
target_compile_options(${PLUGIN} PRIVATE /W4)
target_compile_options(${PLUGIN} PRIVATE /W3)
else()
target_compile_options(${PLUGIN} PRIVATE -Wall -Wextra -Wpedantic -Wreturn-type -Wconversion)
target_compile_options(${PLUGIN} PRIVATE
-Wall -Wextra -Wpedantic -Wreturn-type -Wconversion -Wno-conversion -Wno-c++11-narrowing -Wno-sign-compare
)
endif()
set_target_properties(${PLUGIN} PROPERTIES
@ -15,15 +17,13 @@ set_target_properties(${PLUGIN} PROPERTIES
target_link_libraries(
${PLUGIN}
PUBLIC
FLUID_DECOMPOSITION
FLUID_MANIP
FLUID_SC_WRAPPER
PRIVATE
FLUID_DECOMPOSITION
# FLUID_MANIP
FLUID_SC_WRAPPER
HISSTools_FFT
)
target_include_directories(
${PLUGIN}
PRIVATE
@ -42,38 +42,18 @@ target_include_directories(
get_property(HEADERS TARGET FLUID_DECOMPOSITION PROPERTY INTERFACE_SOURCES)
source_group(TREE "${fluid_decomposition_SOURCE_DIR}/include" FILES ${HEADERS})
get_property(HEADERS TARGET FLUID_MANIP PROPERTY INTERFACE_SOURCES)
source_group(TREE "${fluid_manipulation_SOURCE_DIR}/include" FILES ${HEADERS})
if (SUPERNOVA)
target_include_directories(
${PLUGIN}
SYSTEM PRIVATE
"${SC_PATH}/external_libraries/nova-tt"
"${SC_PATH}/external_libraries/boost_lockfree"
"${SC_PATH}/external_libraries/boost-lockfree"
)
endif()
if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANG)
target_compile_options(${PLUGIN} PRIVATE -fvisibility=hidden)
include (CheckCXXCompilerFlag)
# CHECK_CXX_COMPILER_FLAG(-msse HAS_CXX_SSE)
# CHECK_CXX_COMPILER_FLAG(-msse2 HAS_CXX_SSE2)
# CHECK_CXX_COMPILER_FLAG(-mfpmath=sse HAS_CXX_FPMATH_SSE)
# CHECK_CXX_COMPILER_FLAG(-mavx HAS_AVX)
# CHECK_CXX_COMPILER_FLAG(-mavx2 HAS_AVX2)
target_compile_options(
${PLUGIN}
PRIVATE
$<$<NOT:$<CONFIG:DEBUG>>: -mavx>
)
endif()
# get_property(HEADERS TARGET FLUID_MANIP PROPERTY INTERFACE_SOURCES)
# source_group(TREE "${fluid_manipulation_SOURCE_DIR}/include" FILES ${HEADERS})
#
# if (SUPERNOVA)
# target_include_directories(
# ${PLUGIN}
# SYSTEM PRIVATE
# "${SC_PATH}/external_libraries/nova-tt"
# "${SC_PATH}/external_libraries/boost_lockfree"
# "${SC_PATH}/external_libraries/boost-lockfree"
# )
# endif()
if(MINGW)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mstackrealign")
@ -82,16 +62,8 @@ endif()
if(MSVC)
target_compile_options(${PLUGIN} PRIVATE /arch:AVX -D_USE_MATH_DEFINES)
else(MSVC)
target_compile_options(
${PLUGIN} PRIVATE $<$<NOT:$<CONFIG:DEBUG>>: -mavx>
)
endif(MSVC)
####### added the fluid_decomposition
# if(SUPERNOVA)
# add_library(${PLUGIN}_supernova MODULE ${FILENAME})
# set_property(TARGET ${PROJECT}_supernova
# PROPERTY COMPILE_DEFINITIONS SUPERNOVA)
# endif()
else()
target_compile_options(
${PLUGIN} PRIVATE $<$<NOT:$<CONFIG:DEBUG>>: -mavx> -fvisibility=hidden
)
endif()

Loading…
Cancel
Save