--- dietlibc/Makefile 2014/04/04 11:25:37 1.202 +++ dietlibc/Makefile 2014/04/19 15:07:31 1.203 @@ -10,7 +10,7 @@ MAN1DIR=${prefix}/man/man1 EXTRACFLAGS= -MYARCH:=$(shell uname -m | sed -e 's/i[4-9]86/i386/' -e 's/armv[3-6]t\?e\?[lb]/arm/') +MYARCH:=$(shell uname -m | sed -e 's/i[4-9]86/i386/' -e 's/armv[3-7]t\?e\?[lb]/arm/') # This extra-ugly cruft is here so make will not run uname and sed each # time it looks at $(OBJDIR). This alone sped up running make when @@ -107,6 +107,8 @@ CFLAGS=$(DEFAULTCFLAGS) CROSS= CC=gcc +CCC=$(CROSS)$(CC) +STRIP=$(COMMENT) $(CROSS)strip INC=-I. -isystem include VPATH=lib:libstdio:libugly:libcruft:libcrypt:libshell:liblatin1:libcompat:libdl:librpc:libregex:libm:profiling @@ -141,7 +143,7 @@ endif ifneq ($(DEBUG),) CFLAGS = -g -COMMENT = : +STRIP = : endif CFLAGS += -W -Wall -Wextra -Wchar-subscripts -Wmissing-prototypes -Wmissing-declarations -Wno-switch -Wno-unused -Wredundant-decls -Wshadow @@ -163,31 +165,31 @@ $(OBJDIR) $(PICODIR): % :: %,v -$(OBJDIR)/%: $(OBJDIR) - ifeq ($(CC),tcc) -$(OBJDIR)/%.o: %.S $(ARCH)/syscalls.h +$(OBJDIR)/%.o: %.S $(ARCH)/syscalls.h | $(OBJDIR) $(CROSS)cpp $(INC) $< | $(CROSS)as --noexecstack -o $@ -$(OBJDIR)/%.o: %.c +$(OBJDIR)/%.o: %.c | $(OBJDIR) tcc -I. -Iinclude -c $< -o $@ - $(COMMENT) -$(CROSS)strip -x -R .comment -R .note $@ + -$(STRIP) -x -R .comment -R .note $@ else -$(OBJDIR)/pstart.o: start.S - $(CROSS)$(CC) $(INC) $(CFLAGS) -DPROFILING -c $< $(ASM_CFLAGS) -o $@ +$(OBJDIR)/pstart.o: start.S | $(OBJDIR) + $(CCC) $(INC) $(CFLAGS) -DPROFILING -c $< $(ASM_CFLAGS) -o $@ -$(OBJDIR)/%.o: %.S $(ARCH)/syscalls.h - $(CROSS)$(CC) $(INC) $(CFLAGS) -c $< $(ASM_CFLAGS) -o $@ +$(OBJDIR)/%.o: %.S $(ARCH)/syscalls.h | $(OBJDIR) + $(CCC) $(INC) $(CFLAGS) $(EXTRAFLAGS) -c $< $(ASM_CFLAGS) -o $@ -$(OBJDIR)/pthread_%.o: libpthread/pthread_%.c - $(CROSS)$(CC) $(INC) $(CFLAGS) -c $< -o $@ - $(COMMENT) -$(CROSS)strip -x -R .comment -R .note $@ +$(OBJDIR)/pthread_%.o: libpthread/pthread_%.c | $(OBJDIR) + $(CCC) $(INC) $(CFLAGS) $(EXTRAFLAGS) -c $< -o $@ + -$(STRIP) -x -R .comment -R .note $@ -$(OBJDIR)/%.o: %.c - $(CROSS)$(CC) $(INC) $(CFLAGS) -c $< -o $@ -D__dietlibc__ - $(COMMENT) -$(CROSS)strip -x -R .comment -R .note $@ +$(OBJDIR)/%.o: %.c | $(OBJDIR) + $(CCC) $(INC) $(CFLAGS) $(EXTRAFLAGS) -c $< -o $@ -D__dietlibc__ + -$(STRIP) -x -R .comment -R .note $@ endif + + ifeq ($(shell $(CC) -v 2>&1 | grep "gcc version"),gcc version 4.0.0) SAFE_CFLAGS=$(shell echo $(CFLAGS)|sed 's/-Os/-O2/') SAFER_CFLAGS=$(shell echo $(CFLAGS)|sed 's/-Os/-O/') @@ -198,8 +200,8 @@ endif CC+=-D__dietlibc__ -$(OBJDIR)/crypt.o: libcrypt/crypt.c - $(CROSS)$(CC) $(INC) $(SAFER_CFLAGS) -c $< -o $@ +$(OBJDIR)/crypt.o: libcrypt/crypt.c | $(OBJDIR) + $(CCC) $(INC) $(SAFER_CFLAGS) -c $< -o $@ DIETLIBC_OBJ = $(OBJDIR)/unified.o \ $(SYSCALLOBJ) $(LIBOBJ) $(LIBSTDIOOBJ) $(LIBUGLYOBJ) \ @@ -213,9 +215,9 @@ $(OBJDIR)/dietlibc.a: $(DIETLIBC_OBJ) $( $(OBJDIR)/librpc.a: $(LIBRPCOBJ) $(CROSS)ar cru $@ $(LIBRPCOBJ) -$(OBJDIR)/libcrypt.a: +$(OBJDIR)/libcrypt.a: | $(OBJDIR) touch dummy.c - $(CROSS)$(CC) -c dummy.c + $(CCC) -c dummy.c $(CROSS)ar cru $@ dummy.o rm -f dummy.c dummy.o @@ -250,23 +252,23 @@ dyn_lib: $(PICODIR) $(PICODIR)/libc.so $ $(PICODIR)/libpthread.so $(PICODIR)/libdl.so $(PICODIR)/libcompat.so \ $(PICODIR)/libm.so $(PICODIR)/diet-dyn $(PICODIR)/diet-dyn-i -$(PICODIR)/%.o: %.S $(ARCH)/syscalls.h - $(CROSS)$(CC) $(INC) $(CFLAGS) -fPIC -D__DYN_LIB $(ASM_CFLAGS) -c $< -o $@ +$(PICODIR)/%.o: %.S $(ARCH)/syscalls.h | $(PICODIR) + $(CCC) $(INC) $(CFLAGS) $(EXTRACFLAGS) -fPIC -D__DYN_LIB $(ASM_CFLAGS) -c $< -o $@ -$(PICODIR)/pthread_%.o: libpthread/pthread_%.c - $(CROSS)$(CC) $(INC) $(CFLAGS) -fPIC -D__DYN_LIB -c $< -o $@ - $(COMMENT) $(CROSS)strip -x -R .comment -R .note $@ - -$(PICODIR)/%.o: %.c - $(CROSS)$(CC) $(INC) $(CFLAGS) -fPIC -D__DYN_LIB -c $< -o $@ - $(COMMENT) $(CROSS)strip -x -R .comment -R .note $@ - -$(PICODIR)/dstart.o: start.S - $(CROSS)$(CC) $(INC) $(CFLAGS) -fPIC -D__DYN_LIB $(ASM_CFLAGS) -c $< -o $@ - -$(PICODIR)/dyn_so_start.o: dyn_start.c - $(CROSS)$(CC) $(INC) $(CFLAGS) -fPIC -D__DYN_LIB -D__DYN_LIB_SHARED -c $< -o $@ - $(COMMENT) $(CROSS)strip -x -R .comment -R .note $@ +$(PICODIR)/pthread_%.o: libpthread/pthread_%.c | $(PICODIR) + $(CCC) $(INC) $(CFLAGS) $(EXTRACFLAGS) -fPIC -D__DYN_LIB -c $< -o $@ + $(STRIP) -x -R .comment -R .note $@ + +$(PICODIR)/%.o: %.c | $(PICODIR) + $(CCC) $(INC) $(CFLAGS) $(EXTRACFLAGS) -fPIC -D__DYN_LIB -c $< -o $@ + $(STRIP) -x -R .comment -R .note $@ + +$(PICODIR)/dstart.o: start.S | $(PICODIR) + $(CCC) $(INC) $(CFLAGS) $(EXTRACFLAGS) -fPIC -D__DYN_LIB $(ASM_CFLAGS) -c $< -o $@ + +$(PICODIR)/dyn_so_start.o: dyn_start.c | $(PICODIR) + $(CCC) $(INC) $(CFLAGS) $(EXTRACFLAGS) -fPIC -D__DYN_LIB -D__DYN_LIB_SHARED -c $< -o $@ + $(STRIP) -x -R .comment -R .note $@ DYN_LIBC_PIC = $(LIBOBJ) $(LIBSTDIOOBJ) $(LIBUGLYOBJ) \ $(LIBCRUFTOBJ) $(LIBCRYPTOBJ) $(LIBSHELLOBJ) $(LIBREGEXOBJ) @@ -283,54 +285,54 @@ DYN_LIBCOMPAT_OBJS = $(patsubst $(OBJDIR DYN_LIBMATH_OBJS = $(patsubst $(OBJDIR)/%.o,$(PICODIR)/%.o,$(LIBMATHOBJ)) $(PICODIR)/libc.so: $(PICODIR) $(DYN_LIBC_OBJ) - $(LD_UNSET) $(CROSS)$(CC) -nostdlib -shared -o $@ $(CFLAGS) -fPIC $(DYN_LIBC_OBJ) -lgcc -Wl,-soname=libc.so + $(LD_UNSET) $(CCC) -nostdlib -shared -o $@ $(CFLAGS) -fPIC $(DYN_LIBC_OBJ) -lgcc -Wl,-soname=libc.so $(PICODIR)/libpthread.so: $(DYN_PTHREAD_OBJS) dietfeatures.h $(PICODIR)/libc.so - $(LD_UNSET) $(CROSS)$(CC) -nostdlib -shared -o $@ $(CFLAGS) -fPIC $(DYN_PTHREAD_OBJS) -L$(PICODIR) -lc -Wl,-soname=libpthread.so + $(LD_UNSET) $(CCC) -nostdlib -shared -o $@ $(CFLAGS) -fPIC $(DYN_PTHREAD_OBJS) -L$(PICODIR) -lc -Wl,-soname=libpthread.so $(PICODIR)/libdl.so: libdl/_dl_main.c dietfeatures.h $(PICODIR)/libc.so - $(LD_UNSET) $(CROSS)$(CC) -D__OD_CLEAN_ROOM -DNODIETREF -fPIC -nostdlib -shared -Bsymbolic -Wl,-Bsymbolic \ + $(LD_UNSET) $(CCC) -D__OD_CLEAN_ROOM -DNODIETREF -fPIC -nostdlib -shared -Bsymbolic -Wl,-Bsymbolic \ -o $@ $(SAFE_CFLAGS) $(INC) libdl/_dl_main.c -Wl,-soname=libdl.so $(OBJDIR)/pthread_create.o $(PICODIR)/pthread_create.o: dietfeatures.h $(OBJDIR)/pthread_internal.o $(PICODIR)/pthread_internal.o: dietfeatures.h #$(PICODIR)/libdl.so: $(DYN_LIBDL_OBJS) dietfeatures.h -# $(CROSS)$(CC) -nostdlib -shared -o $@ $(CFLAGS) -fPIC $(DYN_LIBDL_OBJS) -L$(PICODIR) -ldietc -Wl,-soname=libdl.so +# $(CCC) -nostdlib -shared -o $@ $(CFLAGS) -fPIC $(DYN_LIBDL_OBJS) -L$(PICODIR) -ldietc -Wl,-soname=libdl.so $(PICODIR)/libcompat.so: $(DYN_LIBCOMPAT_OBJS) dietfeatures.h $(PICODIR)/libc.so - $(LD_UNSET) $(CROSS)$(CC) -nostdlib -shared -o $@ $(CFLAGS) -fPIC $(DYN_LIBCOMPAT_OBJS) -L$(PICODIR) -lc -Wl,-soname=libcompat.so + $(LD_UNSET) $(CCC) -nostdlib -shared -o $@ $(CFLAGS) -fPIC $(DYN_LIBCOMPAT_OBJS) -L$(PICODIR) -lc -Wl,-soname=libcompat.so $(PICODIR)/libm.so: $(DYN_LIBMATH_OBJS) dietfeatures.h $(PICODIR)/libc.so - $(LD_UNSET) $(CROSS)$(CC) -nostdlib -shared -o $@ $(CFLAGS) -fPIC $(DYN_LIBMATH_OBJS) -L$(PICODIR) -lc -Wl,-soname=libm.so + $(LD_UNSET) $(CCC) -nostdlib -shared -o $@ $(CFLAGS) -fPIC $(DYN_LIBMATH_OBJS) -L$(PICODIR) -lc -Wl,-soname=libm.so $(SYSCALLOBJ): syscalls.h $(OBJDIR)/elftrunc: $(OBJDIR)/diet contrib/elftrunc.c - bin-$(MYARCH)/diet $(CROSS)$(CC) $(CFLAGS) -o $@ contrib/elftrunc.c + bin-$(MYARCH)/diet $(CCC) $(CFLAGS) -o $@ contrib/elftrunc.c $(OBJDIR)/dnsd: $(OBJDIR)/diet contrib/dnsd.c - bin-$(MYARCH)/diet $(CROSS)$(CC) $(CFLAGS) -o $@ contrib/dnsd.c + bin-$(MYARCH)/diet $(CCC) $(CFLAGS) -o $@ contrib/dnsd.c VERSION=dietlibc-$(shell head -n 1 CHANGES|sed 's/://') CURNAME=$(notdir $(shell pwd)) $(OBJDIR)/diet: $(OBJDIR)/start.o $(OBJDIR)/dyn_start.o diet.c $(OBJDIR)/dietlibc.a $(OBJDIR)/dyn_stop.o - $(CROSS)$(CC) -isystem include $(CFLAGS) -nostdlib -o $@ $^ -DDIETHOME=\"$(HOME)\" -DVERSION=\"$(VERSION)\" -lgcc - $(CROSS)strip -R .comment -R .note $@ + $(CCC) -isystem include $(CFLAGS) -nostdlib -o $@ $^ -DDIETHOME=\"$(HOME)\" -DVERSION=\"$(VERSION)\" -lgcc + $(STRIP) -R .comment -R .note $@ $(OBJDIR)/diet-i: $(OBJDIR)/start.o $(OBJDIR)/dyn_start.o diet.c $(OBJDIR)/dietlibc.a $(OBJDIR)/dyn_stop.o - $(CROSS)$(CC) -isystem include $(CFLAGS) -nostdlib -o $@ $^ -DDIETHOME=\"$(prefix)\" -DVERSION=\"$(VERSION)\" -DINSTALLVERSION -lgcc - $(CROSS)strip -R .comment -R .note $@ + $(CCC) -isystem include $(CFLAGS) -nostdlib -o $@ $^ -DDIETHOME=\"$(prefix)\" -DVERSION=\"$(VERSION)\" -DINSTALLVERSION -lgcc + $(STRIP) -R .comment -R .note $@ $(PICODIR)/diet-dyn: $(PICODIR)/start.o $(PICODIR)/dyn_start.o diet.c - $(LD_UNSET) $(CROSS)$(CC) -isystem include $(CFLAGS) -fPIC -nostdlib -o $@ $^ -DDIETHOME=\"$(HOME)\" -D__DYN_LIB -DVERSION=\"$(VERSION)\" -L$(PICODIR) -lc -lgcc $(PICODIR)/dyn_stop.o -Wl,-dynamic-linker=$(HOME)/$(PICODIR)/libdl.so - $(CROSS)strip -R .command -R .note $@ + $(LD_UNSET) $(CCC) -isystem include $(CFLAGS) -fPIC -nostdlib -o $@ $^ -DDIETHOME=\"$(HOME)\" -D__DYN_LIB -DVERSION=\"$(VERSION)\" -L$(PICODIR) -lc -lgcc $(PICODIR)/dyn_stop.o -Wl,-dynamic-linker=$(HOME)/$(PICODIR)/libdl.so + $(STRIP) -R .command -R .note $@ $(PICODIR)/diet-dyn-i: $(PICODIR)/start.o $(PICODIR)/dyn_start.o diet.c - $(LD_UNSET) $(CROSS)$(CC) -isystem include $(CFLAGS) -fPIC -nostdlib -o $@ $^ -DDIETHOME=\"$(prefix)\" -D__DYN_LIB -DVERSION=\"$(VERSION)\" -L$(PICODIR) -lc -lgcc $(PICODIR)/dyn_stop.o -Wl,-dynamic-linker=$(ILIBDIR)/libdl.so -DINSTALLVERSION - $(CROSS)strip -R .command -R .note $@ + $(LD_UNSET) $(CCC) -isystem include $(CFLAGS) -fPIC -nostdlib -o $@ $^ -DDIETHOME=\"$(prefix)\" -D__DYN_LIB -DVERSION=\"$(VERSION)\" -L$(PICODIR) -lc -lgcc $(PICODIR)/dyn_stop.o -Wl,-dynamic-linker=$(ILIBDIR)/libdl.so -DINSTALLVERSION + $(STRIP) -R .command -R .note $@ $(OBJDIR)/djb: $(OBJDIR)/compile $(OBJDIR)/load @@ -360,14 +362,14 @@ $(OBJDIR)/exports: $(OBJDIR)/dietlibc.a .PHONY: t t1 t: - $(CROSS)$(CC) -g $(CFLAGS) -fno-builtin -nostdlib -isystem include -o t t.c $(OBJDIR)/start.o $(OBJDIR)/dyn_start.o $(OBJDIR)/dietlibc.a -lgcc $(OBJDIR)/dyn_stop.o -Wl,-Map,mapfile + $(CCC) -g $(CFLAGS) -fno-builtin -nostdlib -isystem include -o t t.c $(OBJDIR)/start.o $(OBJDIR)/dyn_start.o $(OBJDIR)/dietlibc.a -lgcc $(OBJDIR)/dyn_stop.o -Wl,-Map,mapfile t1: - $(CROSS)$(CC) -g -o t1 t.c + $(CCC) -g -o t1 t.c install-bin: $(OBJDIR)/start.o $(OBJDIR)/dietlibc.a $(OBJDIR)/librpc.a $(OBJDIR)/liblatin1.a $(OBJDIR)/libcompat.a $(OBJDIR)/elftrunc $(OBJDIR)/diet-i $(INSTALL) -d $(DESTDIR)$(ILIBDIR) $(DESTDIR)$(MAN1DIR) $(DESTDIR)$(BINDIR) - $(INSTALL) $(OBJDIR)/start.o $(DESTDIR)$(ILIBDIR)/start.o + $(INSTALL) -m 644 $(OBJDIR)/start.o $(DESTDIR)$(ILIBDIR)/start.o $(INSTALL) -m 644 $(OBJDIR)/libm.a $(OBJDIR)/libpthread.a $(OBJDIR)/librpc.a \ $(OBJDIR)/liblatin1.a $(OBJDIR)/libcompat.a $(OBJDIR)/libcrypt.a $(DESTDIR)$(ILIBDIR) $(INSTALL) -m 644 $(OBJDIR)/dietlibc.a $(DESTDIR)$(ILIBDIR)/libc.a @@ -549,9 +551,7 @@ $(OBJDIR)/fcntl64.o: dietfeatures.h # WANT_SSP # This facepalm brought to you by: Ubuntu! -$(OBJDIR)/stackgap.o: lib/stackgap.c dietfeatures.h - $(CROSS)$(CC) $(INC) $(CFLAGS) -c lib/stackgap.c -o $@ -D__dietlibc__ -fno-stack-protector - $(COMMENT) -$(CROSS)strip -x -R .comment -R .note $@ +$(OBJDIR)/stackgap.o $(PICODIR)/stackgap.o: EXTRACFLAGS:=-fno-stack-protector # WANT_MALLOC_ZERO $(OBJDIR)/strndup.o: dietfeatures.h