From 68765da031a004fbbea6b55d9a99d220b9d57bff Mon Sep 17 00:00:00 2001 From: daniel-c-harvey Date: Thu, 30 Jul 2026 12:28:39 -0400 Subject: [PATCH] build: route every core/ TU into reaper_reasampler through exactly one static-library link edge, never a direct compile --- src/app/CMakeLists.txt | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/src/app/CMakeLists.txt b/src/app/CMakeLists.txt index e471a7d..300f75a 100644 --- a/src/app/CMakeLists.txt +++ b/src/app/CMakeLists.txt @@ -1,6 +1,8 @@ # The REAPER extension — a loadable module REAPER dlopen()s, never linked against. -# Its source list spans app/ + shell/ + the handful of core TUs compiled straight in, so -# the paths below are rooted at src/ rather than being relative to this directory. +# Its source list is app/ + shell/ only, so the paths below are rooted at src/ rather than +# being relative to this directory. Every core/ TU enters through a link edge instead: a TU +# compiled here AND linked from its library would be built twice under two different sets of +# per-target compile definitions and include dirs — two definitions of one symbol in one link. add_library(reaper_reasampler MODULE ${REASAMPLER_SRC_DIR}/app/main.cpp @@ -11,7 +13,6 @@ add_library(reaper_reasampler MODULE ${REASAMPLER_SRC_DIR}/shell/capture/realtime_lifecycle.cpp ${REASAMPLER_SRC_DIR}/shell/capture/capture_realtime_shell.cpp ${REASAMPLER_SRC_DIR}/shell/capture/capture_realtime_finalize.cpp - ${REASAMPLER_SRC_DIR}/core/capture/capture_realtime.cpp ${REASAMPLER_SRC_DIR}/shell/persist/session.cpp ${REASAMPLER_SRC_DIR}/shell/persist/ext_state_io.cpp ${REASAMPLER_SRC_DIR}/shell/persist/prune_fs.cpp @@ -27,39 +28,22 @@ add_library(reaper_reasampler MODULE # draw_kit is compiled into each module rather than being a static library — see root # CMakeLists.txt's LICE_SRC comment for why. ${REASAMPLER_SRC_DIR}/shell/panel/draw_kit.cpp - ${REASAMPLER_SRC_DIR}/core/view/mode_switch.cpp - ${REASAMPLER_SRC_DIR}/core/ui/tab_strip.cpp - ${REASAMPLER_SRC_DIR}/shell/capture/insert.cpp - ${REASAMPLER_SRC_DIR}/core/capture/insert_plan.cpp ${LICE_SRC} - ${REASAMPLER_SRC_DIR}/core/view/view_mode_model.cpp - ${REASAMPLER_SRC_DIR}/core/view/view_tree.cpp + ${REASAMPLER_SRC_DIR}/shell/capture/insert.cpp ${REASAMPLER_SRC_DIR}/shell/view/view.cpp ${REASAMPLER_SRC_DIR}/shell/capture/track_guid.cpp ${REASAMPLER_SRC_DIR}/shell/capture/provenance_shell.cpp - ${REASAMPLER_SRC_DIR}/core/view/guid_diff.cpp - ${REASAMPLER_SRC_DIR}/core/view/lane_keys.cpp ${REASAMPLER_SRC_DIR}/shell/capture/item_read.cpp ${REASAMPLER_SRC_DIR}/shell/actions/action_registry.cpp ${REASAMPLER_SRC_DIR}/shell/actions/design_view_actions.cpp ${REASAMPLER_SRC_DIR}/shell/actions/bank_actions.cpp ${REASAMPLER_SRC_DIR}/shell/actions/prune_action.cpp ${REASAMPLER_SRC_DIR}/shell/actions/ingest.cpp - ${REASAMPLER_SRC_DIR}/core/model/bank_book.cpp - ${REASAMPLER_SRC_DIR}/core/model/bank_book_json.cpp - ${REASAMPLER_SRC_DIR}/core/model/owned_manifest.cpp ${REASAMPLER_SRC_DIR}/shell/actions/drag_out_win.cpp ${REASAMPLER_SRC_DIR}/shell/actions/instrument_drop_win.cpp - ${REASAMPLER_SRC_DIR}/core/ui/action_bar.cpp - ${REASAMPLER_SRC_DIR}/core/ui/footer_bar.cpp - ${REASAMPLER_SRC_DIR}/core/ui/overflow_menu.cpp - ${REASAMPLER_SRC_DIR}/core/ui/mode_enable.cpp - ${REASAMPLER_SRC_DIR}/core/ui/tooltip.cpp - ${REASAMPLER_SRC_DIR}/core/ui/card_meta.cpp - ${REASAMPLER_SRC_DIR}/core/ui/card_drag.cpp ${REASAMPLER_SRC_DIR}/shell/persist/usage_scan.cpp ) -target_link_libraries(reaper_reasampler PRIVATE json wire file_bytes bank_model capture_paths peaks bank_grid mode_switch tab_strip view_mode_model insert_plan render_settings batch_capture tail_control capture_realtime bank_book wav_codec owned_manifest prune_reconcile prune_button app_version provenance drag_out instrument_drop theme component_geometry action_bar footer_bar overflow_menu mode_enable tooltip card_meta card_drag assignment_request bank_sync bridge_marshal sample_usage) +target_link_libraries(reaper_reasampler PRIVATE json wire file_bytes bank_model capture_paths peaks bank_grid mode_switch tab_strip view_mode_model view_tree guid_diff lane_keys insert_plan render_settings batch_capture tail_control capture_realtime bank_book wav_codec owned_manifest prune_reconcile prune_button app_version provenance drag_out instrument_drop theme component_geometry action_bar footer_bar overflow_menu mode_enable tooltip card_meta card_drag assignment_request bank_sync bridge_marshal sample_usage) target_include_directories(reaper_reasampler PRIVATE ${SDK_INC} ${WDL_INC}) # OUTPUT_NAME is channel-derived; the CMake target name stays "reaper_reasampler" for both