mirror of
https://gitlab.alpinelinux.org/alpine/aports.git
synced 2026-04-18 12:13:42 +02:00
271 lines
10 KiB
Diff
271 lines
10 KiB
Diff
--- /dev/null
|
|
+++ b/CMakeLists.txt
|
|
@@ -0,0 +1,267 @@
|
|
+cmake_minimum_required(VERSION 3.15)
|
|
+project(JUCE VERSION 7.0.8)
|
|
+
|
|
+set(CMAKE_CXX_STANDARD 17)
|
|
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
+set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
|
+
|
|
+# Find required packages
|
|
+find_package(PkgConfig REQUIRED)
|
|
+pkg_check_modules(FREETYPE REQUIRED freetype2)
|
|
+pkg_check_modules(ALSA REQUIRED alsa)
|
|
+
|
|
+# Each JUCE module has ONE main .cpp file (unity build)
|
|
+# These files include all other implementation files
|
|
+
|
|
+# juce_core - the foundation module
|
|
+add_library(juce_core STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_core/juce_core.cpp
|
|
+)
|
|
+target_include_directories(juce_core PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_definitions(juce_core PUBLIC
|
|
+ JUCE_WEB_BROWSER=0
|
|
+ JUCE_USE_CURL=0
|
|
+ JUCE_GLOBAL_MODULE_SETTINGS_INCLUDED=1
|
|
+)
|
|
+target_compile_options(juce_core PRIVATE -w)
|
|
+target_link_libraries(juce_core PUBLIC dw pthread dl)
|
|
+
|
|
+# juce_events
|
|
+add_library(juce_events STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_events/juce_events.cpp
|
|
+)
|
|
+target_include_directories(juce_events PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_events PRIVATE -w)
|
|
+target_link_libraries(juce_events PUBLIC juce_core)
|
|
+
|
|
+# juce_data_structures
|
|
+add_library(juce_data_structures STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_data_structures/juce_data_structures.cpp
|
|
+)
|
|
+target_include_directories(juce_data_structures PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_data_structures PRIVATE -w)
|
|
+target_link_libraries(juce_data_structures PUBLIC juce_core)
|
|
+
|
|
+# juce_graphics
|
|
+add_library(juce_graphics STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_graphics/juce_graphics.cpp
|
|
+)
|
|
+target_include_directories(juce_graphics PUBLIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules
|
|
+ ${FREETYPE_INCLUDE_DIRS}
|
|
+)
|
|
+target_compile_options(juce_graphics PRIVATE -w)
|
|
+target_link_libraries(juce_graphics PUBLIC juce_core ${FREETYPE_LIBRARIES} X11)
|
|
+
|
|
+# juce_gui_basics
|
|
+add_library(juce_gui_basics STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_gui_basics/juce_gui_basics.cpp
|
|
+)
|
|
+target_include_directories(juce_gui_basics PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_gui_basics PRIVATE -w)
|
|
+target_link_libraries(juce_gui_basics PUBLIC juce_core juce_graphics juce_events X11 Xext Xrandr Xcomposite Xcursor)
|
|
+
|
|
+# juce_gui_extra
|
|
+add_library(juce_gui_extra STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_gui_extra/juce_gui_extra.cpp
|
|
+)
|
|
+target_include_directories(juce_gui_extra PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_gui_extra PRIVATE -w)
|
|
+target_link_libraries(juce_gui_extra PUBLIC juce_gui_basics)
|
|
+
|
|
+# juce_audio_basics
|
|
+add_library(juce_audio_basics STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_audio_basics/juce_audio_basics.cpp
|
|
+)
|
|
+target_include_directories(juce_audio_basics PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_audio_basics PRIVATE -w)
|
|
+target_link_libraries(juce_audio_basics PUBLIC juce_core)
|
|
+
|
|
+# juce_audio_devices
|
|
+add_library(juce_audio_devices STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_audio_devices/juce_audio_devices.cpp
|
|
+)
|
|
+target_include_directories(juce_audio_devices PUBLIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules
|
|
+ ${ALSA_INCLUDE_DIRS}
|
|
+)
|
|
+target_compile_options(juce_audio_devices PRIVATE -w)
|
|
+target_link_libraries(juce_audio_devices PUBLIC juce_audio_basics juce_events ${ALSA_LIBRARIES})
|
|
+
|
|
+# juce_audio_formats
|
|
+add_library(juce_audio_formats STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_audio_formats/juce_audio_formats.cpp
|
|
+)
|
|
+target_include_directories(juce_audio_formats PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_audio_formats PRIVATE -w)
|
|
+target_link_libraries(juce_audio_formats PUBLIC juce_audio_basics)
|
|
+
|
|
+# juce_audio_processors
|
|
+add_library(juce_audio_processors STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_audio_processors/juce_audio_processors.cpp
|
|
+)
|
|
+target_include_directories(juce_audio_processors PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_audio_processors PRIVATE -w)
|
|
+target_link_libraries(juce_audio_processors PUBLIC juce_gui_basics juce_audio_basics)
|
|
+
|
|
+# juce_audio_utils
|
|
+add_library(juce_audio_utils STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_audio_utils/juce_audio_utils.cpp
|
|
+)
|
|
+target_include_directories(juce_audio_utils PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_audio_utils PRIVATE -w)
|
|
+target_link_libraries(juce_audio_utils PUBLIC juce_gui_extra juce_audio_devices juce_audio_formats juce_audio_processors)
|
|
+
|
|
+# juce_audio_plugin_client (special module - only build if .cpp exists)
|
|
+if(EXISTS ${CMAKE_SOURCE_DIR}/modules/juce_audio_plugin_client/juce_audio_plugin_client.cpp)
|
|
+add_library(juce_audio_plugin_client STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_audio_plugin_client/juce_audio_plugin_client.cpp
|
|
+)
|
|
+target_include_directories(juce_audio_plugin_client PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_audio_plugin_client PRIVATE -w)
|
|
+target_link_libraries(juce_audio_plugin_client PUBLIC juce_audio_processors juce_gui_basics)
|
|
+endif()
|
|
+
|
|
+# juce_dsp
|
|
+add_library(juce_dsp STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_dsp/juce_dsp.cpp
|
|
+)
|
|
+target_include_directories(juce_dsp PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_dsp PRIVATE -w)
|
|
+target_link_libraries(juce_dsp PUBLIC juce_audio_basics)
|
|
+
|
|
+# juce_cryptography
|
|
+add_library(juce_cryptography STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_cryptography/juce_cryptography.cpp
|
|
+)
|
|
+target_include_directories(juce_cryptography PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_cryptography PRIVATE -w)
|
|
+target_link_libraries(juce_cryptography PUBLIC juce_core)
|
|
+
|
|
+# juce_opengl
|
|
+add_library(juce_opengl STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_opengl/juce_opengl.cpp
|
|
+)
|
|
+target_include_directories(juce_opengl PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_opengl PRIVATE -w)
|
|
+target_link_libraries(juce_opengl PUBLIC juce_gui_extra GL)
|
|
+
|
|
+# juce_osc
|
|
+add_library(juce_osc STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_osc/juce_osc.cpp
|
|
+)
|
|
+target_include_directories(juce_osc PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_osc PRIVATE -w)
|
|
+target_link_libraries(juce_osc PUBLIC juce_core juce_events)
|
|
+
|
|
+# juce_video
|
|
+add_library(juce_video STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_video/juce_video.cpp
|
|
+)
|
|
+target_include_directories(juce_video PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_video PRIVATE -w)
|
|
+target_link_libraries(juce_video PUBLIC juce_gui_extra)
|
|
+
|
|
+# juce_analytics
|
|
+add_library(juce_analytics STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_analytics/juce_analytics.cpp
|
|
+)
|
|
+target_include_directories(juce_analytics PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_analytics PRIVATE -w)
|
|
+target_link_libraries(juce_analytics PUBLIC juce_core)
|
|
+
|
|
+# juce_animation (if exists - some versions may not have this)
|
|
+if(EXISTS ${CMAKE_SOURCE_DIR}/modules/juce_animation/juce_animation.cpp)
|
|
+add_library(juce_animation STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_animation/juce_animation.cpp
|
|
+)
|
|
+target_include_directories(juce_animation PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_animation PRIVATE -w)
|
|
+target_link_libraries(juce_animation PUBLIC juce_gui_basics)
|
|
+endif()
|
|
+
|
|
+# juce_box2d
|
|
+add_library(juce_box2d STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_box2d/juce_box2d.cpp
|
|
+)
|
|
+target_include_directories(juce_box2d PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_box2d PRIVATE -w)
|
|
+target_link_libraries(juce_box2d PUBLIC juce_graphics)
|
|
+
|
|
+# juce_javascript (if exists - depends on version)
|
|
+if(EXISTS ${CMAKE_SOURCE_DIR}/modules/juce_javascript/juce_javascript.cpp)
|
|
+add_library(juce_javascript STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_javascript/juce_javascript.cpp
|
|
+)
|
|
+target_include_directories(juce_javascript PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_javascript PRIVATE -w)
|
|
+target_link_libraries(juce_javascript PUBLIC juce_core)
|
|
+endif()
|
|
+
|
|
+# juce_midi_ci (if exists - newer versions)
|
|
+if(EXISTS ${CMAKE_SOURCE_DIR}/modules/juce_midi_ci/juce_midi_ci.cpp)
|
|
+add_library(juce_midi_ci STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_midi_ci/juce_midi_ci.cpp
|
|
+)
|
|
+target_include_directories(juce_midi_ci PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_midi_ci PRIVATE -w)
|
|
+target_link_libraries(juce_midi_ci PUBLIC juce_audio_basics)
|
|
+endif()
|
|
+
|
|
+# juce_product_unlocking
|
|
+add_library(juce_product_unlocking STATIC
|
|
+ ${CMAKE_SOURCE_DIR}/modules/juce_product_unlocking/juce_product_unlocking.cpp
|
|
+)
|
|
+target_include_directories(juce_product_unlocking PUBLIC ${CMAKE_SOURCE_DIR}/modules)
|
|
+target_compile_options(juce_product_unlocking PRIVATE -w)
|
|
+target_link_libraries(juce_product_unlocking PUBLIC juce_cryptography)
|
|
+
|
|
+# Install targets
|
|
+install(TARGETS
|
|
+ juce_core
|
|
+ juce_events
|
|
+ juce_data_structures
|
|
+ juce_graphics
|
|
+ juce_gui_basics
|
|
+ juce_gui_extra
|
|
+ juce_audio_basics
|
|
+ juce_audio_devices
|
|
+ juce_audio_formats
|
|
+ juce_audio_processors
|
|
+ juce_audio_utils
|
|
+ juce_dsp
|
|
+ juce_cryptography
|
|
+ juce_opengl
|
|
+ juce_osc
|
|
+ juce_video
|
|
+ juce_analytics
|
|
+ juce_box2d
|
|
+ juce_product_unlocking
|
|
+ ARCHIVE DESTINATION lib
|
|
+ LIBRARY DESTINATION lib
|
|
+)
|
|
+
|
|
+# Install conditional targets
|
|
+if(TARGET juce_audio_plugin_client)
|
|
+ install(TARGETS juce_audio_plugin_client ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)
|
|
+endif()
|
|
+if(TARGET juce_animation)
|
|
+ install(TARGETS juce_animation ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)
|
|
+endif()
|
|
+if(TARGET juce_javascript)
|
|
+ install(TARGETS juce_javascript ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)
|
|
+endif()
|
|
+if(TARGET juce_midi_ci)
|
|
+ install(TARGETS juce_midi_ci ARCHIVE DESTINATION lib LIBRARY DESTINATION lib)
|
|
+endif()
|
|
+
|
|
+install(DIRECTORY modules/
|
|
+ DESTINATION include/JUCE-${PROJECT_VERSION}/modules
|
|
+ FILES_MATCHING PATTERN "*.h"
|
|
+)
|
|
+
|
|
+# Install manually created scripts
|
|
+install(PROGRAMS ${CMAKE_SOURCE_DIR}/juce-config DESTINATION bin)
|
|
+install(FILES ${CMAKE_SOURCE_DIR}/JUCEConfig.cmake DESTINATION lib/cmake/JUCE)
|
|
+install(FILES ${CMAKE_SOURCE_DIR}/juce.pc DESTINATION lib/pkgconfig)
|
|
+
|