commit bf20ac83d4d6e54db46ea84fc0d220f7caebe403
parent 95c0cff17cde3dc821a4c5f880b9bcd90ed732e6
Author: dsp56300 <dsp56300@users.noreply.github.com>
Date: Sun, 21 Apr 2024 02:22:07 +0200
prepare CI to work on our new main branch
Diffstat:
5 files changed, 100 insertions(+), 29 deletions(-)
diff --git a/scripts/deploy.cmake b/scripts/deploy.cmake
@@ -13,8 +13,8 @@ if(NOT EXISTS ${RCLONE_CONF})
endif()
if(UPLOAD_LOCAL)
- copyArtefacts("dsp56300:deploy" ${FOLDER} "")
+ copyArtefacts("dsp56300:deploy" "${FOLDER}" "${FILTER}")
endif()
if(UPLOAD_REMOTE)
- copyArtefacts("dsp56300_ftp:builds" ${FOLDER} "")
+ copyArtefacts("dsp56300_ftp:builds" "${FOLDER}" "${FILTER}")
endif()
diff --git a/scripts/deployAll.cmake b/scripts/deployAll.cmake
@@ -0,0 +1,22 @@
+include(${CMAKE_CURRENT_LIST_DIR}/synths.cmake)
+
+if(NOT FOLDER)
+ message(FATAL_ERROR "No upload folder specified")
+endif()
+
+if(NOT gearmulator_BINARY_DIR)
+ message(FATAL_ERROR "Source of binaries to be uploaded 'gearmulator_BINARY_DIR' not specified")
+endif()
+
+macro(deploySynth NAME)
+ message(STATUS "Deploying synth ${${NAME}_name}")
+ set(uploadFolder ${FOLDER}/${${NAME}_folder})
+ set(filter "${${NAME}_name}")
+ execute_process(COMMAND cmake -DFOLDER=${uploadFolder} -DFILTER=${filter} -DUPLOAD_LOCAL=${UPLOAD_LOCAL} -DUPLOAD_REMOTE=${UPLOAD_REMOTE} -P ${CMAKE_CURRENT_LIST_DIR}/deploy.cmake COMMAND_ECHO STDOUT WORKING_DIRECTORY ${gearmulator_BINARY_DIR} COMMAND_ERROR_IS_FATAL ANY)
+endmacro()
+
+foreach(S IN LISTS synths)
+ if(${S})
+ deploySynth(${S})
+ endif()
+endforeach()
diff --git a/scripts/example.bat b/scripts/example.bat
@@ -0,0 +1,32 @@
+:: -------- setup --------
+
+:: source folder
+set IN=..\
+
+:: build system output folder
+set OUT=..\temp\test
+
+:: which synths should be built?
+set SYNTHS=-Dgearmulator_SYNTH_OSIRUS=on -Dgearmulator_SYNTH_OSTIRUS=on -Dgearmulator_SYNTH_VAVRA=on -Dgearmulator_SYNTH_XENIA=on
+
+:: -------- generate project configuration --------
+
+cmake -Dgearmulator_SOURCE_DIR=%IN% -Dgearmulator_BINARY_DIR=%OUT% %SYNTHS% -Dgearmulator_BUILD_JUCEPLUGIN=on -Dgearmulator_BUILD_FX_PLUGIN=off -P generate.cmake
+
+:: -------- build the project --------
+
+cmake --build %OUT% --config Release --parallel 24
+
+:: -------- run tests --------
+
+ctest -C Release -VV --output-on-failure --test-dir %OUT%
+
+:: -------- create packages --------
+
+pushd %OUT%
+cmake -P %~dp0/pack.cmake
+popd
+
+:: -------- deploy packages --------
+
+cmake %SYNTHS% -DUPLOAD_LOCAL=1 -DFOLDER=test -Dgearmulator_BINARY_DIR=%OUT% -P deployAll.cmake
diff --git a/scripts/generate.cmake b/scripts/generate.cmake
@@ -1,29 +1,7 @@
-set(synths
- gearmulator_SYNTH_OSIRUS
- gearmulator_SYNTH_OSTIRUS
- gearmulator_SYNTH_VAVRA
- gearmulator_SYNTH_XENIA
-)
-
-macro(validateToggle NAME)
- if(NOT DEFINED ${NAME} OR (NOT ${${NAME}} STREQUAL "on" AND NOT ${${NAME}} STREQUAL "off"))
- message(FATAL_ERROR "Variable " ${NAME} " needs to be set to on or off but got '" ${${NAME}} "'")
- else()
- message(STATUS ${NAME}=${${NAME}})
- endif()
-endmacro()
-
-# turn off all synths that are not explicitly specified
-foreach(S IN LISTS synths)
- if(NOT DEFINED ${S})
- set(${S} off)
- message(STATUS "Synth ${S} unspecified, turning off")
- else()
- validateToggle(${S})
- endif()
-endforeach()
+include(${CMAKE_CURRENT_LIST_DIR}/synths.cmake)
# these need to be specified explicitly
+
validateToggle(gearmulator_BUILD_JUCEPLUGIN)
validateToggle(gearmulator_BUILD_FX_PLUGIN)
@@ -35,7 +13,7 @@ if(NOT DEFINED gearmulator_BINARY_DIR)
message(FATAL_ERROR "gearmulator_BINARY_DIR needs to be specified")
endif()
-# build Release by default
+# build Release by default if not specified otherwise
if(NOT DEFINED CMAKE_BUILD_TYPE)
message(STATUS "CMAKE_BUILD_TYPE unspecified, setting to Release")
set(CMAKE_BUILD_TYPE Release)
@@ -44,6 +22,7 @@ endif()
set(args ${gearmulator_SOURCE_DIR})
if(APPLE)
+ # We need Xcode for macOS builds to prevent that the VST3 bundles Info.plist is missing information
set(args ${args} -G Xcode)
endif()
@@ -57,6 +36,4 @@ foreach(S IN LISTS synths)
set(args ${args} -D${S}=${${S}})
endforeach()
-message(STATUS "Executing command: cmake ${args}")
-
execute_process(COMMAND cmake ${args} COMMAND_ECHO STDOUT WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR} COMMAND_ERROR_IS_FATAL ANY)
diff --git a/scripts/synths.cmake b/scripts/synths.cmake
@@ -0,0 +1,40 @@
+set(synths
+ gearmulator_SYNTH_OSIRUS
+ gearmulator_SYNTH_OSTIRUS
+ gearmulator_SYNTH_VAVRA
+ gearmulator_SYNTH_XENIA
+)
+
+set(gearmulator_SYNTH_OSIRUS_name Osirus)
+set(gearmulator_SYNTH_OSTIRUS_name OsTIrus)
+set(gearmulator_SYNTH_VAVRA_name Vavra)
+set(gearmulator_SYNTH_XENIA_name Xenia)
+
+set(gearmulator_SYNTH_OSIRUS_folder osirus)
+set(gearmulator_SYNTH_OSTIRUS_folder ostirus)
+set(gearmulator_SYNTH_VAVRA_folder vavra)
+set(gearmulator_SYNTH_XENIA_folder xenia)
+
+macro(validateToggle NAME)
+ if(NOT DEFINED ${NAME} OR (NOT ${${NAME}} STREQUAL "on" AND NOT ${${NAME}} STREQUAL "off"))
+ message(FATAL_ERROR "Variable " ${NAME} " needs to be set to on or off but got '" ${${NAME}} "'")
+ else()
+ message(STATUS ${NAME}=${${NAME}})
+ endif()
+endmacro()
+
+# turn off all synths that are not explicitly specified
+foreach(S IN LISTS synths)
+ if(NOT DEFINED ${S}_name)
+ message(FATAL_ERROR "No name defined for synth ${S}")
+ endif()
+ if(NOT DEFINED ${S}_folder)
+ message(FATAL_ERROR "No folder defined for synth ${S}")
+ endif()
+ if(NOT DEFINED ${S})
+ set(${S} off)
+ message(STATUS "Synth ${S} unspecified, turning off")
+ else()
+ validateToggle(${S})
+ endif()
+endforeach()