X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=Makefile.inc;h=69de079fb9894dd99182dc2eed727f863dd59b3b;hb=a9d0a0ddf7530e8e462ec2ac731558b9037cc905;hp=bfdc3dc14c91ce847334bcff0f985c92bb01e3d9;hpb=7308b342633ce6b61ec9b33e06e630622058ebcf;p=libc-test diff --git a/Makefile.inc b/Makefile.inc index bfdc3dc..69de079 100644 --- a/Makefile.inc +++ b/Makefile.inc @@ -1,52 +1,55 @@ # gnu makefile -# when included in src/*/Makefile then it builds a binary locally -# when included in ./Makefile then all tests are linked into one binary - -ROOTDIR ?= ../.. -ifeq ($(ROOTDIR), .) -SRCS = $(sort $(wildcard src/*/*.c)) -else -SRCS = $(sort $(wildcard *.c)) -endif +# when included in a Makefile it builds *.c unless SRCS are overridden + +# default TROOT works from src/*/Makefile +TROOT ?= ../.. +SRCS ?= $(sort $(wildcard *.c)) OBJS = $(SRCS:.c=.o) -usemusl = yes -prefix = /usr/local/musl -includedir = $(prefix)/include -libdir = $(prefix)/lib --include $(ROOTDIR)/Makefile.conf +AR=ar +RANLIB=ranlib + +CFLAGS += -g -D_POSIX_C_SOURCE=200809L -std=c99 -pipe -Wall -Wno-unused-function -Wno-missing-braces +LDFLAGS += -g -lpthread -lrt -lm +-include $(TROOT)/config.mak -CFLAGS += -g -std=c99 -pipe -Wall -LDFLAGS += -g -INC += -I$(ROOTDIR)/common +CFLAGS += -I$(TROOT)/common -ifeq ($(usemusl), yes) -CC=gcc -LIBCC=$(shell gcc -print-file-name=libgcc.a |sed 's,/libgcc.a,,') -#LIBCC=$(shell pcc -v /dev/null 2>&1 |sed -n 's,/crtbegin.o.*,,;s,.* /,/,p') -CFLAGS += -nostdinc -ffreestanding -fno-stack-protector -LDFLAGS += -nostdlib -Wl,-e,_start,-Bstatic $(libdir)/crti.o $(libdir)/crt1.o $(libdir)/crtn.o -L $(libdir) -lc -L $(LIBCC) -l$(CC) -INC += -isystem $(includedir) -endif +all: test -all: t +test: t b + ./t clean: - rm -f $(OBJS) t main.o main.h + rm -f $(OBJS) t t_.o b b_.o tests.a tests.h .c.o: - $(CC) $(CFLAGS) $(INC) -c -o $@ $< + $(CC) $(CFLAGS) -c -o $@ $< + +$(OBJS): $(TROOT)/common/test.h -$(OBJS): $(ROOTDIR)/common/test.h +tests.h: $(OBJS) + nm -f posix $+ |awk ' \ + /^test/ && $$2=="T"{print "T(" $$1 ")"} \ + /^bench/ && $$2=="T"{print "B(" $$1 ")"} \ + ' >tests.h -main.h: $(OBJS) - nm -f posix $+ |awk '/^test/ && $$2=="T"{print "T(" $$1 ")"}' >main.h +tests.a: $(OBJS) + $(AR) rc $@ $+ + $(RANLIB) $@ -main.o: $(ROOTDIR)/common/main.c $(ROOTDIR)/common/test.h main.h - $(CC) $(CFLAGS) $(INC) -I. -c -o $@ $< +# TODO: /tmp/t.o ? +t_.o: $(TROOT)/common/t.c $(TROOT)/common/test.h tests.h + $(CC) $(CFLAGS) -I. -c -o $@ $< -t: $(OBJS) main.o +t: t_.o tests.a $(CC) $+ $(LDFLAGS) -o $@ -.PHONY: all clean +b_.o: $(TROOT)/common/b.c $(TROOT)/common/test.h tests.h + $(CC) $(CFLAGS) -I. -c -o $@ $< + +b: b_.o tests.a + $(CC) $+ $(LDFLAGS) -lrt -o $@ + +.PHONY: all clean test