From 097f0a0f7ef6c5aaebcabd18f65f0e955b2c566d Mon Sep 17 00:00:00 2001 From: Owen Green Date: Sun, 26 Aug 2018 01:24:33 +0100 Subject: [PATCH] Added top level CMakeLists that builds all plugs, using targets from fluid_decomposition Adjusted plugin CMakeLists and changed directory structure Unified release packaging --- CMakeLists.txt | 55 ++++++++++++++ .../classes}/Buffer.ext.schelp | 0 .../classes}/FDGain.schelp | 0 .../classes}/FDSTFTPass.schelp | 0 .../{fdGain => }/classes/fdGain.sc | 0 .../{fdSTFTPass => }/classes/fdSTFTPass.sc | 0 .../{fdNMF => }/classes/fdfNMF.sc | 0 scripts/target_post.cmake | 76 +++++++++++++++++++ {fdGain => src/fdGain}/CMakeLists.txt | 0 {fdGain => src/fdGain}/fdGain.cpp | 0 {fdNMF => src/fdNMF}/CMakeLists.txt | 0 {fdNMF => src/fdNMF}/fdNMF.cpp | 0 {fdNMF => src/fdNMF}/tests.scd | 0 {fdSTFTPass => src/fdSTFTPass}/CMakeLists.txt | 0 {fdSTFTPass => src/fdSTFTPass}/fdSTFTPass.cpp | 0 15 files changed, 131 insertions(+) create mode 100755 CMakeLists.txt rename release-packaging/{fdNMF/HelpSource/Classes => HelpSource/classes}/Buffer.ext.schelp (100%) rename release-packaging/{fdGain/HelpSource/Classes => HelpSource/classes}/FDGain.schelp (100%) rename release-packaging/{fdSTFTPass/HelpSource/Classes => HelpSource/classes}/FDSTFTPass.schelp (100%) rename release-packaging/{fdGain => }/classes/fdGain.sc (100%) rename release-packaging/{fdSTFTPass => }/classes/fdSTFTPass.sc (100%) rename release-packaging/{fdNMF => }/classes/fdfNMF.sc (100%) create mode 100644 scripts/target_post.cmake rename {fdGain => src/fdGain}/CMakeLists.txt (100%) rename {fdGain => src/fdGain}/fdGain.cpp (100%) rename {fdNMF => src/fdNMF}/CMakeLists.txt (100%) rename {fdNMF => src/fdNMF}/fdNMF.cpp (100%) rename {fdNMF => src/fdNMF}/tests.scd (100%) rename {fdSTFTPass => src/fdSTFTPass}/CMakeLists.txt (100%) rename {fdSTFTPass => src/fdSTFTPass}/fdSTFTPass.cpp (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100755 index 0000000..9ea8abe --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,55 @@ +####### original SC Cmake file starts here +cmake_minimum_required(VERSION 3.3) +set(CMAKE_CXX_STANDARD 11) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +# get_filename_component(PROJECT ${CMAKE_SOURCE_DIR} NAME_WE) #automatically sets project name from the filename +# message(STATUS "Project name is ${PROJECT}") +# project (${PROJECT}) + +project (fluid_decomposition_supercollider LANGUAGES CXX) + +set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -pedantic") + + +option(SUPERNOVA "Build plugins for supernova" OFF) + + +MACRO(SUBDIRLIST result curdir) + FILE(GLOB children RELATIVE ${curdir} ${curdir}/*) + SET(dirlist "") + FOREACH(child ${children}) + IF(IS_DIRECTORY ${curdir}/${child}) + LIST(APPEND dirlist ${child}) + ENDIF() + ENDFOREACH() + SET(${result} ${dirlist}) +ENDMACRO() + +get_filename_component(FLUIDPATH ${FLUID_DECOMP_PATH} ABSOLUTE) +message(${FLUIDPATH}) +# if (NOT DEFINED ${FLUID_DECOMP_PATH}) +# message(FATAL_ERROR "Please set the path to the fluid_decomposition sources with -DFLUID_DECOMP_PATH=") +# endif() + +if (NOT (EXISTS "${FLUIDPATH}/build/fluid_decomposition-exports.cmake")) + message(FATAL_ERROR "Can't find the fluid_decomposition CMake targets file at ${FLUIDPATH}/build/fluid_decomposition-expors.cmake. Please go to ${FLUIDPATH}/build and run CMake") +endif() + +include("${FLUIDPATH}/build/fluid_decomposition-exports.cmake") + +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_RELEASE "${CMAKE_LIBRARY_OUTPUT_DIRECTORY}") + +set(CMAKE_SHARED_MODULE_PREFIX "") +if(APPLE OR WIN32) +set(CMAKE_SHARED_MODULE_SUFFIX ".scx") +endif() + +SUBDIRLIST(PROJECT_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/src) +foreach (project_dir ${PROJECT_DIRS}) + if (EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/src/${project_dir}/CMakeLists.txt") + message("Generating: ${project_dir}") + add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/src/${project_dir}) + endif () +endforeach () diff --git a/release-packaging/fdNMF/HelpSource/Classes/Buffer.ext.schelp b/release-packaging/HelpSource/classes/Buffer.ext.schelp similarity index 100% rename from release-packaging/fdNMF/HelpSource/Classes/Buffer.ext.schelp rename to release-packaging/HelpSource/classes/Buffer.ext.schelp diff --git a/release-packaging/fdGain/HelpSource/Classes/FDGain.schelp b/release-packaging/HelpSource/classes/FDGain.schelp similarity index 100% rename from release-packaging/fdGain/HelpSource/Classes/FDGain.schelp rename to release-packaging/HelpSource/classes/FDGain.schelp diff --git a/release-packaging/fdSTFTPass/HelpSource/Classes/FDSTFTPass.schelp b/release-packaging/HelpSource/classes/FDSTFTPass.schelp similarity index 100% rename from release-packaging/fdSTFTPass/HelpSource/Classes/FDSTFTPass.schelp rename to release-packaging/HelpSource/classes/FDSTFTPass.schelp diff --git a/release-packaging/fdGain/classes/fdGain.sc b/release-packaging/classes/fdGain.sc similarity index 100% rename from release-packaging/fdGain/classes/fdGain.sc rename to release-packaging/classes/fdGain.sc diff --git a/release-packaging/fdSTFTPass/classes/fdSTFTPass.sc b/release-packaging/classes/fdSTFTPass.sc similarity index 100% rename from release-packaging/fdSTFTPass/classes/fdSTFTPass.sc rename to release-packaging/classes/fdSTFTPass.sc diff --git a/release-packaging/fdNMF/classes/fdfNMF.sc b/release-packaging/classes/fdfNMF.sc similarity index 100% rename from release-packaging/fdNMF/classes/fdfNMF.sc rename to release-packaging/classes/fdfNMF.sc diff --git a/scripts/target_post.cmake b/scripts/target_post.cmake new file mode 100644 index 0000000..3368980 --- /dev/null +++ b/scripts/target_post.cmake @@ -0,0 +1,76 @@ +target_include_directories( + ${PLUGIN} + PRIVATE + ${SC_PATH}/include/plugin_interface + ${SC_PATH}/include/common + ${SC_PATH}/common +) + +if (SUPERNOVA) + target_include_directories( + ${PLUGIN} + PRIVATE + ${SC_PATH}/external_libraries/nova-tt + ${SC_PATH}/external_libraries/boost + ${SC_PATH}/external_libraries/boost_lockfree + ${SC_PATH}/external_libraries/boost-lockfree + ) +endif() + +if(CMAKE_COMPILER_IS_GNUCXX OR CMAKE_COMPILER_IS_CLANG) + target_add_definitions(${PLUGIN} -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_definitions( + ${PLUGIN} + PRIVATE + "$<$>:-O3" + "-mavx" + ) + + # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse") + # endif() + # + # CHECK_C_COMPILER_FLAG(-msse2 HAS_SSE2) + # + # + # if (HAS_SSE2) + # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -msse2") + # endif() + # if (HAS_CXX_SSE2) + # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -msse2") + # endif() + # + # + # + # if (HAS_FPMATH_SSE) + # set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mfpmath=sse") + # endif() + # if (HAS_CXX_FPMATH_SSE) + # set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mfpmath=sse") + # endif() + # + # if(NATIVE) + # add_definitions(-march=native) + # endif() + # + +endif() +if(MINGW) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -mstackrealign") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -mstackrealign") +endif() + +####### added the fluid_decomposition + +if(SUPERNOVA) + add_library(${PLUGIN}_supernova MODULE ${FILENAME}) + set_property(TARGET ${PROJECT}_supernova + PROPERTY COMPILE_DEFINITIONS SUPERNOVA) +endif() diff --git a/fdGain/CMakeLists.txt b/src/fdGain/CMakeLists.txt similarity index 100% rename from fdGain/CMakeLists.txt rename to src/fdGain/CMakeLists.txt diff --git a/fdGain/fdGain.cpp b/src/fdGain/fdGain.cpp similarity index 100% rename from fdGain/fdGain.cpp rename to src/fdGain/fdGain.cpp diff --git a/fdNMF/CMakeLists.txt b/src/fdNMF/CMakeLists.txt similarity index 100% rename from fdNMF/CMakeLists.txt rename to src/fdNMF/CMakeLists.txt diff --git a/fdNMF/fdNMF.cpp b/src/fdNMF/fdNMF.cpp similarity index 100% rename from fdNMF/fdNMF.cpp rename to src/fdNMF/fdNMF.cpp diff --git a/fdNMF/tests.scd b/src/fdNMF/tests.scd similarity index 100% rename from fdNMF/tests.scd rename to src/fdNMF/tests.scd diff --git a/fdSTFTPass/CMakeLists.txt b/src/fdSTFTPass/CMakeLists.txt similarity index 100% rename from fdSTFTPass/CMakeLists.txt rename to src/fdSTFTPass/CMakeLists.txt diff --git a/fdSTFTPass/fdSTFTPass.cpp b/src/fdSTFTPass/fdSTFTPass.cpp similarity index 100% rename from fdSTFTPass/fdSTFTPass.cpp rename to src/fdSTFTPass/fdSTFTPass.cpp