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 "$" "${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()