-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathCMakeLists.txt
135 lines (103 loc) · 3.95 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
cmake_minimum_required(VERSION 3.22)
project(Playground VERSION 0.0.1)
set (TARGET_NAME ${PROJECT_NAME})
add_subdirectory(3rd_party/JUCE juce)
add_subdirectory(assets)
Include (FetchContent)
FetchContent_Declare (melatonin_inspector
GIT_REPOSITORY https://github.com/sudara/melatonin_inspector.git
GIT_TAG origin/main
SOURCE_DIR ${CMAKE_CURRENT_BINARY_DIR}/melatonin_inspector)
FetchContent_MakeAvailable (melatonin_inspector)
set(FORMATS_TO_BUILD Standalone VST3)
juce_add_plugin(${TARGET_NAME}
PRODUCT_NAME "Playground"
BUNDLE_ID ""
COMPANY_NAME "RM_ESTALI"
COMPANY_COPYRIGHT ""
PLUGIN_CODE PLGD
FORMATS ${FORMATS_TO_BUILD}
IS_SYNTH TRUE
COPY_PLUGIN_AFTER_BUILD TRUE
NEEDS_MIDI_INPUT TRUE
VST3_AUTO_MANIFEST FALSE
NEEDS_MIDI_OUTPUT FALSE
MICROPHONE_PERMISSION_ENABLED TRUE
)
juce_generate_juce_header(${TARGET_NAME})
target_compile_features(${TARGET_NAME} PRIVATE cxx_std_20)
list(APPEND CMAKE_PREFIX_PATH ${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/anira-1.0.0)
find_package(anira REQUIRED)
target_include_directories(${TARGET_NAME} PUBLIC ${anira_INCLUDE_DIRS})
# add_library(cmaj IMPORTED)
foreach (DIR ${CMAKE_CURRENT_LIST_DIR}/3rd_party/cmajor/include)
if (IS_DIRECTORY ${DIR})
target_include_directories(${TARGET_NAME} PUBLIC ${DIR})
endif ()
endforeach ()
set(RAVE_MODELS_PATH_PYTORCH "${CMAKE_CURRENT_LIST_DIR}/models/rave/models")
target_compile_definitions(${TARGET_NAME}
PUBLIC
JUCE_USE_CURL=0
JUCE_VST3_CAN_REPLACE_VST2=0
JUCE_WEB_BROWSER=0
DONT_SET_USING_JUCE_NAMESPACE=1
RAVE_MODELS_PATH_PYTORCH="${RAVE_MODELS_PATH_PYTORCH}"
)
file(GLOB_RECURSE SOURCES CONFIGURE_DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/source/*.cpp ${CMAKE_CURRENT_SOURCE_DIR}/source/*.h)
target_sources(${TARGET_NAME} PRIVATE ${SOURCES})
file(GLOB_RECURSE SOURCE_DIRS LIST_DIRECTORIES true ${CMAKE_CURRENT_LIST_DIR}/source/*)
list(APPEND SOURCE_DIRS ${CMAKE_CURRENT_LIST_DIR}/source)
source_group(TREE ${CMAKE_CURRENT_SOURCE_DIR}/source PREFIX "source" FILES ${SOURCES})
foreach (DIR ${SOURCE_DIRS})
if (IS_DIRECTORY ${DIR})
target_include_directories(${TARGET_NAME} PRIVATE ${DIR})
endif ()
endforeach ()
# add_library(cmaj_lib STATIC IMPORTED)
# set_target_properties(cmaj_lib PROPERTIES
# IMPORTED_LOCATION "${CMAKE_CURRENT_LIST_DIR}/3rd_party/cmaj/lib/cmaj.lib"
# )
if(NOT CMAJ_VERSION)
# Determine the version - use the latest tag for the checkout out repo
set(CMAJ_VERSION "1.0")
find_package (Git)
if (GIT_FOUND)
execute_process (
COMMAND ${GIT_EXECUTABLE} describe --tags --abbrev=0
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
RESULT_VARIABLE GIT_RESULT
OUTPUT_VARIABLE GIT_STDOUT
OUTPUT_STRIP_TRAILING_WHITESPACE
)
if (GIT_RESULT EQUAL 0)
set(CMAJ_VERSION ${GIT_STDOUT})
endif()
endif()
message ("Setting CMAJ_VERSION to ${CMAJ_VERSION}")
endif()
add_subdirectory(3rd_party/cmajor/modules cmajor)
MAKE_CMAJ_LIBRARY (
LIBRARY_NAME cmaj_lib
INCLUDE_PLAYBACK
ENABLE_PERFORMER_LLVM
)
target_link_libraries(${TARGET_NAME}
PRIVATE
# BinaryData
juce::juce_dsp
anira::anira
cmaj_lib
juce::juce_audio_utils
melatonin_inspector
)
file(GLOB_RECURSE INFERENCE_ENGINE_DLLS "${CMAKE_CURRENT_SOURCE_DIR}/3rd_party/anira-1.0.0/lib/*.dll")
list(APPEND NECESSARY_DLLS ${INFERENCE_ENGINE_DLLS})
foreach(FORMAT IN LISTS FORMATS_TO_BUILD)
string(CONCAT CONCATENATED_TARGET ${TARGET_NAME}_${FORMAT})
add_custom_command(TARGET ${CONCATENATED_TARGET}
POST_BUILD
COMMAND ${CMAKE_COMMAND} -E copy_if_different
${NECESSARY_DLLS}
$<TARGET_FILE_DIR:${TARGET_NAME}>/${FORMAT})
endforeach()