dietlibc/dietlibc-0.31-smp-fix.patch
2009-07-25 14:52:48 +00:00

148 lines
5.2 KiB
Diff

From c1354c051ff98683508272385834d35198253542 Mon Sep 17 00:00:00 2001
From: Enrico Scholz <enrico.scholz@informatik.tu-chemnitz.de>
Date: Sat, 25 Jul 2009 13:54:39 +0200
Subject: [PATCH 02/18] Fixed SMP build
'make -j' fails usually because $(OBJDIR) was not created yet when
compiling files.
This patch adds a $(OBJDIR)/.dirstamp target which is added as a
dependency for object files and executes an 'mkdir'.
Ditto for $(PICODIR)
---
Makefile | 42 +++++++++++++++++++++---------------------
1 files changed, 21 insertions(+), 21 deletions(-)
diff --git a/Makefile b/Makefile
index adc2779..8009cb4 100644
--- a/Makefile
+++ b/Makefile
@@ -88,7 +88,7 @@ ILIBDIR=$(LIBDIR)-$(ARCH)
HOME=$(shell pwd)
-WHAT= $(OBJDIR) $(OBJDIR)/start.o $(OBJDIR)/dyn_start.o $(OBJDIR)/dyn_stop.o \
+WHAT= $(OBJDIR)/start.o $(OBJDIR)/dyn_start.o $(OBJDIR)/dyn_stop.o \
$(OBJDIR)/dietlibc.a $(OBJDIR)/liblatin1.a \
$(OBJDIR)/libcompat.a $(OBJDIR)/libm.a \
$(OBJDIR)/librpc.a $(OBJDIR)/libpthread.a \
@@ -150,30 +150,30 @@ PWD=$(shell pwd)
# added real dynamic dietlibc.so
PICODIR = pic-$(ARCH)
-$(OBJDIR) $(PICODIR):
- mkdir $@
-
% :: %,v
+%/.dirstamp:
+ mkdir $*
+ @touch $@
ifeq ($(CC),tcc)
-$(OBJDIR)/%.o: %.S $(ARCH)/syscalls.h
+$(OBJDIR)/%.o: %.S $(ARCH)/syscalls.h $(OBJDIR)/.dirstamp
$(CROSS)cpp $(INC) $< | $(CROSS)as -o $@
-$(OBJDIR)/%.o: %.c
+$(OBJDIR)/%.o: %.c $(OBJDIR)/.dirstamp
tcc -I. -Iinclude -c $< -o $@
$(COMMENT) -$(CROSS)strip -x -R .comment -R .note $@
else
-$(OBJDIR)/pstart.o: start.S
+$(OBJDIR)/pstart.o: start.S $(OBJDIR)/.dirstamp
$(CROSS)$(CC) $(INC) $(CFLAGS) -DPROFILING -c $< -o $@
-$(OBJDIR)/%.o: %.S $(ARCH)/syscalls.h
+$(OBJDIR)/%.o: %.S $(ARCH)/syscalls.h $(OBJDIR)/.dirstamp
$(CROSS)$(CC) $(INC) $(CFLAGS) -c $< -o $@
-$(OBJDIR)/pthread_%.o: libpthread/pthread_%.c
+$(OBJDIR)/pthread_%.o: libpthread/pthread_%.c $(OBJDIR)/.dirstamp
$(CROSS)$(CC) $(INC) $(CFLAGS) -c $< -o $@
$(COMMENT) -$(CROSS)strip -x -R .comment -R .note $@
-$(OBJDIR)/%.o: %.c
+$(OBJDIR)/%.o: %.c $(OBJDIR)/.dirstamp
$(CROSS)$(CC) $(INC) $(CFLAGS) -c $< -o $@ -D__dietlibc__
$(COMMENT) -$(CROSS)strip -x -R .comment -R .note $@
endif
@@ -188,7 +188,7 @@ endif
CC+=-D__dietlibc__
-$(OBJDIR)/crypt.o: libcrypt/crypt.c
+$(OBJDIR)/crypt.o: libcrypt/crypt.c $(OBJDIR)/.dirstamp
$(CROSS)$(CC) $(INC) $(SAFER_CFLAGS) -c $< -o $@
DIETLIBC_OBJ = $(OBJDIR)/unified.o \
@@ -203,7 +203,7 @@ $(OBJDIR)/dietlibc.a: $(DIETLIBC_OBJ) $(OBJDIR)/start.o
$(OBJDIR)/librpc.a: $(LIBRPCOBJ)
$(CROSS)ar cru $@ $(LIBRPCOBJ)
-$(OBJDIR)/libcrypt.a:
+$(OBJDIR)/libcrypt.a: $(OBJDIR)/.dirstamp
touch dummy.c
$(CROSS)$(CC) -c dummy.c
$(CROSS)ar cru $@ dummy.o
@@ -235,26 +235,26 @@ dyn: dyn_lib
$(OBJDIR)/libdl.a: $(LIBDLOBJ)
$(CROSS)ar cru $@ $(LIBDLOBJ)
-dyn_lib: $(PICODIR) $(PICODIR)/libc.so $(PICODIR)/dstart.o \
+dyn_lib: $(PICODIR)/libc.so $(PICODIR)/dstart.o \
$(PICODIR)/dyn_so_start.o $(PICODIR)/dyn_start.o $(PICODIR)/dyn_stop.o \
$(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
+$(PICODIR)/%.o: %.S $(ARCH)/syscalls.h $(PICODIR)/.dirstamp
$(CROSS)$(CC) $(INC) $(CFLAGS) -fPIC -D__DYN_LIB -c $< -o $@
-$(PICODIR)/pthread_%.o: libpthread/pthread_%.c
+$(PICODIR)/pthread_%.o: libpthread/pthread_%.c $(PICODIR)/.dirstamp
$(CROSS)$(CC) $(INC) $(CFLAGS) -fPIC -D__DYN_LIB -c $< -o $@
$(COMMENT) $(CROSS)strip -x -R .comment -R .note $@
-$(PICODIR)/%.o: %.c
+$(PICODIR)/%.o: %.c $(PICODIR)/.dirstamp
$(CROSS)$(CC) $(INC) $(CFLAGS) -fPIC -D__DYN_LIB -c $< -o $@
$(COMMENT) $(CROSS)strip -x -R .comment -R .note $@
-$(PICODIR)/dstart.o: start.S
+$(PICODIR)/dstart.o: start.S $(PICODIR)/.dirstamp
$(CROSS)$(CC) $(INC) $(CFLAGS) -fPIC -D__DYN_LIB -c $< -o $@
-$(PICODIR)/dyn_so_start.o: dyn_start.c
+$(PICODIR)/dyn_so_start.o: dyn_start.c $(PICODIR)/.dirstamp
$(CROSS)$(CC) $(INC) $(CFLAGS) -fPIC -D__DYN_LIB -D__DYN_LIB_SHARED -c $< -o $@
$(COMMENT) $(CROSS)strip -x -R .comment -R .note $@
@@ -272,13 +272,13 @@ DYN_LIBCOMPAT_OBJS = $(patsubst $(OBJDIR)/%.o,$(PICODIR)/%.o,$(LIBCOMPATOBJ))
DYN_LIBMATH_OBJS = $(patsubst $(OBJDIR)/%.o,$(PICODIR)/%.o,$(LIBMATHOBJ))
-$(PICODIR)/libc.so: $(PICODIR) $(DYN_LIBC_OBJ)
+$(PICODIR)/libc.so: $(DYN_LIBC_OBJ)
$(LD_UNSET) $(CROSS)$(CC) -nostdlib -shared -o $@ $(CFLAGS) -fPIC $(DYN_LIBC_OBJ) -lgcc -Wl,-soname=libc.so
$(PICODIR)/libpthread.so: $(DYN_PTHREAD_OBJS) dietfeatures.h
$(LD_UNSET) $(CROSS)$(CC) -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)/libdl.so: libdl/_dl_main.c dietfeatures.h $(PICODIR)/.dirstamp
$(LD_UNSET) $(CROSS)$(CC) -D__OD_CLEAN_ROOM -DNODIETREF -fPIC -nostdlib -shared -Bsymbolic -Wl,-Bsymbolic \
-o $@ $(SAFE_CFLAGS) $(INC) libdl/_dl_main.c -Wl,-soname=libdl.so
@@ -330,7 +330,7 @@ $(OBJDIR)/load:
chmod 755 $@
clean:
- rm -f *.o *.a t t1 compile load elftrunc exports mapfile libdietc.so
+ rm -f *.o *.a t t1 compile load elftrunc exports mapfile libdietc.so .dirstamp
rm -rf bin-* pic-*
$(MAKE) -C examples clean
$(MAKE) -C dynlinker clean
--
1.6.2.5