File: Make.stublibs

package info (click to toggle)
pd-iemmatrix 0.5.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,588 kB
  • sloc: ansic: 15,027; makefile: 285; sh: 125
file content (76 lines) | stat: -rw-r--r-- 3,602 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
#####################################################################
# STUB LIBRARIES

# this is a makefile snippet (to be included by the main Makefile
# it depends on pd-lib-builder,...


# stub-libraries help with weak linking against some optional libraries
# - dylink against their stubbed library
# - can be dlopen()ed
# - have a well-known name and path
# - stub-libraries provide the addresses of (some) symbols in the stubbed library
ifneq ($(filter %.$(shared.extension), .$(extension)), )
  # $(extension) already ends with $(shared.extension), no need to duplicate it
  shared.fullextension = $(extension)
else
  shared.fullextension = $(extension).$(shared.extension)
endif

c.flags += -DSHARED_LIBRARY_EXTENSION='"$(shared.fullextension)"'

lib$(lib.name)Stub_%.$(shared.fullextension): stub/%.$(object.extension)
	$(info ++++ info: linking stub library $@: $<, $(c.ldlibs), $(shared.ldlibs), $(stub.ldlibs))
	$(compile-c) $(shared.ldflags) -o $@ $< $(c.ldlibs) $(shared.ldlibs) $(stub.ldlibs)

# sometimes dependencies for the stub libraries are not picked up correctly,
# and the stub libraries are built with the default shared-library dependencies
# (leaving out our stub object!)
# listing each stub-library explicitly, seems to fix this... ¯\_(ツ)_/¯
# I don't know exactly when it happens;
# at least I've seen this for
# - Windows/.dll
# - Linux/.Linux-amd64.32.so
# however NOT for
# - Linux/.pd_linux.so
lib$(lib.name)Stub_fftw.$(extension).$(shared.extension): stub/fftw.$(object.extension)
lib$(lib.name)Stub_fftwf.$(extension).$(shared.extension): stub/fftwf.$(object.extension)
lib$(lib.name)Stub_gsl.$(extension).$(shared.extension): stub/gsl.$(object.extension)
lib$(lib.name)Stub_sndfile.$(extension).$(shared.extension): stub/sndfile.$(object.extension)
lib$(lib.name)Stub_fftw.$(extension): stub/fftw.$(object.extension)
lib$(lib.name)Stub_fftwf.$(extension): stub/fftwf.$(object.extension)
lib$(lib.name)Stub_gsl.$(extension): stub/gsl.$(object.extension)
lib$(lib.name)Stub_sndfile.$(extension): stub/sndfile.$(object.extension)


lib$(lib.name)Stub_fftw.$(shared.fullextension): stub.ldlibs = $(FFTW_LIBS)
lib$(lib.name)Stub_fftwf.$(shared.fullextension): stub.ldlibs = $(FFTWF_LIBS)
lib$(lib.name)Stub_sndfile.$(shared.fullextension): stub.ldlibs = $(SNDFILE_LIBS)
lib$(lib.name)Stub_gsl.$(shared.fullextension): stub.ldlibs = $(GSL_LIBS)

## on macOS this is needed to properly set the install_name.
## on Linux, it is used to set the soname
## (on Windows it doesn't do anythng, at least if the correct linking rule is invoked)
lib$(lib.name)Stub_fftw.$(shared.fullextension): shared.lib = lib$(lib.name)Stub_fftw.$(shared.fullextension)
lib$(lib.name)Stub_fftwf.$(shared.fullextension): shared.lib = lib$(lib.name)Stub_fftwf.$(shared.fullextension)
lib$(lib.name)Stub_sndfile.$(shared.fullextension): shared.lib = lib$(lib.name)Stub_sndfile.$(shared.fullextension)
lib$(lib.name)Stub_gsl.$(shared.fullextension): shared.lib = lib$(lib.name)Stub_gsl.$(shared.fullextension)

stub.libs =
stub.libs += lib$(lib.name)Stub_fftw.$(shared.fullextension)
stub.libs += lib$(lib.name)Stub_fftwf.$(shared.fullextension)
stub.libs += lib$(lib.name)Stub_sndfile.$(shared.fullextension)
stub.libs += lib$(lib.name)Stub_gsl.$(shared.fullextension)

executables += $(stub.libs)

.PHONY: stubs
stubs: $(stub.libs)
post: $(stub.libs)

.PHONY: clean.stublibs
clean: clean.stublibs
clean.stublibs:
	rm -f $(stub.libs)
	rm -f $(stub.libs:%.$(shared.fullextension)=%.$(object.extension))
	rm -f $(stub.libs:lib$(lib.name)Stub_%.$(shared.fullextension)=stub/%.$(object.extension))