2#include <Library/LibrarySettings.hpp>
4#include <score/application/ApplicationContext.hpp>
11#include <llvm/ADT/StringMap.h>
12#include <llvm/ADT/StringRef.h>
14#if LLVM_VERSION_MAJOR >= 17
15#include <llvm/TargetParser/Host.h>
17#include <llvm/Support/Host.h>
24#if __has_include(<llvm/Config/llvm-config-64.h>)
25#include <llvm/Config/llvm-config-64.h>
26#elif __has_include(<llvm/Config/llvm-config.h>)
27#include <llvm/Config/llvm-config.h>
30#if defined(__has_feature)
31#if __has_feature(address_sanitizer) && !defined(__SANITIZE_ADDRESS__)
32#define __SANITIZE_ADDRESS__ 1
36#if defined(SCORE_FHS_BUILD)
37#define SCORE_USE_DISTRO_SYSROOT 1
39#if defined(SCORE_DEPLOYMENT_BUILD)
40#define SCORE_USE_DISTRO_SYSROOT 0
42#define SCORE_USE_DISTRO_SYSROOT 1
46#include <JitCpp/JitOptions.hpp>
48#include <score_git_info.hpp>
53static inline std::string locateSDK()
55 if(QString sdk = qgetenv(
"SCORE_JIT_SDK"); !sdk.isEmpty())
56 return sdk.toStdString();
59 QString path = ctx.getSDKPath();
61 if(QString libPath = QStringLiteral(
"%1/%2/usr").arg(path).arg(SCORE_TAG_NO_V);
62 QDir(libPath +
"/include/c++").exists())
64 return libPath.toStdString();
67 if(QString libPath = path +
"/usr"; QDir(libPath +
"/include/c++").exists())
69 return libPath.toStdString();
72 auto appFolder = qApp->applicationDirPath();
80 return d.absolutePath().toStdString();
82#elif defined(__linux__)
87 return d.absolutePath().toStdString();
89#elif defined(__APPLE__)
93 if(d.cd(
"Frameworks"))
95 if(d.cd(
"Score.Framework"))
97 return d.absolutePath().toStdString();
100 auto framework = QString(appFolder +
"/Score.Framework");
101 if(QDir{}.exists(framework))
102 return framework.toStdString();
104 return "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/"
105 "Developer/SDKs/MacOSX.sdk/usr";
110#if defined(__APPLE__)
111 return "/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/"
112 "Developer/SDKs/MacOSX.sdk/usr";
114 if(QFileInfo(
"/usr/include/c++").isDir())
120 return ctx.getSDKPath().toStdString();
138 static constexpr bool deploying =
true;
140 static constexpr bool deploying =
false;
147 ret.path = locateSDK();
149 ret.sdk_kind = located_sdk::none;
150 if(ret.path.starts_with(
"/usr") || ret.path.starts_with(
"/Applications"))
151 ret.sdk_kind = located_sdk::official;
153 ret.sdk_kind = located_sdk::platform;
156 QDir dir(QString::fromStdString(ret.path));
158 ret.sdk_kind = located_sdk::none;
160 if(!dir.cd(
"include") || !dir.cd(
"c++"))
162 qDebug() <<
"Unable to locate standard headers, fallback to /usr";
165 if(!dir.cd(
"include") || !dir.cd(
"c++"))
167 qDebug() <<
"Unable to locate any standard headers, install C++ development "
169 throw std::runtime_error(
"Unable to compile");
171 ret.sdk_kind = located_sdk::platform;
178populateCompileOptions(std::vector<std::string>& args, CompilerOptions opts)
180 args.push_back(
"-triple");
181 args.push_back(llvm::sys::getProcessTriple());
183 args.push_back(
"-target-cpu");
184 args.push_back(llvm::sys::getHostCPUName().lower());
187 llvm::StringMap<bool> HostFeatures;
188#if LLVM_VERSION_MAJOR < 19
189 bool ok = llvm::sys::getHostCPUFeatures(HostFeatures);
191 constexpr bool ok =
true;
192 HostFeatures = llvm::sys::getHostCPUFeatures();
196 for(
const llvm::StringMapEntry<bool>& F : HostFeatures)
198 args.push_back(
"-target-feature");
199 args.push_back((F.second ?
"+" :
"-") + F.first().str());
204 args.push_back(
"-std=c++23");
205 args.push_back(
"-disable-free");
206 args.push_back(
"-fdeprecated-macro");
207 args.push_back(
"-fmath-errno");
212 args.push_back(
"-mthread-model");
213 args.push_back(
"posix");
215 args.push_back(
"-mconstructor-aliases");
220 args.push_back(
"-fno-use-cxa-atexit");
224 args.push_back(
"-fno-signed-zeros");
225 args.push_back(
"-mreassociate");
226 args.push_back(
"-freciprocal-math");
227 args.push_back(
"-fno-rounding-math");
230 args.push_back(
"-ffp-contract=fast");
232#if !defined(__linux__)
235 args.push_back(
"-Ofast");
236 args.push_back(
"-menable-no-infs");
237 args.push_back(
"-menable-no-nans");
238 args.push_back(
"-ffinite-math-only");
239 args.push_back(
"-ffast-math");
241 args.push_back(
"-O3");
242 args.push_back(
"-fno-builtin");
246 args.push_back(
"-mno-stack-arg-probe");
248 args.push_back(
"-fgnuc-version=4.2.1");
250#if defined(__APPLE__)
251 args.push_back(
"-fmax-type-align=16");
253 args.push_back(
"-mrelocation-model");
254 args.push_back(
"pic");
255 args.push_back(
"-pic-level");
260 args.push_back(
"-fvisibility=hidden");
262 args.push_back(
"-fvisibility-inlines-hidden");
265 args.push_back(
"-ftls-model=local-exec");
266 args.push_back(
"-femulated-tls");
269 args.push_back(
"-mrelax-all");
270 args.push_back(
"-disable-llvm-verifier");
271 args.push_back(
"-discard-value-names");
272#if defined(__SANITIZE_ADDRESS__)
293 args.push_back(
"-fno-assume-sane-operator-new");
295 args.push_back(
"-stack-protector");
297 if(opts.NoExceptions)
299 args.push_back(
"-fno-rtti");
303#if LLVM_VERSION_MAJOR <= 13
304 args.push_back(
"-munwind-tables");
307 args.push_back(
"-fcxx-exceptions");
308 args.push_back(
"-fexceptions");
309 args.push_back(
"-fexternc-nounwind");
311 args.push_back(
"-exception-model=seh");
314 args.push_back(
"-faddrsig");
317 args.push_back(
"-vectorize-loops");
318 args.push_back(
"-vectorize-slp");
321static inline void populateDefinitions(std::vector<std::string>& args)
323#if defined(__APPLE__)
325 args.push_back(
"-DMOODYCAMEL_MAYBE_ALIGN_TO_CACHELINE=");
327#define XSTR(s) STR(s)
330#if defined(BOOST_ASIO_ENABLE_BUFFER_DEBUGGING)
331 args.push_back(
"-DBOOST_ASIO_ENABLE_BUFFER_DEBUGGING");
333#if defined(BOOST_ASIO_HAS_STD_INVOKE_RESULT)
335 "-DBOOST_ASIO_HAS_STD_INVOKE_RESULT=" XSTR(BOOST_ASIO_HAS_STD_INVOKE_RESULT));
337#if defined(BOOST_MATH_DISABLE_FLOAT128)
338 args.push_back(
"-DBOOST_MATH_DISABLE_FLOAT128=" XSTR(BOOST_MATH_DISABLE_FLOAT128));
340#if defined(BOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING)
341 args.push_back(
"-DBOOST_MULTI_INDEX_ENABLE_INVARIANT_CHECKING");
343#if defined(BOOST_MULTI_INDEX_ENABLE_SAFE_MODE)
344 args.push_back(
"-DBOOST_MULTI_INDEX_ENABLE_SAFE_MODE");
346#if defined(BOOST_NO_RTTI)
347 args.push_back(
"-DBOOST_NO_RTTI=" XSTR(BOOST_NO_RTTI));
349#if defined(FMT_SHARED)
350 args.push_back(
"-DFMT_SHARED=" XSTR(FMT_SHARED));
352#if defined(FMT_STATIC_THOUSANDS_SEPARATOR)
354 "-DFMT_STATIC_THOUSANDS_SEPARATOR=" XSTR(FMT_STATIC_THOUSANDS_SEPARATOR));
356#if defined(FMT_USE_FLOAT128)
357 args.push_back(
"-DFMT_USE_FLOAT128=" XSTR(FMT_USE_FLOAT128));
359#if defined(FMT_USE_INT128)
360 args.push_back(
"-DFMT_USE_INT128=" XSTR(FMT_USE_INT128));
362#if defined(FMT_USE_LONG_DOUBLE)
363 args.push_back(
"-DFMT_USE_LONG_DOUBLE=" XSTR(FMT_USE_LONG_DOUBLE));
365#if defined(LIBREMIDI_ALSA)
366 args.push_back(
"-DLIBREMIDI_ALSA");
368#if defined(LIBREMIDI_HAS_JACK_GET_VERSION)
369 args.push_back(
"-DLIBREMIDI_HAS_JACK_GET_VERSION");
371#if defined(LIBREMIDI_HAS_UDEV)
372 args.push_back(
"-DLIBREMIDI_HAS_UDEV");
374#if defined(LIBREMIDI_JACK)
375 args.push_back(
"-DLIBREMIDI_JACK");
377#if defined(LIBREMIDI_KEYBOARD)
378 args.push_back(
"-DLIBREMIDI_KEYBOARD");
380#if defined(LIBREMIDI_PIPEWIRE)
381 args.push_back(
"-DLIBREMIDI_PIPEWIRE");
383#if defined(LIBREMIDI_PIPEWIRE_UMP)
384 args.push_back(
"-DLIBREMIDI_PIPEWIRE_UMP");
386#if defined(LIBREMIDI_USE_BOOST)
387 args.push_back(
"-DLIBREMIDI_USE_BOOST");
389#if defined(LIBREMIDI_WEAKJACK)
390 args.push_back(
"-DLIBREMIDI_WEAKJACK");
392#if defined(QT_CORE_LIB)
393 args.push_back(
"-DQT_CORE_LIB");
395#if defined(QT_DISABLE_DEPRECATED_BEFORE)
396 args.push_back(
"-DQT_DISABLE_DEPRECATED_BEFORE=" XSTR(QT_DISABLE_DEPRECATED_BEFORE));
398#if defined(QT_GUI_LIB)
399 args.push_back(
"-DQT_GUI_LIB");
401#if defined(QT_NETWORK_LIB)
402 args.push_back(
"-DQT_NETWORK_LIB");
404#if defined(QT_NO_JAVA_STYLE_ITERATORS)
405 args.push_back(
"-DQT_NO_JAVA_STYLE_ITERATORS");
407#if defined(QT_NO_KEYWORDS)
408 args.push_back(
"-DQT_NO_KEYWORDS");
410#if defined(QT_NO_LINKED_LIST)
411 args.push_back(
"-DQT_NO_LINKED_LIST");
413#if defined(QT_NO_NARROWING_CONVERSIONS_IN_CONNECT)
414 args.push_back(
"-DQT_NO_NARROWING_CONVERSIONS_IN_CONNECT");
416#if defined(QT_NO_USING_NAMESPACE)
417 args.push_back(
"-DQT_NO_USING_NAMESPACE");
419#if defined(QT_OPENGL_LIB)
420 args.push_back(
"-DQT_OPENGL_LIB");
422#if defined(QT_QMLINTEGRATION_LIB)
423 args.push_back(
"-DQT_QMLINTEGRATION_LIB");
425#if defined(QT_QML_LIB)
426 args.push_back(
"-DQT_QML_LIB");
428#if defined(QT_SERIALPORT_LIB)
429 args.push_back(
"-DQT_SERIALPORT_LIB");
431#if defined(QT_SHADERTOOLS_LIB)
432 args.push_back(
"-DQT_SHADERTOOLS_LIB");
434#if defined(QT_STATEMACHINE_LIB)
435 args.push_back(
"-DQT_STATEMACHINE_LIB");
437#if defined(QT_USE_QSTRINGBUILDER)
438 args.push_back(
"-DQT_USE_QSTRINGBUILDER");
440#if defined(QT_WEBSOCKETS_LIB)
441 args.push_back(
"-DQT_WEBSOCKETS_LIB");
443#if defined(QT_WIDGETS_LIB)
444 args.push_back(
"-DQT_WIDGETS_LIB");
446#if defined(RAPIDJSON_HAS_STDSTRING)
447 args.push_back(
"-DRAPIDJSON_HAS_STDSTRING=" XSTR(RAPIDJSON_HAS_STDSTRING));
449#if defined(SCORE_DEBUG)
450 args.push_back(
"-DSCORE_DEBUG");
452#if defined(SCORE_LIB_BASE)
453 args.push_back(
"-DSCORE_LIB_BASE");
455#if defined(SCORE_LIB_DEVICE)
456 args.push_back(
"-DSCORE_LIB_DEVICE");
458#if defined(SCORE_LIB_INSPECTOR)
459 args.push_back(
"-DSCORE_LIB_INSPECTOR");
461#if defined(SCORE_LIB_LOCALTREE)
462 args.push_back(
"-DSCORE_LIB_LOCALTREE");
464#if defined(SCORE_LIB_PROCESS)
465 args.push_back(
"-DSCORE_LIB_PROCESS");
467#if defined(SCORE_LIB_STATE)
468 args.push_back(
"-DSCORE_LIB_STATE");
470#if defined(SCORE_PLUGIN_AUDIO)
471 args.push_back(
"-DSCORE_PLUGIN_AUDIO");
473#if defined(SCORE_PLUGIN_AUTOMATION)
474 args.push_back(
"-DSCORE_PLUGIN_AUTOMATION");
476#if defined(SCORE_PLUGIN_AVND)
477 args.push_back(
"-DSCORE_PLUGIN_AVND");
479#if defined(SCORE_PLUGIN_CURVE)
480 args.push_back(
"-DSCORE_PLUGIN_CURVE");
482#if defined(SCORE_PLUGIN_DATAFLOW)
483 args.push_back(
"-DSCORE_PLUGIN_DATAFLOW");
485#if defined(SCORE_PLUGIN_DEVICEEXPLORER)
486 args.push_back(
"-DSCORE_PLUGIN_DEVICEEXPLORER");
488#if defined(SCORE_PLUGIN_ENGINE)
489 args.push_back(
"-DSCORE_PLUGIN_ENGINE");
491#if defined(SCORE_PLUGIN_GFX)
492 args.push_back(
"-DSCORE_PLUGIN_GFX");
494#if defined(SCORE_PLUGIN_LIBRARY)
495 args.push_back(
"-DSCORE_PLUGIN_LIBRARY");
497#if defined(SCORE_PLUGIN_MEDIA)
498 args.push_back(
"-DSCORE_PLUGIN_MEDIA");
500#if defined(SCORE_PLUGIN_SCENARIO)
501 args.push_back(
"-DSCORE_PLUGIN_SCENARIO");
503#if defined(SCORE_PLUGIN_TRANSPORT)
504 args.push_back(
"-DSCORE_PLUGIN_TRANSPORT");
506#if defined(SERVUS_USE_AVAHI_CLIENT)
507 args.push_back(
"-DSERVUS_USE_AVAHI_CLIENT");
509#if defined(SPDLOG_COMPILED_LIB)
510 args.push_back(
"-DSPDLOG_COMPILED_LIB=" XSTR(BOOST_MATH_DISABLE_FLOAT128));
512#if defined(SPDLOG_DEBUG_ON)
513 args.push_back(
"-DSPDLOG_DEBUG_ON=" XSTR(BOOST_MATH_DISABLE_FLOAT128));
515#if defined(SPDLOG_FMT_EXTERNAL)
516 args.push_back(
"-DSPDLOG_FMT_EXTERNAL=" XSTR(BOOST_MATH_DISABLE_FLOAT128));
518#if defined(SPDLOG_NO_DATETIME)
519 args.push_back(
"-DSPDLOG_NO_DATETIME=" XSTR(BOOST_MATH_DISABLE_FLOAT128));
521#if defined(SPDLOG_NO_NAME)
522 args.push_back(
"-DSPDLOG_NO_NAME=" XSTR(BOOST_MATH_DISABLE_FLOAT128));
524#if defined(SPDLOG_NO_THREAD_ID)
525 args.push_back(
"-DSPDLOG_NO_THREAD_ID=" XSTR(BOOST_MATH_DISABLE_FLOAT128));
527#if defined(SPDLOG_SHARED_LIB)
528 args.push_back(
"-DSPDLOG_SHARED_LIB=" XSTR(BOOST_MATH_DISABLE_FLOAT128));
530#if defined(SPDLOG_TRACE_ON)
531 args.push_back(
"-DSPDLOG_TRACE_ON=" XSTR(BOOST_MATH_DISABLE_FLOAT128));
533#if defined(TINYSPLINE_DOUBLE_PRECISION)
534 args.push_back(
"-DTINYSPLINE_DOUBLE_PRECISION");
537#if defined(SCORE_DEBUG)
538 args.push_back(
"-DSCORE_DEBUG");
542 args.push_back(
"-D_GNU_SOURCE=1");
543 args.push_back(
"-D__STDC_CONSTANT_MACROS");
544 args.push_back(
"-D__STDC_FORMAT_MACROS");
545 args.push_back(
"-D__STDC_LIMIT_MACROS");
546#if defined(FFTW_SINGLE_ONLY)
547 args.push_back(
"-DFFTW_SINGLE_ONLY");
548#elif defined(FFTW_DOUBLE_ONLY)
549 args.push_back(
"-DFFTW_DOUBLE_ONLY");
553static inline auto getPotentialTriples()
555 std::vector<QString> triples;
556 triples.push_back(LLVM_DEFAULT_TARGET_TRIPLE);
557 triples.push_back(LLVM_HOST_TRIPLE);
558#if defined(__x86_64__)
559 triples.push_back(
"x86_64-pc-linux-gnu");
560 triples.push_back(
"x86_64-unknown-linux-gnu");
561#elif defined(__i686__)
562 triples.push_back(
"i686-pc-linux-gnu");
563#elif defined(__i586__)
564 triples.push_back(
"i586-pc-linux-gnu");
565#elif defined(__i486__)
566 triples.push_back(
"i486-pc-linux-gnu");
567#elif defined(__i386__)
568 triples.push_back(
"i386-pc-linux-gnu");
569#elif defined(__arm__)
570 triples.push_back(
"armv8-none-linux-gnueabi");
571 triples.push_back(
"armv8-pc-linux-gnueabi");
572 triples.push_back(
"armv8-none-linux-gnu");
573 triples.push_back(
"armv8-pc-linux-gnu");
574 triples.push_back(
"armv7-none-linux-gnueabi");
575 triples.push_back(
"armv7-pc-linux-gnueabi");
576 triples.push_back(
"armv7-none-linux-gnu");
577 triples.push_back(
"armv7-pc-linux-gnu");
578 triples.push_back(
"armv6-none-linux-gnueabi");
579 triples.push_back(
"armv6-pc-linux-gnueabi");
580 triples.push_back(
"armv6-none-linux-gnu");
581 triples.push_back(
"armv6-pc-linux-gnu");
582#elif defined(__aarch64__)
583 triples.push_back(
"aarch64-none-linux-gnueabi");
584 triples.push_back(
"aarch64-pc-linux-gnueabi");
585 triples.push_back(
"aarch64-unknown-linux-gnueabi");
586 triples.push_back(
"aarch64-none-linux-gnu");
587 triples.push_back(
"aarch64-pc-linux-gnu");
588 triples.push_back(
"aarch64-unknown-linux-gnu");
589 triples.push_back(
"aarch64-redhat-linux");
633static inline void populateIncludeDirs(std::vector<std::string>& args)
635 auto sdk_location = locateSDKWithFallback();
636 auto& sdk = sdk_location.path;
637 auto qsdk = QString::fromStdString(sdk);
639 qDebug() <<
"SDK located: " << qsdk;
640 std::string llvm_lib_version = SCORE_LLVM_VERSION;
641#if defined(__APPLE__) && SCORE_FHS_BUILD
642 llvm_lib_version =
"13.0.0";
645 QDir resDir = QString(qsdk +
"/lib/clang");
646 auto entries = resDir.entryList(QDir::Dirs | QDir::NoDotAndDotDot);
647 if(!entries.empty() && !entries.contains(SCORE_LLVM_VERSION))
648 llvm_lib_version = entries.front().toStdString();
650#if defined(__APPLE__) && SCORE_FHS_BUILD
651 std::string appleSharedSdk
652 =
"/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/"
654 args.push_back(
"-resource-dir");
655 args.push_back(appleSharedSdk +
"/lib/clang/" + llvm_lib_version);
657 args.push_back(
"-resource-dir");
658 args.push_back(sdk +
"/lib/clang/" + llvm_lib_version);
661#if defined(_LIBCPP_VERSION)
662 args.push_back(
"-stdlib=libc++");
663 args.push_back(
"-internal-isystem");
665#if defined(__APPLE__) && SCORE_FHS_BUILD
666 args.push_back(appleSharedSdk +
"/include/c++/v1");
668 args.push_back(sdk +
"/include/c++/v1");
671#elif defined(_GLIBCXX_RELEASE)
675 const auto libstdcpp_major = QString::number(_GLIBCXX_RELEASE);
677 QDir cpp_dir{
"/usr/include/c++"};
679 QDirIterator cpp_it{cpp_dir};
680 while(cpp_it.hasNext())
683 auto ver = cpp_it.fileName();
684 if(!ver.isEmpty() && ver.startsWith(libstdcpp_major))
686 auto gcc = ver.toStdString();
689 args.push_back(
"-internal-isystem");
690 args.push_back(
"/usr/include/c++/" + gcc);
693 for(
auto& triple : getPotentialTriples())
695 if(cpp_dir.exists(triple))
698 args.push_back(
"-internal-isystem");
699 args.push_back(
"/usr/include/c++/" + gcc +
"/" + triple.toStdString());
710#if defined(__APPLE__) && SCORE_FHS_BUILD
711 args.push_back(
"-internal-isystem");
712 args.push_back(appleSharedSdk +
"/lib/clang/" + llvm_lib_version +
"/include");
713 args.push_back(
"-internal-externc-isystem");
715 "/Applications/Xcode.app/Contents/Developer//Platforms/MacOSX.platform/Developer/"
716 "SDKs/MacOSX.sdk/usr/include");
718 args.push_back(
"-internal-isystem");
719 args.push_back(sdk +
"/lib/clang/" + llvm_lib_version +
"/include");
720 args.push_back(
"-internal-externc-isystem");
721 args.push_back(sdk +
"/include");
733 auto include = [&](
const std::string& path) {
734 std::string path_to_include = sdk +
"/include/" + path;
735 auto qpath = QString::fromStdString(path_to_include);
736 if(!QFileInfo{qpath}.isDir())
738 qDebug() <<
"Trying to include non-existent path: " << qpath;
742 args.push_back(
"-isystem" + sdk +
"/include/" + path);
746#if defined(__linux__)
748#if defined(__x86_64__)
749 include(
"x86_64-linux-gnu");
751 include(
"aarch64-linux-gnu");
756 std::string qt_folder =
"qt";
757 if(QFile::exists(qsdk +
"/include/qt6/QtCore"))
760 QDirIterator qtVersionFolder{
761 qsdk +
"/include/" + QString::fromStdString(qt_folder) +
"/QtCore",
763 QDir::Filter::Dirs | QDir::Filter::NoDotAndDotDot,
765 std::string qt_version = QT_VERSION_STR;
766 if(qtVersionFolder.hasNext())
768 QDir sub = qtVersionFolder.next();
769 qt_version = sub.dirName().toStdString();
771 include(qt_folder +
"");
772 include(qt_folder +
"/QtCore");
773 include(qt_folder +
"/QtCore/" + qt_version);
774 include(qt_folder +
"/QtCore/" + qt_version +
"/QtCore");
775 include(qt_folder +
"/QtGui");
776 include(qt_folder +
"/QtGui/" + qt_version);
777 include(qt_folder +
"/QtGui/" + qt_version +
"/QtGui");
778 include(qt_folder +
"/QtWidgets");
779 include(qt_folder +
"/QtWidgets/" + qt_version);
780 include(qt_folder +
"/QtWidgets/" + qt_version +
"/QtWidgets");
781 include(qt_folder +
"/QtQml");
782 include(qt_folder +
"/QtQml/" + qt_version);
783 include(qt_folder +
"/QtQml/" + qt_version +
"/QtQml");
784 include(qt_folder +
"/QtQuick");
785 include(qt_folder +
"/QtQuick/" + qt_version);
786 include(qt_folder +
"/QtQuick/" + qt_version +
"/QtQuick");
787 include(qt_folder +
"/QtXml");
788 include(qt_folder +
"/QtNetwork");
789 include(qt_folder +
"/QtSvg");
790 include(qt_folder +
"/QtSql");
791 include(qt_folder +
"/QtOpenGL");
792 include(qt_folder +
"/QtShaderTools");
793 include(qt_folder +
"/QtShaderTools/" + qt_version);
794 include(qt_folder +
"/QtShaderTools/" + qt_version +
"/QtShaderTools");
795 include(qt_folder +
"/QtSerialPort");
797 if(sdk_location.sdk_kind == located_sdk::official && sdk_location.deploying)
803 auto thirdparty_include_dirs = {
804 "/3rdparty/libossia/3rdparty/boost_1_88_0",
805 "/3rdparty/libossia/3rdparty/nano-signal-slot/include",
806 "/3rdparty/libossia/3rdparty/spdlog/include",
807 "/3rdparty/libossia/3rdparty/dr_libs",
808 "/3rdparty/libossia/3rdparty/Flicks",
809 "/3rdparty/libossia/3rdparty/fmt/include",
810 "/3rdparty/libossia/3rdparty/magic_enum/include",
811 "/3rdparty/libossia/3rdparty/readerwriterqueue",
812 "/3rdparty/libossia/3rdparty/concurrentqueue",
813 "/3rdparty/libossia/3rdparty/SmallFunction/smallfun/include",
814 "/3rdparty/libossia/3rdparty/websocketpp",
815 "/3rdparty/libossia/3rdparty/rapidjson/include",
816 "/3rdparty/libossia/3rdparty/libremidi/include",
817 "/3rdparty/libossia/3rdparty/oscpack",
818 "/3rdparty/libossia/3rdparty/rnd/include",
819 "/3rdparty/libossia/3rdparty/span/include",
820 "/3rdparty/libossia/3rdparty/tuplet/include",
821 "/3rdparty/libossia/3rdparty/unordered_dense/include",
822 "/3rdparty/libossia/3rdparty/multi_index/include",
823 "/3rdparty/libossia/3rdparty/verdigris/src",
824 "/3rdparty/libossia/3rdparty/weakjack",
826 for(
auto path : thirdparty_include_dirs)
828 args.push_back(
"-isystem" + std::string(SCORE_ROOT_SOURCE_DIR) + path);
830 auto src_include_dirs
831 = {
"/3rdparty/libossia/src",
832 "/3rdparty/avendish/include",
834 "/src/plugins/score-lib-state",
835 "/src/plugins/score-lib-device",
836 "/src/plugins/score-lib-process",
837 "/src/plugins/score-lib-inspector",
838 "/src/plugins/score-plugin-avnd",
839 "/src/plugins/score-plugin-gfx",
840 "/src/plugins/score-plugin-jit",
841 "/src/plugins/score-plugin-nodal",
842 "/src/plugins/score-plugin-remotecontrol",
843 "/src/plugins/score-plugin-audio",
844 "/src/plugins/score-plugin-curve",
845 "/src/plugins/score-plugin-dataflow",
846 "/src/plugins/score-plugin-engine",
847 "/src/plugins/score-plugin-scenario",
848 "/src/plugins/score-plugin-library",
849 "/src/plugins/score-plugin-deviceexplorer",
850 "/src/plugins/score-plugin-media",
851 "/src/plugins/score-plugin-loop",
852 "/src/plugins/score-plugin-midi",
853 "/src/plugins/score-plugin-protocols",
854 "/src/plugins/score-plugin-recording",
855 "/src/plugins/score-plugin-automation",
856 "/src/plugins/score-plugin-js",
857 "/src/plugins/score-plugin-mapping"};
859 for(
auto path : src_include_dirs)
861 args.push_back(
"-I" + std::string(SCORE_ROOT_SOURCE_DIR) + path);
867 "/src/plugins/score-lib-state",
868 "/src/plugins/score-lib-device",
869 "/src/plugins/score-lib-process",
870 "/src/plugins/score-lib-inspector",
871 "/src/plugins/score-plugin-avnd",
872 "/src/plugins/score-plugin-gfx",
873 "/src/plugins/score-plugin-jit",
874 "/src/plugins/score-plugin-nodal",
875 "/src/plugins/score-plugin-remotecontrol",
876 "/src/plugins/score-plugin-audio",
877 "/src/plugins/score-plugin-curve",
878 "/src/plugins/score-plugin-dataflow",
879 "/src/plugins/score-plugin-engine",
880 "/src/plugins/score-plugin-scenario",
881 "/src/plugins/score-plugin-library",
882 "/src/plugins/score-plugin-deviceexplorer",
883 "/src/plugins/score-plugin-media",
884 "/src/plugins/score-plugin-loop",
885 "/src/plugins/score-plugin-midi",
886 "/src/plugins/score-plugin-protocols",
887 "/src/plugins/score-plugin-recording",
888 "/src/plugins/score-plugin-automation",
889 "/src/plugins/score-plugin-js",
890 "/src/plugins/score-plugin-mapping",
891 "/3rdparty/libossia/src"};
893 for(
auto path : src_build_dirs)
895 args.push_back(
"-I" + std::string(SCORE_ROOT_BINARY_DIR) + path);
Definition LibrarySettings.hpp:46
Definition JitPlatform.hpp:126
T & settings() const
Access a specific Settings model instance.
Definition ApplicationContext.hpp:40