@@ -31,27 +31,36 @@ add_library(vst3sdk STATIC EXCLUDE_FROM_ALL
3131 "${VST3SDK_BASEDIR} /public.sdk/source/vst/vstparameters.cpp"
3232 "${VST3SDK_BASEDIR} /public.sdk/source/vst/vstpresetfile.cpp"
3333 "${VST3SDK_BASEDIR} /public.sdk/source/vst/vstrepresentation.cpp"
34- "${VST3SDK_BASEDIR} /public.sdk/source/vst/utility/stringconvert.cpp" )
34+ "${VST3SDK_BASEDIR} /public.sdk/source/vst/utility/stringconvert.cpp"
35+ )
3536if (WIN32 )
3637 target_sources (vst3sdk PRIVATE
37- "${VST3SDK_BASEDIR} /public.sdk/source/common/threadchecker_win32.cpp" )
38+ "${VST3SDK_BASEDIR} /public.sdk/source/common/threadchecker_win32.cpp"
39+ )
3840elseif (APPLE )
3941 target_sources (vst3sdk PRIVATE
40- "${VST3SDK_BASEDIR} /public.sdk/source/common/threadchecker_mac.mm" )
42+ "${VST3SDK_BASEDIR} /public.sdk/source/common/threadchecker_mac.mm"
43+ )
4144else ()
4245 target_sources (vst3sdk PRIVATE
43- "${VST3SDK_BASEDIR} /public.sdk/source/common/threadchecker_linux.cpp" )
46+ "${VST3SDK_BASEDIR} /public.sdk/source/common/threadchecker_linux.cpp"
47+ )
4448endif ()
4549target_include_directories (vst3sdk PUBLIC "${VST3SDK_BASEDIR} " )
4650target_link_libraries (vst3sdk PUBLIC Threads::Threads)
51+
4752if (APPLE )
4853 target_link_libraries (vst3sdk PUBLIC ${APPLE_FOUNDATION_LIBRARY} )
4954endif ()
55+
5056if (MINGW)
5157 target_compile_definitions (vst3sdk PUBLIC
52- "_NATIVE_WCHAR_T_DEFINED=1" "__wchar_t=wchar_t" )
58+ "_NATIVE_WCHAR_T_DEFINED=1" "__wchar_t=wchar_t"
59+ )
5360endif ()
61+
5462set (_vst_release_build_types MinSizeRel Release RelWithDebInfo)
63+
5564if (CMAKE_BUILD_TYPE IN_LIST _vst_release_build_types)
5665 target_compile_definitions (vst3sdk PUBLIC "RELEASE" )
5766else ()
@@ -62,50 +71,112 @@ function(plugin_add_vst3sdk NAME)
6271 target_link_libraries ("${NAME} " PRIVATE vst3sdk)
6372 target_sources ("${NAME} " PRIVATE
6473 "${VST3SDK_BASEDIR} /public.sdk/source/main/moduleinit.cpp"
65- "${VST3SDK_BASEDIR} /public.sdk/source/main/pluginfactory.cpp" )
74+ "${VST3SDK_BASEDIR} /public.sdk/source/main/pluginfactory.cpp"
75+ )
6676 if (WIN32 )
6777 target_sources ("${NAME} " PRIVATE
68- "${VST3SDK_BASEDIR} /public.sdk/source/main/dllmain.cpp" )
78+ "${VST3SDK_BASEDIR} /public.sdk/source/main/dllmain.cpp"
79+ )
6980 elseif (APPLE )
7081 target_sources ("${NAME} " PRIVATE
71- "${VST3SDK_BASEDIR} /public.sdk/source/main/macmain.cpp" )
82+ "${VST3SDK_BASEDIR} /public.sdk/source/main/macmain.cpp"
83+ )
7284 else ()
7385 target_sources ("${NAME} " PRIVATE
74- "${VST3SDK_BASEDIR} /public.sdk/source/main/linuxmain.cpp" )
86+ "${VST3SDK_BASEDIR} /public.sdk/source/main/linuxmain.cpp"
87+ )
7588 endif ()
7689endfunction ()
7790
7891# --- VST3SDK hosting ---
92+
93+ # Find C++ filesystem
94+ function (sfizz_find_std_fs TARGET )
95+ add_library ("${TARGET} " INTERFACE )
96+
97+ set (_fs_src
98+ "#include <filesystem>
99+ int main() { return std::filesystem::exists(\" myfile\" ) ? 0 : 1; }" )
100+ set (_expfs_src
101+ "#include <experimental/filesystem>
102+ int main() { return std::experimental::filesystem::exists(\" myfile\" ) ? 0 : 1; }" )
103+
104+ check_cxx_source_compiles("${_fs_src} " HAVE_STDFS_DIRECT)
105+ check_cxx_source_compiles("${_expfs_src} " HAVE_STDFS_EXPERIMENTAL_DIRECT)
106+ if (HAVE_STDFS_DIRECT OR HAVE_STDFS_EXPERIMENTAL_DIRECT)
107+ return ()
108+ endif ()
109+
110+ find_library (STDCPPFS_LIBRARY "stdc++fs" )
111+ if (STDCPPFS_LIBRARY)
112+ set (CMAKE_REQUIRED_LIBRARIES "${STDCPPFS_LIBRARY} " )
113+ check_cxx_source_compiles("${_fs_src} " HAVE_STDFS_LIBSTDCPPFS)
114+ check_cxx_source_compiles("${_expfs_src} " HAVE_STDFS_EXPERIMENTAL_LIBSTDCPPFS)
115+ if (HAVE_STDFS_LIBSTDCPPFS OR HAVE_STDFS_EXPERIMENTAL_LIBSTDCPPFS)
116+ target_link_libraries ("${TARGET} " INTERFACE "${STDCPPFS_LIBRARY} " )
117+ return ()
118+ endif ()
119+ endif ()
120+
121+ find_library (CPPFS_LIBRARY "c++fs" )
122+ if (CPPFS_LIBRARY)
123+ set (CMAKE_REQUIRED_LIBRARIES "${CPPFS_LIBRARY} " )
124+ check_cxx_source_compiles("${_fs_src} " HAVE_STDFS_STDCPPFS)
125+ check_cxx_source_compiles("${_expfs_src} " HAVE_STDFS_EXPERIMENTAL_STDCPPFS)
126+ if (HAVE_STDFS_STDCPPFS OR HAVE_STDFS_EXPERIMENTAL_STDCPPFS)
127+ target_link_libraries ("${TARGET} " INTERFACE "${CPPFS_LIBRARY} " )
128+ return ()
129+ endif ()
130+ endif ()
131+ endfunction ()
132+ sfizz_find_std_fs(stdfs)
133+ add_library (sfizz::stdfs ALIAS stdfs)
134+
79135add_library (vst3sdk_hosting STATIC EXCLUDE_FROM_ALL
80136 "${VST3SDK_BASEDIR} /public.sdk/source/vst/hosting/connectionproxy.cpp"
81137 "${VST3SDK_BASEDIR} /public.sdk/source/vst/hosting/eventlist.cpp"
82138 "${VST3SDK_BASEDIR} /public.sdk/source/vst/hosting/hostclasses.cpp"
139+ "${VST3SDK_BASEDIR} /public.sdk/source/vst/hosting/module.cpp"
83140 "${VST3SDK_BASEDIR} /public.sdk/source/vst/hosting/parameterchanges.cpp"
84141 "${VST3SDK_BASEDIR} /public.sdk/source/vst/hosting/pluginterfacesupport.cpp"
85142 "${VST3SDK_BASEDIR} /public.sdk/source/vst/hosting/plugprovider.cpp"
86- "${VST3SDK_BASEDIR} /public.sdk/source/vst/hosting/processdata.cpp" )
87- if (FALSE )
88- if (WIN32 )
89- target_sources (vst3sdk_hosting PRIVATE
90- "${VST3SDK_BASEDIR} /public.sdk/source/vst/hosting/module_win32.cpp" )
91- elseif (APPLE )
92- target_sources (vst3sdk_hosting PRIVATE
93- "${VST3SDK_BASEDIR} /public.sdk/source/vst/hosting/module_mac.mm" )
94- else ()
95- target_sources (vst3sdk_hosting PRIVATE
96- "${VST3SDK_BASEDIR} /public.sdk/source/vst/hosting/module_linux.cpp" )
97- endif ()
143+ "${VST3SDK_BASEDIR} /public.sdk/source/vst/hosting/processdata.cpp"
144+ )
145+ if (WIN32 )
146+ target_sources (vst3sdk_hosting PRIVATE
147+ "${VST3SDK_BASEDIR} /public.sdk/source/vst/hosting/module_win32.cpp"
148+ )
149+ elseif (APPLE )
150+ target_sources (vst3sdk_hosting PRIVATE
151+ "${VST3SDK_BASEDIR} /public.sdk/source/vst/hosting/module_mac.mm"
152+ )
153+ set_source_files_properties (
154+ "${VST3SDK_BASEDIR} /public.sdk/source/vst/hosting/module_mac.mm"
155+ PROPERTIES
156+ COMPILE_FLAGS "-fobjc-arc"
157+ )
158+ else ()
159+ target_sources (vst3sdk_hosting PRIVATE
160+ "${VST3SDK_BASEDIR} /public.sdk/source/vst/hosting/module_linux.cpp"
161+ )
98162endif ()
99- target_link_libraries (vst3sdk_hosting PUBLIC vst3sdk)
100163
164+ target_link_libraries (vst3sdk_hosting
165+ PUBLIC vst3sdk
166+ PRIVATE sfizz::stdfs
167+ )
101168# --- VSTGUI ---
169+
102170add_library (vst3sdk_vstgui STATIC EXCLUDE_FROM_ALL
103- "${VST3SDK_BASEDIR} /public.sdk/source/vst/vstguieditor.cpp" )
171+ "${VST3SDK_BASEDIR} /public.sdk/source/vst/vstguieditor.cpp"
172+ )
104173if (WIN32 )
105174 target_sources (vst3sdk_vstgui PRIVATE
106- "${VST3SDK_BASEDIR} /public.sdk/source/vst/vstgui_win32_bundle_support.cpp" )
175+ "${VST3SDK_BASEDIR} /public.sdk/source/vst/vstgui_win32_bundle_support.cpp"
176+ )
107177 target_compile_definitions (vst3sdk_vstgui PRIVATE "SMTG_MODULE_IS_BUNDLE=1" )
108178endif ()
179+
109180target_link_libraries (vst3sdk_vstgui PUBLIC vst3sdk sfizz::vstgui)
110181
111182function (plugin_add_vstgui NAME )
@@ -116,7 +187,8 @@ endfunction()
116187foreach (_target vst3sdk_vstgui vst3sdk)
117188 gw_target_warn("${_target} " PUBLIC
118189 "-Wno-extra"
119- "-Wno-class-memaccess" )
190+ "-Wno-class-memaccess"
191+ )
120192 gw_target_warn("${_target} " PRIVATE
121193 "-Wno-multichar"
122194 "-Wno-reorder"
@@ -125,5 +197,6 @@ foreach(_target vst3sdk_vstgui vst3sdk)
125197 "-Wno-unknown-pragmas"
126198 "-Wno-unused-function"
127199 "-Wno-unused-parameter"
128- "-Wno-unused-variable" )
200+ "-Wno-unused-variable"
201+ )
129202endforeach ()
0 commit comments