@ -1,22 +1,29 @@
# # # # # # # o r i g i n a l S C C m a k e f i l e s t a r t s h e r e
cmake_minimum_required ( VERSION 3.3 )
cmake_minimum_required ( VERSION 3.11 )
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# P a t h s
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 )
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 ( )
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_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 ( CMAKE_OSX_ARCHITECTURES x86_64 )
set ( CMAKE_XCODE_GENERATE_SCHEME ON )
endif ( )
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# M a i n p r o j e c t
project ( fluid_decomposition_supercollider LANGUAGES CXX )
option( SUPERNOVA "Build plugins for supernova" OFF )
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 } /* )
@ -29,61 +36,48 @@ MACRO(SUBDIRLIST result curdir)
SET ( ${ result } ${ dirlist } )
ENDMACRO ( )
set ( FLUID_PATH ~/fluid_decomposition CACHE PATH "The top level of the fluid_decomposition repo" )
set ( LOCAL_INCLUDES "${CMAKE_CURRENT_SOURCE_DIR}/include" )
include ( FetchContent )
set ( FETCHCONTENT_QUIET FALSE )
get_filename_component( FLUID_ABS_PATH "${FLUID_PATH}" ABSOLUTE )
message ( "${FLUID_ABS_PATH}" )
# if ( NOT DEFINED ${ FLUID_DECOMP_PATH } )
# message ( FATAL_ERROR "Please set the path to the fluid_decomposition sources with -DFLUID_DECOMP_PATH=<path>" )
# endif ( )
FetchContent_Declare(
f l u i d _ d e c o m p o s i t i o n
G I T _ R E P O S I T O R Y h t t p s : / / b i t b u c k e t . o r g / f l u c o m a / f l u i d _ d e c o m p o s i t i o n . g i t
G I T _ P R O G R E S S T R U E
)
if ( NOT ( EXISTS "${FLUID_ABS_PATH}/build/fluid_decomposition-exports.cmake" ) )
message ( FATAL_ERROR "Can't find the fluid_decomposition CMake targets file at ${FLUID_ABS_PATH}/build/fluid_decomposition-exports.cmake. Please go to ${FLUID_ABS_PATH}/build and run CMake" )
if ( FLUID_PATH )
get_filename_component (
F E T C H C O N T E N T _ S O U R C E _ D I R _ F L U I D _ D E C O M P O S I T I O N $ { F L U I D _ P A T H } A B S O L U T E
)
endif ( )
if ( NOT ( EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/release-packaging/AudioFiles/" ) )
file ( MAKE_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/release-packaging/AudioFiles/" )
FetchContent_GetProperties ( fluid_decomposition )
if ( NOT fluid_decomposition_POPULATED )
FetchContent_Populate ( fluid_decomposition )
add_subdirectory ( ${ fluid_decomposition_SOURCE_DIR } ${ fluid_decomposition_BINARY_DIR } )
endif ( )
file ( COPY "${FLUID_ABS_PATH}/AudioFiles/" DESTINATION "${CMAKE_CURRENT_SOURCE_DIR}/release-packaging/AudioFiles/" )
include ( "${FLUID_ABS_PATH}/build/fluid_decomposition-exports.cmake" )
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" )
endif ( )
get_property ( FFT_SOURCES TARGET HISSTools_FFT PROPERTY INTERFACE_SOURCES )
get_property ( FFT_LINK TARGET HISSTools_FFT PROPERTY INTERFACE_LINK_LIBRARIES )
add_library ( FFTLIB STATIC ${ FFT_SOURCES } )
target_link_libraries (
F F T L I B P R I V A T E $ { F F T _ L I N K }
)
if ( WIN32 )
target_compile_options (
F F T L I B P R I V A T E $ < $ < N O T : $ < C O N F I G : D E B U G > > : / a r c h : A V X >
)
else ( WIN32 )
target_compile_options (
F F T L I B P R I V A T E $ < $ < N O T : $ < C O N F I G : D E B U G > > : - m a v x - m s s e - m s s e 2 - m s s e 3 - m s s e 4 >
)
endif ( WIN32 )
# n e e d e d f o r c o m p l a i n t - f r e e s t a t i c l i n k i n g w i t h G C C
if ( CMAKE_COMPILER_IS_GNUCXX )
target_compile_options ( FFTLIB PUBLIC -fPIC )
ENDIF ( CMAKE_COMPILER_IS_GNUCXX )
target_compile_options ( HISSTools_FFT PUBLIC -fPIC )
ENDIF ( )
add_library ( FLUID_SC_WRAPPER INTERFACE )
target_include_directories ( FLUID_SC_WRAPPER
I N T E R F A C E
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / i n c l u d e / "
)
target_sources ( FLUID_SC_WRAPPER
I N T E R F A C E
" $ { C M A K E _ C U R R E N T _ S O U R C E _ D I R } / i n c l u d e / F l u i d S C W r a p p e r . h p p "
@ -97,3 +91,17 @@ foreach (project_dir ${PROJECT_DIRS})
add_subdirectory ( "${CMAKE_CURRENT_SOURCE_DIR}/src/${project_dir}" )
endif ( )
endforeach ( )
# i n s t a l l b i t s .
set ( SC_INSTALL_PREFIX "." CACHE PATH "Prefix for assembling SC 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 ${ SC_PACKAGE_ROOT } PATTERN "*.ilk" EXCLUDE PATTERN "*.PDB" EXCLUDE )
install ( DIRECTORY "${fluid_decomposition_SOURCE_DIR}/AudioFiles" DESTINATION ${ SC_PACKAGE_ROOT } )
install ( FILES QuickStart.md DESTINATION ${ SC_PACKAGE_ROOT } )