File: Makefile

package info (click to toggle)
libtree 3.1.1-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 288 kB
  • sloc: ansic: 1,412; makefile: 202
file content (30 lines) | stat: -rw-r--r-- 986 bytes parent folder | download | duplicates (2)
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
# This creates exe <- liba.so <- libb.so There are two libraries:
# {first,second}/libb.so and exe has an rpath to first, whereas liba.so has an
# rpath to second

LD_LIBRARY_PATH=

.PHONY: clean

all: check

first/libb.so: 
	@mkdir -p $(@D)
	echo 'int g(){return 1;}' | $(CC) -shared -Wl,-soname,$(@F) -o $@ -x c -

second/libb.so: 
	@mkdir -p $(@D)
	echo 'int g(){return 2;}' | $(CC) -shared -Wl,-soname,$(@F) -o $@ -x c -

liba.so: second/libb.so
	echo 'extern int g(); int f(){return g();}' | $(CC) -shared -Wl,--disable-new-dtags -Wl,-soname,$@ -o $@ '-Wl,-rpath,$$ORIGIN/second' -x c - -Lsecond -lb

exe: first/libb.so liba.so
	echo 'extern int f(); int main(){return f();}' | $(CC) -o $@ -Wl,--disable-new-dtags '-Wl,-rpath,$$ORIGIN,-rpath,$$ORIGIN/first' -x c - -L. -la

check: exe liba.so
	../../libtree -p liba.so  # should find second/libb.so, not first/libb.so
	../../libtree -p exe  # should find second/libb.so, not first/libb.so

clean:
	rm -rf -- *.so exe* first second