sfizz-ui/plugins/editor/CMakeLists.txt
redtide 82c4296141 Fixed Git build version in the about dialog
previously the library build version was displayed instead, which is no more the same after the library and plugins repository split.
2024-01-09 14:32:15 +01:00

170 lines
5.4 KiB
CMake

if(SFIZZ_USE_SYSTEM_VST3SDK)
find_package(PkgConfig REQUIRED)
pkg_check_modules(VST3SDK "vst3sdk" REQUIRED)
set(VSTGUI_BASEDIR "${VST3SDK_INCLUDE_DIRS}/vstgui4")
else()
set(VSTGUI_BASEDIR "${CMAKE_CURRENT_SOURCE_DIR}/external/vstgui4")
endif()
include("cmake/Vstgui.cmake")
set(EDITOR_THEMES
resources/Themes/Default/theme.xml
resources/Themes/Dark/theme.xml
)
set(EDITOR_RESOURCES
logo.png
logo_orange.png
logo_text.png
logo_text_white.png
logo_text_shaded.png
logo_text@2x.png
logo_text_white@2x.png
logo_text_shaded@2x.png
background.png
background@2x.png
background_button_about.png
background_button_about@2x.png
icon_white.png
icon_white@2x.png
knob48.png
knob48@2x.png
Fonts/sfizz-fluentui-system-r20.ttf
Fonts/sfizz-fluentui-system-f20.ttf
Fonts/sfizz-misc-icons.ttf
Fonts/Roboto-Regular.ttf
Themes/Default/theme.xml
Themes/Dark/theme.xml
PARENT_SCOPE
)
function(copy_editor_resources TARGET SOURCE_DIR DESTINATION_DIR)
set(_deps)
foreach(res ${EDITOR_RESOURCES})
get_filename_component(_dir "${res}" DIRECTORY)
file(MAKE_DIRECTORY "${DESTINATION_DIR}/${_dir}")
add_custom_command(
OUTPUT "${DESTINATION_DIR}/${res}"
COMMAND "${CMAKE_COMMAND}" "-E" "copy"
"${SOURCE_DIR}/${res}" "${DESTINATION_DIR}/${res}"
DEPENDS "${SOURCE_DIR}/${res}")
list(APPEND _deps "${DESTINATION_DIR}/${res}")
endforeach()
add_custom_target("${TARGET}_editor_resources" DEPENDS ${_deps})
add_dependencies("${TARGET}" "${TARGET}_editor_resources")
endfunction()
# editor
set(EDITOR_UI_FILES layout/main.fl layout/about.fl)
set(EDITOR_SOURCES
src/editor/EditIds.h
src/editor/EditIds.cpp
src/editor/Editor.h
src/editor/Editor.cpp
src/editor/EditorLibs.h
src/editor/EditorLibs.cpp
src/editor/EditorController.h
src/editor/GUIComponents.h
src/editor/GUIComponents.cpp
src/editor/GUIDefs.h
src/editor/GUIDefs.cpp
src/editor/GUIHelpers.h
src/editor/GUIHelpers.cpp
src/editor/GUIPiano.h
src/editor/GUIPiano.cpp
src/editor/DlgAbout.h
src/editor/DlgAbout.cpp
src/editor/Theme.h
src/editor/Theme.cpp
src/editor/ColorHelpers.h
src/editor/ColorHelpers.cpp
src/editor/ImageHelpers.h
src/editor/ImageHelpers.cpp
src/editor/NativeHelpers.h
src/editor/NativeHelpers.cpp
src/editor/VSTGUIHelpers.h
src/editor/VSTGUIHelpers.cpp
src/editor/layout/main.hpp
src/editor/layout/about.hpp
src/editor/utility/vstgui_after.h
src/editor/utility/vstgui_before.h
)
source_group("Sources" FILES ${EDITOR_SOURCES})
source_group("Editor UI" FILES ${EDITOR_UI_FILES})
source_group("Editor Themes" FILES ${EDITOR_THEMES})
add_library(sfizz_editor STATIC EXCLUDE_FROM_ALL
${EDITOR_SOURCES}
${EDITOR_THEMES}
${EDITOR_UI_FILES}
)
add_library(sfizz::editor ALIAS sfizz_editor)
target_include_directories(sfizz_editor PUBLIC src)
target_link_libraries(sfizz_editor PUBLIC sfizz::messaging sfizz::plugins-common)
target_link_libraries(sfizz_editor PRIVATE
sfizz::vstgui
plugins::git_build_id
)
target_compile_definitions(sfizz_editor PRIVATE
"SFIZZ_VERSION=\"${CMAKE_PROJECT_VERSION}\"")
if(APPLE)
find_library(APPLE_APPKIT_LIBRARY "AppKit")
find_library(APPLE_CORESERVICES_LIBRARY "CoreServices")
find_library(APPLE_FOUNDATION_LIBRARY "Foundation")
target_sources(sfizz_editor PRIVATE
src/editor/NativeHelpers.mm
src/editor/VSTGUIHelpers.mm)
target_link_libraries(sfizz_editor PRIVATE
"${APPLE_APPKIT_LIBRARY}"
"${APPLE_CORESERVICES_LIBRARY}"
"${APPLE_FOUNDATION_LIBRARY}")
target_compile_options(sfizz_editor PRIVATE "-fobjc-arc")
endif()
# dependencies
add_library(sfizz_colorspaces INTERFACE)
add_library(sfizz::colorspaces ALIAS sfizz_colorspaces)
target_include_directories(sfizz_colorspaces INTERFACE "external/color-spaces")
add_library(sfizz_stb_image INTERFACE)
add_library(sfizz::stb_image ALIAS sfizz_stb_image)
target_include_directories(sfizz_stb_image INTERFACE "external/stb_image")
if(WIN32)
#
elseif(APPLE)
#
else()
find_package(PkgConfig REQUIRED)
pkg_check_modules(sfizz-gio "gio-2.0" REQUIRED)
target_include_directories(sfizz_editor PRIVATE ${sfizz-gio_INCLUDE_DIRS})
target_link_libraries(sfizz_editor PRIVATE ${sfizz-gio_LIBRARIES})
endif()
target_link_libraries(sfizz_editor PRIVATE
sfizz::colorspaces
sfizz::stb_image
sfizz::bit_array
sfizz::filesystem
sfizz::pugixml
)
# layout tool
if(NOT CMAKE_CROSSCOMPILING)
set(LAYOUTMAKER_SOURCES
tools/layout-maker/sources/layout.h
tools/layout-maker/sources/reader.cpp
tools/layout-maker/sources/reader.h
tools/layout-maker/sources/main.cpp
)
source_group("Sources" FILES ${LAYOUTMAKER_SOURCES})
add_executable(layout-maker ${LAYOUTMAKER_SOURCES})
target_link_libraries(layout-maker PRIVATE absl::strings)
foreach(_layout main about)
add_custom_command(
OUTPUT "${CMAKE_CURRENT_SOURCE_DIR}/src/editor/layout/${_layout}.hpp"
COMMAND "$<TARGET_FILE:layout-maker>"
"${CMAKE_CURRENT_SOURCE_DIR}/layout/${_layout}.fl"
> "${CMAKE_CURRENT_SOURCE_DIR}/src/editor/layout/${_layout}.hpp"
DEPENDS layout-maker "${CMAKE_CURRENT_SOURCE_DIR}/layout/${_layout}.fl")
endforeach()
endif()