chore: move build output under build/ and scripts into scripts/
Layout: - scripts/ holds the four build scripts plus the new clean.sh - cmake/ holds mingw64-toolchain.cmake - the scripts default to build/linux, build/macos, build/windows, build/harness - docs/ holds the audit documents, with the round 1 task list archived Cleanup: - scripts/clean.sh removes generated output, with --dry-run, --staging, --legacy and --all, and refuses tracked, protected or outside paths - the Windows VST3 manifest now comes from cmake/moduleinfo.json.in, so its version, vendor and class IDs follow cmake/Plugin.cmake instead of a hand-written heredoc that could drift - deleted the unused Source/GUI/Slider, which no code constructed - fixed the hidden double processBlock overload: three warning lines to zero - unslopped the build scripts, the two .cjs helpers and the CMake comments - .gitignore covers the upstream JUCE Projucer and DemoRunner binaries Verified: five scripts pass bash -n; the harness passes CTest with zero warning lines; the Linux VST3 and Standalone link; the Windows cross-build passes its x86-64, runtime-import and entry-point checks; each configure exposes only its own targets; and a full build leaves Source/ and third_party/JUCE unchanged. The generated manifest is identical to the previous hand-written one.
This commit is contained in:
1 parent
e4cea300db
commit
facd5c5b5e
25 files changed
+438
-313
No files matched your search
+1
-3
@@ -1,6 +1,4 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# Headless QA harness (console app that drives the processor and checks output)
|
||||
# ---------------------------------------------------------------------------
|
||||
# Headless QA harness: a console app that drives the processor and checks output.
|
||||
juce_add_console_app(SerumAltTest)
|
||||
serumalt_configure_target(SerumAltTest)
|
||||
target_sources(SerumAltTest PRIVATE Source/Tests/TestMain.cpp)
|
||||
|
||||
+32
-19
@@ -1,14 +1,32 @@
|
||||
# ---------------------------------------------------------------------------
|
||||
# Plugin target
|
||||
# ---------------------------------------------------------------------------
|
||||
# JUCE 7.0.12 builds its VST3 manifest helper (juce_vst3_helper) with the same
|
||||
# toolchain as the plugin itself. When cross-compiling, that produces a Windows
|
||||
# .exe which cannot run on the Linux build host, so we disable the automatic
|
||||
# manifest step and inject a Windows moduleinfo.json afterwards
|
||||
# (see build_windows.sh). Native builds keep the automatic step.
|
||||
# Plugin target.
|
||||
|
||||
# Plugin metadata. It lives here once because juce_add_plugin and the cross-build
|
||||
# VST3 manifest in cmake/moduleinfo.json.in both need the same values.
|
||||
set(SERUMALT_COMPANY_NAME "SerumAlt Audio")
|
||||
set(SERUMALT_MANUFACTURER_CODE Salt)
|
||||
set(SERUMALT_PLUGIN_CODE Sera)
|
||||
set(SERUMALT_VST3_SDK_VERSION "VST 3.7.8") # ships with the vendored JUCE 7.0.12
|
||||
|
||||
# VST3 class IDs. Each is a fixed prefix, a per-class constant and the
|
||||
# manufacturer and plugin codes as ASCII hex, built the same way JUCE builds
|
||||
# them in juce_audio_plugin_client_VST3.cpp.
|
||||
string(HEX "${SERUMALT_MANUFACTURER_CODE}${SERUMALT_PLUGIN_CODE}" serumaltCodeHex)
|
||||
string(TOUPPER "${serumaltCodeHex}" serumaltCodeHex)
|
||||
set(SERUMALT_CID_AUDIO_MODULE "ABCDEF019182FAEB${serumaltCodeHex}")
|
||||
set(SERUMALT_CID_CONTROLLER "ABCDEF011234ABCD${serumaltCodeHex}")
|
||||
set(SERUMALT_CID_COMPATIBILITY "ABCDEF01C0DEF00D${serumaltCodeHex}")
|
||||
|
||||
# JUCE builds its VST3 manifest helper with the target toolchain, so during a
|
||||
# Windows cross-build that helper is a Windows .exe and cannot run on the Linux
|
||||
# host. Disable the automatic step and write the manifest from the template
|
||||
# instead. Native builds keep JUCE's automatic step.
|
||||
set(SERUMALT_VST3_AUTO_MANIFEST TRUE)
|
||||
if(CMAKE_CROSSCOMPILING)
|
||||
set(SERUMALT_VST3_AUTO_MANIFEST FALSE)
|
||||
configure_file(
|
||||
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/moduleinfo.json.in"
|
||||
"${CMAKE_BINARY_DIR}/moduleinfo.json"
|
||||
@ONLY)
|
||||
endif()
|
||||
|
||||
set(SERUMALT_FORMATS VST3)
|
||||
@@ -21,14 +39,14 @@ endif()
|
||||
|
||||
juce_add_plugin(SerumAlt
|
||||
VERSION ${PROJECT_VERSION}
|
||||
COMPANY_NAME "SerumAlt Audio"
|
||||
COMPANY_NAME "${SERUMALT_COMPANY_NAME}"
|
||||
IS_SYNTH TRUE
|
||||
NEEDS_MIDI_INPUT TRUE
|
||||
NEEDS_MIDI_OUTPUT FALSE
|
||||
IS_MIDI_EFFECT FALSE
|
||||
EDITOR_WANTS_KEYBOARD_FOCUS FALSE
|
||||
PLUGIN_MANUFACTURER_CODE Salt
|
||||
PLUGIN_CODE Sera
|
||||
PLUGIN_MANUFACTURER_CODE ${SERUMALT_MANUFACTURER_CODE}
|
||||
PLUGIN_CODE ${SERUMALT_PLUGIN_CODE}
|
||||
BUNDLE_ID com.serumalt.SerumAlt
|
||||
FORMATS ${SERUMALT_FORMATS}
|
||||
PRODUCT_NAME "SerumAlt"
|
||||
@@ -36,14 +54,9 @@ juce_add_plugin(SerumAlt
|
||||
|
||||
serumalt_configure_target(SerumAlt)
|
||||
|
||||
# ---------------------------------------------------------------------------
|
||||
# MinGW cross-build: static C++/threading runtime
|
||||
# ---------------------------------------------------------------------------
|
||||
# When cross-compiling for Windows with MinGW, link libgcc / libstdc++ /
|
||||
# winpthread statically so the VST3 DLL is self-contained. Otherwise the DLL
|
||||
# imports libgcc_s_seh-1.dll, libstdc++-6.dll and libwinpthread-1.dll, none of
|
||||
# which ship with the bundle (or exist on a stock Windows host), so the host's
|
||||
# scan would fail to load the plugin. Native (Linux) builds are unaffected.
|
||||
# A MinGW cross-build must link libgcc, libstdc++ and winpthread statically.
|
||||
# A stock Windows host has none of those DLLs, so a dynamic link produces a
|
||||
# module that fails to load and disappears from the host's plugin list.
|
||||
if(MINGW)
|
||||
target_link_options(SerumAlt_VST3 PRIVATE
|
||||
-static-libgcc
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
set(CMAKE_SYSTEM_NAME Windows)
|
||||
set(CMAKE_SYSTEM_PROCESSOR x86_64)
|
||||
|
||||
set(CMAKE_C_COMPILER x86_64-w64-mingw32-gcc)
|
||||
set(CMAKE_CXX_COMPILER x86_64-w64-mingw32-g++)
|
||||
set(CMAKE_RC_COMPILER x86_64-w64-mingw32-windres)
|
||||
set(CMAKE_AR x86_64-w64-mingw32-ar)
|
||||
set(CMAKE_RANLIB x86_64-w64-mingw32-ranlib)
|
||||
set(CMAKE_STRIP x86_64-w64-mingw32-strip)
|
||||
|
||||
set(CMAKE_FIND_ROOT_PATH /usr/x86_64-w64-mingw32)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
|
||||
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
|
||||
@@ -0,0 +1,57 @@
|
||||
{
|
||||
"Name": "@PROJECT_NAME@",
|
||||
"Version": "@PROJECT_VERSION@",
|
||||
"Factory Info": {
|
||||
"Vendor": "@SERUMALT_COMPANY_NAME@",
|
||||
"URL": "",
|
||||
"E-Mail": "",
|
||||
"Flags": {
|
||||
"Unicode": true,
|
||||
"Classes Discardable": false,
|
||||
"Component Non Discardable": false
|
||||
}
|
||||
},
|
||||
"Classes": [
|
||||
{
|
||||
"CID": "@SERUMALT_CID_AUDIO_MODULE@",
|
||||
"Category": "Audio Module Class",
|
||||
"Name": "@PROJECT_NAME@",
|
||||
"Vendor": "@SERUMALT_COMPANY_NAME@",
|
||||
"Version": "@PROJECT_VERSION@",
|
||||
"SDKVersion": "@SERUMALT_VST3_SDK_VERSION@",
|
||||
"Sub Categories": [
|
||||
"Instrument",
|
||||
"Synth"
|
||||
],
|
||||
"Class Flags": 2,
|
||||
"Cardinality": 2147483647,
|
||||
"Snapshots": []
|
||||
},
|
||||
{
|
||||
"CID": "@SERUMALT_CID_CONTROLLER@",
|
||||
"Category": "Component Controller Class",
|
||||
"Name": "@PROJECT_NAME@",
|
||||
"Vendor": "@SERUMALT_COMPANY_NAME@",
|
||||
"Version": "@PROJECT_VERSION@",
|
||||
"SDKVersion": "@SERUMALT_VST3_SDK_VERSION@",
|
||||
"Sub Categories": [
|
||||
"Instrument",
|
||||
"Synth"
|
||||
],
|
||||
"Class Flags": 2,
|
||||
"Cardinality": 2147483647,
|
||||
"Snapshots": []
|
||||
},
|
||||
{
|
||||
"CID": "@SERUMALT_CID_COMPATIBILITY@",
|
||||
"Category": "Plugin Compatibility Class",
|
||||
"Name": "@PROJECT_NAME@",
|
||||
"Vendor": "@SERUMALT_COMPANY_NAME@",
|
||||
"Version": "@PROJECT_VERSION@",
|
||||
"SDKVersion": "@SERUMALT_VST3_SDK_VERSION@",
|
||||
"Class Flags": 0,
|
||||
"Cardinality": 2147483647,
|
||||
"Snapshots": []
|
||||
}
|
||||
]
|
||||
}
|
||||
Reference in new issue
Block a user