You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

167 lines
7.1KB

  1. RACK_DIR ?= ../..
  2. FLAGS += -Idep/include
  3. CFLAGS +=
  4. CXXFLAGS +=
  5. LDFLAGS +=
  6. SOURCES += src/Prototype.cpp
  7. DISTRIBUTABLES += res examples
  8. DISTRIBUTABLES += $(wildcard LICENSE*)
  9. include $(RACK_DIR)/arch.mk
  10. DUKTAPE ?= 0
  11. QUICKJS ?= 1
  12. LUAJIT ?= 1
  13. PYTHON ?= 0
  14. SUPERCOLLIDER ?= 1
  15. # Entropia File System Watcher
  16. efsw := dep/lib/libefsw-static-release.a
  17. DEPS += $(efsw)
  18. OBJECTS += $(efsw)
  19. $(efsw):
  20. cd dep && $(WGET) "https://bitbucket.org/SpartanJ/efsw/get/e6afbec564e2.zip"
  21. cd dep && $(SHA256) e6afbec564e2.zip 8589dbedac7434f1863637af696354a9f1fcc28c6397c37b492a797ae62976be
  22. cd dep && $(UNZIP) e6afbec564e2.zip
  23. cd dep/SpartanJ-efsw-e6afbec564e2 && premake4 gmake
  24. cd dep/SpartanJ-efsw-e6afbec564e2 && $(MAKE) -C make/* config=release efsw-static-lib
  25. mkdir -p dep/lib dep/include
  26. cd dep/SpartanJ-efsw-e6afbec564e2 && cp lib/libefsw-static-release.a $(DEP_PATH)/lib/
  27. cd dep/SpartanJ-efsw-e6afbec564e2 && cp -R include/efsw $(DEP_PATH)/include/
  28. # Duktape
  29. ifeq ($(DUKTAPE), 1)
  30. SOURCES += src/DuktapeEngine.cpp
  31. duktape := dep/duktape-2.4.0/src/duktape.c
  32. DEPS += $(duktape)
  33. SOURCES += $(duktape)
  34. FLAGS += -Idep/duktape-2.4.0/src
  35. $(duktape):
  36. $(WGET) "https://duktape.org/duktape-2.4.0.tar.xz"
  37. $(SHA256) duktape-2.4.0.tar.xz 86a89307d1633b5cedb2c6e56dc86e92679fc34b05be551722d8cc69ab0771fc
  38. cd dep && $(UNTAR) ../duktape-2.4.0.tar.xz
  39. endif
  40. # QuickJS
  41. ifeq ($(QUICKJS), 1)
  42. SOURCES += src/QuickJSEngine.cpp
  43. quickjs := dep/lib/quickjs/libquickjs.a
  44. DEPS += $(quickjs)
  45. OBJECTS += $(quickjs)
  46. QUICKJS_MAKE_FLAGS += prefix="$(DEP_PATH)"
  47. ifdef ARCH_WIN
  48. QUICKJS_MAKE_FLAGS += CONFIG_WIN32=y
  49. endif
  50. $(quickjs):
  51. cd QuickJS && $(MAKE) $(QUICKJS_MAKE_FLAGS)
  52. cd QuickJS && $(MAKE) $(QUICKJS_MAKE_FLAGS) install
  53. endif
  54. # LuaJIT
  55. ifeq ($(LUAJIT), 1)
  56. SOURCES += src/LuaJITEngine.cpp
  57. luajit := dep/lib/libluajit-5.1.a
  58. OBJECTS += $(luajit)
  59. DEPS += $(luajit)
  60. $(luajit):
  61. $(WGET) "http://luajit.org/download/LuaJIT-2.0.5.tar.gz"
  62. $(SHA256) LuaJIT-2.0.5.tar.gz 874b1f8297c697821f561f9b73b57ffd419ed8f4278c82e05b48806d30c1e979
  63. cd dep && $(UNTAR) ../LuaJIT-2.0.5.tar.gz
  64. cd dep/LuaJIT-2.0.5 && $(MAKE) BUILDMODE=static PREFIX="$(DEP_PATH)" install
  65. endif
  66. # SuperCollider
  67. ifeq ($(SUPERCOLLIDER), 1)
  68. SOURCES += src/SuperColliderEngine.cpp
  69. FLAGS += -Idep/supercollider/include -Idep/supercollider/include/common -Idep/supercollider/lang -Idep/supercollider/common -Idep/supercollider/include/plugin_interface
  70. supercollider := dep/supercollider/build/lang/libsclang.a
  71. OBJECTS += $(supercollider)
  72. DEPS += $(supercollider)
  73. SUPERCOLLIDER_CMAKE_FLAGS += -DSUPERNOVA=OFF -DSC_EL=OFF -DSC_VIM=OFF -DSC_ED=OFF -DSC_IDE=OFF -DSC_ABLETON_LINK=OFF -DSC_QT=OFF -DCMAKE_BUILD_TYPE=Release -DSCLANG_SERVER=OFF -DBUILD_TESTING=OFF
  74. SUPERCOLLIDER_SUBMODULES += external_libraries/hidapi external_libraries/nova-simd external_libraries/nova-tt external_libraries/portaudio_sc_org external_libraries/yaml-cpp
  75. SUPERCOLLIDER_BRANCH := topic/vcv-prototype-support
  76. # TODO need some better way of getting link library names!
  77. LDFLAGS += dep/supercollider/build/lang/../external_libraries/libtlsf.a /usr/lib/libpthread.dylib dep/supercollider/build/lang/../external_libraries/hidapi/mac/libhidapi.a dep/supercollider/build/lang/../external_libraries/hidapi/hidapi_parser/libhidapi_parser.a dep/supercollider/build/lang/../external_libraries/libboost_thread_lib.a dep/supercollider/build/lang/../external_libraries/libboost_system_lib.a dep/supercollider/build/lang/../external_libraries/libboost_regex_lib.a dep/supercollider/build/lang/../external_libraries/libboost_filesystem_lib.a /usr/local/opt/readline/lib/libreadline.dylib -framework Carbon -framework CoreAudio -framework CoreMIDI -framework CoreServices -framework IOKit -framework CoreFoundation /usr/local/opt/libsndfile/lib/libsndfile.dylib dep/supercollider/build/lang/../external_libraries/libyaml.a
  78. $(supercollider):
  79. cd dep && git clone "https://github.com/supercollider/supercollider" --branch $(SUPERCOLLIDER_BRANCH) --depth 5
  80. cd dep/supercollider && git submodule update --init -- $(SUPERCOLLIDER_SUBMODULES)
  81. cd dep/supercollider && mkdir build && cd build
  82. cd dep/supercollider/build && cmake .. -G "Unix Makefiles" $(SUPERCOLLIDER_CMAKE_FLAGS)
  83. cd dep/supercollider/build && $(MAKE) libsclang
  84. endif
  85. # Python
  86. ifeq ($(PYTHON), 1)
  87. SOURCES += src/PythonEngine.cpp
  88. # Note this is a dynamic library, not static.
  89. python := dep/lib/libpython3.8.so.1.0
  90. DEPS += $(python) $(numpy)
  91. FLAGS += -Idep/include/python3.8
  92. # TODO Test these flags on all platforms
  93. # Make dynamic linker look in the plugin folder for libpython.
  94. LDFLAGS += -Wl,-rpath,'$$ORIGIN'/dep/lib
  95. LDFLAGS += -Ldep/lib -lpython3.8
  96. LDFLAGS += -lcrypt -lpthread -ldl -lutil -lm
  97. DISTRIBUTABLES += $(python)
  98. DISTRIBUTABLES += dep/lib/python3.8
  99. $(python):
  100. $(WGET) "https://www.python.org/ftp/python/3.8.0/Python-3.8.0.tar.xz"
  101. $(SHA256) Python-3.8.0.tar.xz b356244e13fb5491da890b35b13b2118c3122977c2cd825e3eb6e7d462030d84
  102. cd dep && $(UNTAR) ../Python-3.8.0.tar.xz
  103. cd dep/Python-3.8.0 && $(CONFIGURE) --build=$(MACHINE) --enable-shared --enable-optimizations
  104. cd dep/Python-3.8.0 && $(MAKE) build_all
  105. cd dep/Python-3.8.0 && $(MAKE) install
  106. numpy := dep/lib/python3.8/site-packages/numpy
  107. FLAGS += -Idep/lib/python3.8/site-packages/numpy/core/include
  108. $(numpy): $(python)
  109. $(WGET) "https://github.com/numpy/numpy/releases/download/v1.17.3/numpy-1.17.3.tar.gz"
  110. $(SHA256) numpy-1.17.3.tar.gz c93733dbebc2599d2747ceac4b18825a73767d289176ed8e02090325656d69aa
  111. cd dep && $(UNTAR) ../numpy-1.17.3.tar.gz
  112. # Don't try to find an external BLAS and LAPACK library.
  113. # Don't install to an egg folder.
  114. # Make sure to use our built Python.
  115. cd dep/numpy-1.17.3 && LD_LIBRARY_PATH=../lib NPY_BLAS_ORDER= NPY_LAPACK_ORDER= "$(DEP_PATH)"/bin/python3.8 setup.py build -j4 install --single-version-externally-managed --root=/
  116. # scipy: $(numpy)
  117. # $(WGET) "https://github.com/scipy/scipy/releases/download/v1.3.1/scipy-1.3.1.tar.xz"
  118. # $(SHA256) scipy-1.3.1.tar.xz 326ffdad79f113659ed0bca80f5d0ed5e28b2e967b438bb1f647d0738073a92e
  119. # cd dep && $(UNTAR) ../scipy-1.3.1.tar.xz
  120. # cd dep/scipy-1.3.1 && "$(DEP_PATH)"/bin/python3.7 setup.py build -j4 install
  121. endif
  122. # # Julia
  123. # julia := dep/lib/libjulia.a
  124. # DEPS += $(julia)
  125. # $(julia):
  126. # $(WGET) "https://github.com/JuliaLang/julia/releases/download/v1.2.0/julia-1.2.0-full.tar.gz"
  127. # $(SHA256) julia-1.2.0-full.tar.gz 2419b268fc5c3666dd9aeb554815fe7cf9e0e7265bc9b94a43957c31a68d9184
  128. # cd dep && $(UNTAR) ../julia-1.2.0-full.tar.gz
  129. # # Csound
  130. # csound := dep/lib/libcsound.a
  131. # DEPS += $(csound)
  132. # $(csound):
  133. # $(WGET) "https://github.com/csound/csound/archive/6.13.0.tar.gz"
  134. # $(SHA256) 6.13.0.tar.gz 183beeb3b720bfeab6cc8af12fbec0bf9fef2727684ac79289fd12d0dfee728b
  135. # cd dep && $(UNTAR) ../6.13.0.tar.gz
  136. # # LLVM
  137. # llvm := dep/lib/libllvm.a
  138. # DEPS += $(llvm)
  139. # $(llvm):
  140. # $(WGET) "https://github.com/llvm/llvm-project/releases/download/llvmorg-8.0.1/llvm-8.0.1.src.tar.xz"
  141. # $(SHA256) llvm-8.0.1.src.tar.xz 44787a6d02f7140f145e2250d56c9f849334e11f9ae379827510ed72f12b75e7
  142. # cd dep && $(UNTAR) ../llvm-8.0.1.src.tar.xz
  143. # cd dep/llvm-8.0.1.src && mkdir -p build
  144. # cd dep/llvm-8.0.1.src/build && $(CMAKE) ..
  145. # cd dep/llvm-8.0.1.src/build && $(MAKE)
  146. # cd dep/llvm-8.0.1.src/build && $(MAKE) install
  147. include $(RACK_DIR)/plugin.mk