VCV-Prototype icon indicating copy to clipboard operation
VCV-Prototype copied to clipboard

[makefile] Update supercollider to v3.12

Open SteveRussell33 opened this issue 4 years ago • 6 comments
trafficstars

Updates supercollider to v3.12 instead of using old vcv-prototype-support branch. Fixes https://github.com/VCVRack/VCV-Prototype/issues/54#issuecomment-923109721

SteveRussell33 avatar Sep 20 '21 19:09 SteveRussell33

Nice, make dep works now. But I'm still getting an error while building the plugin with make:

g++ -std=c++11 -Wsuggest-override  -Idep/include -Idep/supercollider/include -Idep/supercollider/include/common -Idep/supercollider/lang -Idep/supercollider/common -Idep/supercollider/include/plugin_interface -Idep/vult -Idep/include/libpd -DHAVE_LIBDL -DPD_INTERNAL -Ofast -DINTERP -fPIC -I../Rack-SDK-1.1.6//include -I../Rack-SDK-1.1.6//dep/include -MMD -MP -g -O3 -march=nocona -funsafe-math-optimizations -Wall -Wextra -Wno-unused-parameter -DARCH_WIN -D_USE_MATH_DEFINES  -c -o build/src/SuperColliderEngine.cpp.o src/SuperColliderEngine.cpp
In file included from src/SuperColliderEngine.cpp:4:
dep/supercollider/lang/LangSource/SC_LanguageConfig.hpp:28:10: fatal error: boost/filesystem/path.hpp: No such file or directory
   28 | #include <boost/filesystem/path.hpp>
      |          ^~~~~~~~~~~~~~~~~~~~~~~~~~~
compilation terminated.
make: *** [../Rack-SDK-1.1.6//compile.mk:69: build/src/SuperColliderEngine.cpp.o] Error 1

Do I have to install Boost via pacman, maybe?

clwe avatar Sep 21 '21 11:09 clwe

Installing Boost via pacman works: pacman -S mingw-w64-x86_64-boost So that builds successfully. But maybe we should include the Boost header directory via the build command, since it's already "bundled" within the supercollider build directory?

clwe avatar Sep 21 '21 12:09 clwe

Some other obseravtions:

  • On my machine the generated supercollider library is called liblibsclang.a and resides in dep/supercollider/build/lang/liblibsclang.a.
  • The HIDAPI Library is in dep/supercollider/build/external_libraries/hidapi/windows/libhidapi.a.

So make fails to recognize that the library was already built and tries to rebuild it, which fails, because the build folder is already there.

clwe avatar Sep 21 '21 12:09 clwe

Installing Boost via pacman works: pacman -S mingw-w64-x86_64-boost So that builds successfully. But maybe we should include the Boost header directory via the build command, since it's already "bundled" within the supercollider build directory?

Related: https://github.com/VCVRack/VCV-Prototype/issues/52#issuecomment-865115318

mxa avatar Sep 21 '21 12:09 mxa

I just read your other https://github.com/VCVRack/VCV-Prototype/issues/54#issuecomment-923109721 about the boost headers. That helped! I think we can also add -Idep/supercollider/external_libraries/boost/ to the FLAGS variable to use the boost that is used to build libsclang.a.

While that resolves the error in https://github.com/VCVRack/VCV-Prototype/pull/59#issuecomment-923900319, (so boost/filesystem works) it throws new errors about the flags -lasound and -ludev. I guess they are part of the full boost package when I install it with pacman, but maybe they are not part of the built-in boost?

So when compiling with FLAGS += ... -Idep/supercollider/external_libraries/boost/ I'm getting this right now:

$ make
g++ -o plugin.dll build/src/Prototype.cpp.o build/src/SuperColliderEngine.cpp.o dep/lib/libefsw-static-release.a dep/supercollider/build/lang/liblibsclang.a dep/supercollider/build/external_libraries/libtlsf.a dep/supercollider/build/external_libraries/hidapi/windows/libhidapi.a dep/supercollider/build/external_libraries/hidapi/hidapi_parser/libhidapi_parser.a dep/supercollider/build/external_libraries/libboost_thread_lib.a dep/supercollider/build/external_libraries/libboost_system_lib.a dep/supercollider/build/external_libraries/libboost_regex_lib.a dep/supercollider/build/external_libraries/libboost_filesystem_lib.a dep/supercollider/build/external_libraries/libyaml.a -lpthread -lasound -ludev -shared -L../Rack-SDK-1.1.6/ -lRack
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -lasound
C:/msys64/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/10.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: cannot find -ludev
collect2.exe: error: ld returned 1 exit status
make: *** [../Rack-SDK-1.1.6//compile.mk:59: plugin.dll] Error 1

When I remove those flags, I get linker errors, so I guess those libraries are really needed.

clwe avatar Sep 21 '21 13:09 clwe

What I can tell from my cursory searches is that asound is a linux package related to Advanced Linux Sound Architecture (ALSA). dep\supercollider\external_libraries\portaudio\portaudio_submodule\CMakeLists.txt line 314

udev is another Linux package "libudev-dev" needed by hidapi test program (remove?) dep\supercollider\external_libraries\hidapi\testgui\Makefile.linux line 17

SteveRussell33 avatar Sep 21 '21 14:09 SteveRussell33