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.11)
cmake_minimum_required(VERSION 3.3)
################################################################################
# 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(SC_PATH "" CACHE PATH "Path to the top of SuperCollider source tree")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -stdlib=libc++ -mavx -msse -msse2 -msse3 -msse4") if(NOT SC_PATH)
set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -stdlib=libc++") message(FATAL_ERROR "SuperCollider source path is not set")
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")
endif() 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) MACRO(SUBDIRLIST result curdir)
FILE(GLOB children RELATIVE ${curdir} ${curdir}/*) FILE(GLOB children RELATIVE ${curdir} ${curdir}/*)
@ -33,37 +40,16 @@ include(FetchContent)
set(FETCHCONTENT_QUIET FALSE) 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( FetchContent_Declare(
fluid_decomposition fluid_decomposition
GIT_REPOSITORY https://bitbucket.org/flucoma/fluid_decomposition.git GIT_REPOSITORY https://bitbucket.org/flucoma/fluid_decomposition.git
GIT_PROGRESS TRUE GIT_PROGRESS TRUE
) )
endif()
if(DEFINED FLUID_M_PATH) if(FLUID_PATH)
get_filename_component(FLUID_M_PATH ${FLUID_M_PATH} ABSOLUTE) get_filename_component(
FetchContent_Declare( FETCHCONTENT_SOURCE_DIR_FLUID_DECOMPOSITION ${FLUID_PATH} ABSOLUTE
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
)
endif() endif()
FetchContent_GetProperties(fluid_decomposition) FetchContent_GetProperties(fluid_decomposition)
@ -72,37 +58,25 @@ if(NOT fluid_decomposition_POPULATED)
add_subdirectory(${fluid_decomposition_SOURCE_DIR} ${fluid_decomposition_BINARY_DIR}) add_subdirectory(${fluid_decomposition_SOURCE_DIR} ${fluid_decomposition_BINARY_DIR})
endif() endif()
FetchContent_GetProperties(fluid_manipulation) set(CMAKE_LIBRARY_OUTPUT_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/${CMAKE_SYSTEM_NAME}/plugins")
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_DEBUG "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_DEBUG "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}") set(CMAKE_LIBRARY_OUTPUT_DIRECTORY_RELEASE "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
set(CMAKE_SHARED_MODULE_PREFIX "") set(CMAKE_SHARED_MODULE_PREFIX "")
if(APPLE OR WIN32) if(APPLE OR WIN32)
set(CMAKE_SHARED_MODULE_SUFFIX ".scx") set(CMAKE_SHARED_MODULE_SUFFIX ".scx")
endif() endif()
#needed for complaint-free static linking with GCC #needed for complaint-free static linking with GCC
if(CMAKE_COMPILER_IS_GNUCXX) if(CMAKE_COMPILER_IS_GNUCXX)
target_compile_options( HISSTools_FFT PUBLIC -fPIC ) target_compile_options( HISSTools_FFT PUBLIC -fPIC )
ENDIF(CMAKE_COMPILER_IS_GNUCXX) ENDIF()
add_library(FLUID_SC_WRAPPER INTERFACE) add_library(FLUID_SC_WRAPPER INTERFACE)
target_sources(FLUID_SC_WRAPPER target_sources(FLUID_SC_WRAPPER
INTERFACE INTERFACE
"${CMAKE_CURRENT_SOURCE_DIR}/include/FluidSCWrapper.hpp" "${CMAKE_CURRENT_SOURCE_DIR}/include/FluidSCWrapper.hpp"
"${CMAKE_CURRENT_SOURCE_DIR}/include/SCBufferAdaptor.hpp" "${CMAKE_CURRENT_SOURCE_DIR}/include/SCBufferAdaptor.hpp"
) )
SUBDIRLIST(PROJECT_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/src") 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}") add_subdirectory("${CMAKE_CURRENT_SOURCE_DIR}/src/${project_dir}")
endif () endif ()
endforeach () 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) if(MSVC)
target_compile_options(${PLUGIN} PRIVATE /W4) target_compile_options(${PLUGIN} PRIVATE /W3)
else() 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() endif()
set_target_properties(${PLUGIN} PROPERTIES set_target_properties(${PLUGIN} PROPERTIES
@ -15,15 +17,13 @@ set_target_properties(${PLUGIN} PROPERTIES
target_link_libraries( target_link_libraries(
${PLUGIN} ${PLUGIN}
PUBLIC PRIVATE
FLUID_DECOMPOSITION FLUID_DECOMPOSITION
FLUID_MANIP # FLUID_MANIP
FLUID_SC_WRAPPER FLUID_SC_WRAPPER
PRIVATE
HISSTools_FFT HISSTools_FFT
) )
target_include_directories( target_include_directories(
${PLUGIN} ${PLUGIN}
PRIVATE PRIVATE
@ -42,38 +42,18 @@ target_include_directories(
get_property(HEADERS TARGET FLUID_DECOMPOSITION PROPERTY INTERFACE_SOURCES) get_property(HEADERS TARGET FLUID_DECOMPOSITION PROPERTY INTERFACE_SOURCES)
source_group(TREE "${fluid_decomposition_SOURCE_DIR}/include" FILES ${HEADERS}) source_group(TREE "${fluid_decomposition_SOURCE_DIR}/include" FILES ${HEADERS})
get_property(HEADERS TARGET FLUID_MANIP PROPERTY INTERFACE_SOURCES) # get_property(HEADERS TARGET FLUID_MANIP PROPERTY INTERFACE_SOURCES)
source_group(TREE "${fluid_manipulation_SOURCE_DIR}/include" FILES ${HEADERS}) # source_group(TREE "${fluid_manipulation_SOURCE_DIR}/include" FILES ${HEADERS})
#
if (SUPERNOVA) # if (SUPERNOVA)
target_include_directories( # target_include_directories(
${PLUGIN} # ${PLUGIN}
SYSTEM PRIVATE # SYSTEM PRIVATE
"${SC_PATH}/external_libraries/nova-tt" # "${SC_PATH}/external_libraries/nova-tt"
"${SC_PATH}/external_libraries/boost_lockfree" # "${SC_PATH}/external_libraries/boost_lockfree"
"${SC_PATH}/external_libraries/boost-lockfree" # "${SC_PATH}/external_libraries/boost-lockfree"
) # )
endif() # 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()
if(MINGW) if(MINGW)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mstackrealign") set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mstackrealign")
@ -82,16 +62,8 @@ endif()
if(MSVC) if(MSVC)
target_compile_options(${PLUGIN} PRIVATE /arch:AVX -D_USE_MATH_DEFINES) target_compile_options(${PLUGIN} PRIVATE /arch:AVX -D_USE_MATH_DEFINES)
else(MSVC) else()
target_compile_options( target_compile_options(
${PLUGIN} PRIVATE $<$<NOT:$<CONFIG:DEBUG>>: -mavx> ${PLUGIN} PRIVATE $<$<NOT:$<CONFIG:DEBUG>>: -mavx> -fvisibility=hidden
) )
endif(MSVC) endif()
####### added the fluid_decomposition
# if(SUPERNOVA)
# add_library(${PLUGIN}_supernova MODULE ${FILENAME})
# set_property(TARGET ${PROJECT}_supernova
# PROPERTY COMPILE_DEFINITIONS SUPERNOVA)
# endif()

Loading…
Cancel
Save