From 4938506a0035f728bc0d26599cd7e9b5e319f67d Mon Sep 17 00:00:00 2001 From: "Erick G. Islas-Osuna" Date: Thu, 22 Feb 2024 15:21:28 -0600 Subject: [PATCH 1/4] fix: add missing dependencies and flags --- .github/workflows/build.yml | 6 ++++-- src/CMakeLists.txt | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 82ac7f1e4..1198e31ac 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -47,15 +47,17 @@ jobs: runs-on: macos-13 steps: - name: Install dependencies - run: brew install automake fluid-synth gtk+ cairo lv2 + run: brew install automake fluid-synth gtk+ cairo lv2 gtk-mac-integration expat - name: Check out uses: actions/checkout@v3 with: fetch-depth: 0 - name: Configure run: | + export LDFLAGS="-L$(brew --prefix)/lib" + export CPPFLAGS="-I$(brew --prefix expat)/include" mkdir build && cd build - cmake .. -DCMAKE_INSTALL_PREFIX=../install + cmake .. -DCMAKE_INSTALL_PREFIX=../install -DCMAKE_SHARED_LINKER_FLAGS="-L$(brew --prefix)/lib -Wl,-rpath,$(brew --prefix)/lib" -DCMAKE_CXX_FLAGS="-I$(brew --prefix)/include" - name: Build run: cmake --build build # install does not work yet, but seems less critical for now diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 060802af4..42df4c25e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -58,8 +58,10 @@ if(USE_LV2 AND USE_GUI) set(LV2DIR "${CMAKE_INSTALL_PREFIX}/lib/lv2/calf.lv2") add_library(calflv2gui SHARED gui.cpp gui_config.cpp gui_controls.cpp ctl_curve.cpp ctl_keyboard.cpp ctl_knob.cpp ctl_led.cpp ctl_tube.cpp ctl_vumeter.cpp ctl_frame.cpp ctl_fader.cpp ctl_buttons.cpp ctl_notebook.cpp ctl_meterscale.cpp ctl_combobox.cpp ctl_tuner.cpp ctl_phasegraph.cpp ctl_pattern.cpp metadata.cpp giface.cpp plugin_gui_window.cpp preset.cpp preset_gui.cpp lv2gui.cpp osctl.cpp utils.cpp ctl_linegraph.cpp drawingutils.cpp) target_include_directories(calflv2gui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) - target_link_options(calflv2gui PRIVATE -Wl,-z,nodelete) - target_link_libraries(calflv2gui PRIVATE ${GTK_LIBRARIES} fluidsynth) + if (NOT APPLE) + target_link_options(calflv2gui PRIVATE -Wl,-z,nodelete) + endif() + target_link_libraries(calflv2gui PRIVATE ${GTK_LIBRARIES} ${EXPAT_LIBRARIES} fluidsynth) set_target_properties(calf PROPERTIES INSTALL_RPATH "${LV2DIR}" BUILD_WITH_INSTALL_RPATH TRUE From 1baaedf83d29188af5128622680d810e5414f4fa Mon Sep 17 00:00:00 2001 From: "Erick G. Islas-Osuna" Date: Fri, 23 Feb 2024 22:26:47 -0600 Subject: [PATCH 2/4] fix: replace nodelete condition --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 42df4c25e..10756d602 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -58,7 +58,7 @@ if(USE_LV2 AND USE_GUI) set(LV2DIR "${CMAKE_INSTALL_PREFIX}/lib/lv2/calf.lv2") add_library(calflv2gui SHARED gui.cpp gui_config.cpp gui_controls.cpp ctl_curve.cpp ctl_keyboard.cpp ctl_knob.cpp ctl_led.cpp ctl_tube.cpp ctl_vumeter.cpp ctl_frame.cpp ctl_fader.cpp ctl_buttons.cpp ctl_notebook.cpp ctl_meterscale.cpp ctl_combobox.cpp ctl_tuner.cpp ctl_phasegraph.cpp ctl_pattern.cpp metadata.cpp giface.cpp plugin_gui_window.cpp preset.cpp preset_gui.cpp lv2gui.cpp osctl.cpp utils.cpp ctl_linegraph.cpp drawingutils.cpp) target_include_directories(calflv2gui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) - if (NOT APPLE) + if (NOT SUPPORTS_NODELETE) target_link_options(calflv2gui PRIVATE -Wl,-z,nodelete) endif() target_link_libraries(calflv2gui PRIVATE ${GTK_LIBRARIES} ${EXPAT_LIBRARIES} fluidsynth) From e824af819030b3c934c363d6c38ae935f373a371 Mon Sep 17 00:00:00 2001 From: "Erick G. Islas-Osuna" Date: Fri, 23 Feb 2024 23:32:43 -0600 Subject: [PATCH 3/4] fix: rollback to NOT APPLE condition --- src/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 10756d602..42df4c25e 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -58,7 +58,7 @@ if(USE_LV2 AND USE_GUI) set(LV2DIR "${CMAKE_INSTALL_PREFIX}/lib/lv2/calf.lv2") add_library(calflv2gui SHARED gui.cpp gui_config.cpp gui_controls.cpp ctl_curve.cpp ctl_keyboard.cpp ctl_knob.cpp ctl_led.cpp ctl_tube.cpp ctl_vumeter.cpp ctl_frame.cpp ctl_fader.cpp ctl_buttons.cpp ctl_notebook.cpp ctl_meterscale.cpp ctl_combobox.cpp ctl_tuner.cpp ctl_phasegraph.cpp ctl_pattern.cpp metadata.cpp giface.cpp plugin_gui_window.cpp preset.cpp preset_gui.cpp lv2gui.cpp osctl.cpp utils.cpp ctl_linegraph.cpp drawingutils.cpp) target_include_directories(calflv2gui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) - if (NOT SUPPORTS_NODELETE) + if (NOT APPLE) target_link_options(calflv2gui PRIVATE -Wl,-z,nodelete) endif() target_link_libraries(calflv2gui PRIVATE ${GTK_LIBRARIES} ${EXPAT_LIBRARIES} fluidsynth) From 4ee14277fc944c491f929f3d645c7edec4bf06d8 Mon Sep 17 00:00:00 2001 From: Johannes Lorenz Date: Sat, 24 Feb 2024 20:28:51 +0100 Subject: [PATCH 4/4] CMake: Check for nodelete linker flag --- src/CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 42df4c25e..73cc1556a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -2,6 +2,8 @@ # General compile options # +include(CheckLinkerFlag) + set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_compile_options(-ffast-math) @@ -58,7 +60,8 @@ if(USE_LV2 AND USE_GUI) set(LV2DIR "${CMAKE_INSTALL_PREFIX}/lib/lv2/calf.lv2") add_library(calflv2gui SHARED gui.cpp gui_config.cpp gui_controls.cpp ctl_curve.cpp ctl_keyboard.cpp ctl_knob.cpp ctl_led.cpp ctl_tube.cpp ctl_vumeter.cpp ctl_frame.cpp ctl_fader.cpp ctl_buttons.cpp ctl_notebook.cpp ctl_meterscale.cpp ctl_combobox.cpp ctl_tuner.cpp ctl_phasegraph.cpp ctl_pattern.cpp metadata.cpp giface.cpp plugin_gui_window.cpp preset.cpp preset_gui.cpp lv2gui.cpp osctl.cpp utils.cpp ctl_linegraph.cpp drawingutils.cpp) target_include_directories(calflv2gui PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}) - if (NOT APPLE) + check_linker_flag(CXX -Wl,-z,nodelete LINKER_SUPPORTS_NODELETE) + if (LINKER_SUPPORTS_NODELETE) target_link_options(calflv2gui PRIVATE -Wl,-z,nodelete) endif() target_link_libraries(calflv2gui PRIVATE ${GTK_LIBRARIES} ${EXPAT_LIBRARIES} fluidsynth)