VCVRack / Fundamental

https://vcvrack.com/Fundamental
Other
235 stars 76 forks source link

Run `make dep` strictly before `make $(TARGET)` puzzle #40

Closed cschol closed 6 years ago

cschol commented 6 years ago

Compilation from a fresh checkout fails when using parallelized build with the -j argument.

Maybe the problem is, that the dependencies are build in parallel with the code files and some code files may need the dependencies, but they are not build yet?

Running just make works fine, running make -j 4 does not.

@ASCustomWorks has the same problem as he is using the same Makefile recipe to build his dependencies.

AScustomWorks commented 6 years ago

Indeed, I updated the 2 delay modules to match Fundamental's code and makefile too. Just tried make -j4, got this error:

src/DelayPlus.cpp:10:10: fatal error: 'samplerate.h' file not found #include "samplerate.h" makealone works ok as @cschol said Is just matter of building the dependencies first, right? (but makefile changes are way over my skills) This way is neater than make dep, make though.

AndrewBelt commented 6 years ago

Try 03c14d5bb6b6076a91070b0b90c8366cdd50abbc in Rack and c9142a85b0edde50ed300a76552ff4dc0a4cb83b in Fundamental This makes dep a target of all object files.

cschol commented 6 years ago

Works now for both Fundamental and @AScustomWorks with make -j 4. Thank you!

cschol commented 6 years ago

Sorry, it doesn't work. I didn't do a pull on Fundamental before I tested.

cschol commented 6 years ago

@AndrewBelt Looks like a botched merge? For some reason 343b66620230199177d4235b26af056fabb6baa9 did not make it in the final Makefile version (the shell command that created the dep directory is not in the Makefile).

Result:

cd dep && curl -OL http://www.mega-nerd.com/SRC/libsamplerate-0.1.9.tar.gz
/bin/sh: 1: cd: can't cd to dep
Makefile:18: recipe for target 'dep/lib/libsamplerate.a' failed
make: *** [dep/lib/libsamplerate.a] Error 2
cschol commented 6 years ago

Another issue: Fundamental (and @AScustomWorks) plugins don't load.

[0.032 warn] Failed to load library ./plugins/Fundamental/plugin.so: ./plugins/Fundamental/plugin.so: undefined symbol: src_delete
[0.045 warn] Failed to load library ./plugins/AS/plugin.so: ./plugins/AS/plugin.so: undefined symbol: src_delete
AndrewBelt commented 6 years ago

Try 1878e96 of Rack

cschol commented 6 years ago

Builds and loads for both plugins now. Thank you!

cschol commented 6 years ago

@AndrewBelt The Makefile is still a problem. It does not create the dep directory if it is not already there. Fails on all platforms if dep is not there. Take a look at the Makefile in the latest revision. The merge took out the $(shell mkdir -p dep) line although one of the commits had it in there.

I didn't notice since make clean does not remove dep (not that it should). Only git clean -dfx does.

AndrewBelt commented 6 years ago

Fixed in 0543c35

make clean should not remove dependencies.

cschol commented 6 years ago

@AndrewBelt Agreed on make clean. I ran the wrong command and it did not remove dep.

Sorry, this does not work. The variable CONFIGURE is initialized when dep does not exist yet, so the --prefix argument has the wrong value, because realpath on a non-existing directory returns an empty string.

You could remove the ":" from CONFIGURE in dep.mk to defer initialization until it is used in Fundamental's Makefile.

AndrewBelt commented 6 years ago

aaf7473

cschol commented 6 years ago

@AndrewBelt Oh, yes. That's a better fix. Tested on Linux and it works.

Now, on Windows, libsamplerate compilation fails. This seems to be a different issue (possibly related to libsamplerate itself) and I'll open a separate issue to track.

cschol commented 6 years ago

The Windows compilation issue is same as #38.