add the BUILD variable to the makefiles to control the build root
[libc-test] / src / functional / Makefile
1 CFLAGS+=-pipe -std=c99 -D_POSIX_C_SOURCE=200809L -Wall -Wno-unused-function -Wno-missing-braces
2 LDFLAGS+=
3 LDLIBS+=
4 BUILD?=.
5
6 SRC=$(sort $(wildcard *.c))
7 OBJ=$(SRC:%.c=$(BUILD)/%.o)
8 DSOOBJ=$(filter %_dso.o,$(OBJ))
9 BINOBJ=$(filter-out %_dso.o,$(OBJ))
10 NO_DL_OBJ=$(filter-out %dlopen.o,$(BINOBJ))
11 DSO=$(DSOOBJ:.o=.so)
12 BIN=$(BINOBJ:.o=)
13 BIN_STATIC=$(NO_DL_OBJ:.o=-static)
14 ALL=$(BIN) $(BIN_STATIC) $(DSO)
15
16 -include ../../config.mak
17
18 all: $(ALL)
19 run: all
20         @N=0; A=0; for i in $(BIN) $(BIN_STATIC);do \
21                 A=$$((A+1)); ./$$i || { N=$$((N+1)); echo FAIL $$i; } \
22         done; \
23         [ "$$N" = 0 ] && echo PASS || echo FAILS: $$N/$$A
24 clean:
25         rm -f $(OBJ) $(ALL)
26
27 $(BUILD):
28         mkdir -p $@
29 $(OBJ): test.h | $(BUILD)
30 $(DSOOBJ): CFLAGS+=-fPIC
31 $(BUILD)/%.o: %.c
32         $(CC) $(CFLAGS) -c -o $@ $< || echo BUILDERROR $@
33 %.so: %.o
34         $(CC) -shared $(LDFLAGS) -o $@ $< $(LDLIBS) || echo BUILDERROR $@
35 %-static: %.o
36         $(CC) -static $(LDFLAGS) -o $@ $< $(LDLIBS) || echo BUILDERROR $@
37 %: %.o
38         $(CC) $(LDFLAGS) -o $@ $< $(LDLIBS) || echo BUILDERROR $@
39
40 $(BUILD)/dlopen: LDLIBS+=-ldl -rdynamic
41 $(BUILD)/pthread%: LDLIBS+=-lpthread
42 $(BUILD)/sem $(BUILD)/sem-static: LDLIBS+=-lpthread -lrt
43 $(BUILD)/strtod_simple $(BUILD)/strtod_simple-static: LDLIBS+=-lm
44 $(BUILD)/tgmath tgmath-static: LDLIBS+=-lm
45 # adding ./lib.so through LDLIBS instead of $^ in the implicit rule because make removes the leading ./ from dependencies
46 $(BUILD)/tls_align: LDLIBS+=$(BUILD)/tls_align_dso.so
47 $(BUILD)/tls_align: $(BUILD)/tls_align_dso.so
48 # make bug: tls_align target specific flags are also set for tls_align_dso.so when both target is built
49 $(BUILD)/tls_align_dso.so: LDLIBS=
50 $(BUILD)/tls_align-static: LDLIBS+=$(BUILD)/tls_align_dso.o
51 $(BUILD)/tls_align-static: $(BUILD)/tls_align_dso.o
52 $(BUILD)/tls_align_dlopen: LDLIBS+=-ldl
53 $(BUILD)/tls_init tls_init-static: LDLIBS+=-lpthread
54