diff options
author | Mike Frysinger <vapier@gentoo.org> | 2005-01-25 03:17:00 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2005-01-25 03:17:00 +0000 |
commit | 130697527bfd32f3a6a6e4dfcc1e80c0cdfa0b37 (patch) | |
tree | 5725aece2271bb7b95dea27faff912df97db74fe /libc | |
parent | dd8d43ce314931a24533715977385d68d1827b4d (diff) |
merge parallel build support
Diffstat (limited to 'libc')
68 files changed, 303 insertions, 341 deletions
diff --git a/libc/.cvsignore b/libc/.cvsignore index a9a5aecf4..e9374e8d6 100644 --- a/libc/.cvsignore +++ b/libc/.cvsignore @@ -1 +1,2 @@ tmp +obj.* diff --git a/libc/Makefile b/libc/Makefile index c37f11882..17937bbc8 100644 --- a/libc/Makefile +++ b/libc/Makefile @@ -37,10 +37,33 @@ DIRS = misc pwd_grp stdio string termios inet signal stdlib sysdeps unistd VERSION_SCRIPT:=${shell if [ -f sysdeps/linux/$(TARGET_ARCH)/libc.map ] ; then \ echo "--version-script sysdeps/linux/$(TARGET_ARCH)/libc.map"; fi} -all: halfclean $(LIBNAME) $(DO_SHARED) +LIBNAME_TARGET:=$(TOPDIR)lib/$(LIBNAME) +all: halfclean $(LIBNAME_TARGET) $(DO_SHARED) + +# Some functions are duplicated across subdirs, and when you pass $(AR) +# the same object file more than once, it'll add it to the archive multiple +# times (boo!). So what we do here is: +# - import all the objects (thus we may have dupes) +# - delete all the dupes +# - re-import certain objects based upon preference +# - the sysdeps dir should override all other symbols for example +# We need to use shell globbing with obj.* because if we use make's wildcard, +# the wildcard will be evaluated when `make` is run instead of when the make +# target is evaluated. That means if you run `rm obj.* ; make`, the wildcard +# will evaluate to no files :(. $(LIBNAME) ar-target: subdirs + objs=`cat obj.*` ; $(AR) $(ARFLAGS) $(LIBNAME) $$objs + objs=`cat obj.*` ; $(AR) dN 2 $(LIBNAME) $$objs + @for objfile in obj.signal obj.string.generic obj.string \ + obj.sysdeps.$(TARGET_ARCH) obj.sysdeps.common ; do \ + echo $(AR) $(ARFLAGS) $(LIBNAME) $$objfile ; \ + objs=`cat $$objfile` ; \ + $(AR) $(ARFLAGS) $(LIBNAME) $$objs || exit 1 ; \ + done $(RANLIB) $(LIBNAME) + +$(LIBNAME_TARGET): $(LIBNAME) $(INSTALL) -d $(TOPDIR)lib $(RM) $(TOPDIR)lib/$(LIBNAME) $(INSTALL) -m 644 $(LIBNAME) $(TOPDIR)lib @@ -67,6 +90,7 @@ tags: clean: subdirs_clean halfclean @$(RM) -r tmp $(RM) include/asm include/linux include/bits + $(RM) obj.* subdirs: $(patsubst %, _dir_%, $(DIRS)) subdirs_clean: $(patsubst %, _dirclean_%, $(DIRS)) diff --git a/libc/inet/Makefile b/libc/inet/Makefile index 5ca42ddf2..e7018db7c 100644 --- a/libc/inet/Makefile +++ b/libc/inet/Makefile @@ -58,13 +58,12 @@ COBJS=$(patsubst %.c,%.o, $(CSRC)) OBJS=$(MOBJ) $(MOBJ2) $(MOBJ3) $(COBJS) +OBJ_LIST=../obj.inet -all: $(OBJS) $(LIBC) +all: $(OBJ_LIST) subdirs -$(LIBC): ar-target subdirs - -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, inet/%, $(OBJS)) > $(OBJ_LIST) $(MOBJ): $(MSRC) $(CC) $(CFLAGS) -DL_$* $< -c -o $*.o @@ -95,4 +94,3 @@ $(patsubst %, _dirclean_%, $(ALL_SUBDIRS)) : dummy $(MAKE) -C $(patsubst _dirclean_%, %, $@) clean .PHONY: dummy - diff --git a/libc/inet/rpc/Makefile b/libc/inet/rpc/Makefile index 5b8975cbf..352e9a28b 100644 --- a/libc/inet/rpc/Makefile +++ b/libc/inet/rpc/Makefile @@ -50,12 +50,12 @@ endif COBJS=$(patsubst %.c,%.o, $(CSRC)) OBJS=$(COBJS) -all: ar-target +OBJ_LIST=../../obj.inet.rpc -$(LIBC): $(OBJS) +all: $(OBJ_LIST) -ar-target: $(LIBC) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, inet/rpc/%, $(OBJS)) > $(OBJ_LIST) $(COBJS): %.o : %.c $(CC) $(CFLAGS) -c $< -o $@ @@ -63,4 +63,3 @@ $(COBJS): %.o : %.c clean: $(RM) *.[oa] *~ core - diff --git a/libc/misc/Makefile b/libc/misc/Makefile index da7c44fba..9d2d74a2b 100644 --- a/libc/misc/Makefile +++ b/libc/misc/Makefile @@ -50,9 +50,7 @@ ifeq ($(strip $(UCLIBC_HAS_GLOB)),y) DIRS += glob endif -all: libc.a - -libc.a: subdirs +all: subdirs tags: ctags -R @@ -70,4 +68,3 @@ $(patsubst %, _dirclean_%, $(DIRS)) : dummy $(MAKE) -C $(patsubst _dirclean_%, %, $@) clean .PHONY: dummy - diff --git a/libc/misc/assert/Makefile b/libc/misc/assert/Makefile index cfd469c14..57a2c0154 100644 --- a/libc/misc/assert/Makefile +++ b/libc/misc/assert/Makefile @@ -28,12 +28,12 @@ CSRC=__assert.c COBJS=$(patsubst %.c,%.o, $(CSRC)) OBJS=$(COBJS) -all: $(LIBC) +OBJ_LIST=../../obj.misc.assert -$(LIBC): ar-target +all: $(OBJ_LIST) -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, misc/assert/%, $(OBJS)) > $(OBJ_LIST) $(COBJS): %.o : %.c $(CC) $(CFLAGS) -c $< -o $@ diff --git a/libc/misc/ctype/Makefile b/libc/misc/ctype/Makefile index 26bb33731..dd7b799bd 100644 --- a/libc/misc/ctype/Makefile +++ b/libc/misc/ctype/Makefile @@ -47,12 +47,12 @@ ifeq ($(UCLIBC_HAS_XLOCALE),y) OBJS += $(MOBJx) endif -all: $(OBJS) $(LIBC) +OBJ_LIST=../../obj.misc.ctype -$(LIBC): ar-target +all: $(OBJ_LIST) -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, misc/ctype/%, $(OBJS)) > $(OBJ_LIST) $(MOBJ): $(MSRC) $(CC) $(CFLAGS) -DL_$* $< -c -o $*.o @@ -66,4 +66,3 @@ $(OBJS): Makefile clean: $(RM) *.[oa] *~ core - diff --git a/libc/misc/dirent/Makefile b/libc/misc/dirent/Makefile index 4ccf3d3e0..1f1032642 100644 --- a/libc/misc/dirent/Makefile +++ b/libc/misc/dirent/Makefile @@ -30,12 +30,12 @@ CSRC=alphasort.c closedir.c dirfd.c opendir.c readdir.c rewinddir.c scandir.c \ COBJS=$(patsubst %.c,%.o, $(CSRC)) OBJS=$(COBJS) -all: $(OBJS) $(LIBC) +OBJ_LIST=../../obj.misc.dirent -$(LIBC): ar-target +all: $(OBJ_LIST) -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, misc/dirent/%, $(OBJS)) > $(OBJ_LIST) $(COBJS): %.o : %.c $(CC) $(CFLAGS) -c $< -o $@ @@ -43,4 +43,3 @@ $(COBJS): %.o : %.c clean: $(RM) *.[oa] *~ core - diff --git a/libc/misc/error/Makefile b/libc/misc/error/Makefile index 880fd58df..1ef71dfa7 100644 --- a/libc/misc/error/Makefile +++ b/libc/misc/error/Makefile @@ -23,12 +23,12 @@ CSRC=error.c err.c COBJS=$(patsubst %.c,%.o, $(CSRC)) OBJS=$(COBJS) -all: $(OBJS) $(LIBC) +OBJ_LIST=../../obj.misc.error -$(LIBC): ar-target +all: $(OBJ_LIST) -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, misc/error/%, $(OBJS)) > $(OBJ_LIST) $(COBJS): %.o : %.c $(CC) $(CFLAGS) -c $< -o $@ @@ -36,4 +36,3 @@ $(COBJS): %.o : %.c clean: $(RM) *.[oa] *~ core - diff --git a/libc/misc/file/Makefile b/libc/misc/file/Makefile index fc1a1bfc3..a590f6ab5 100644 --- a/libc/misc/file/Makefile +++ b/libc/misc/file/Makefile @@ -32,12 +32,12 @@ endif COBJS=$(patsubst %.c,%.o, $(CSRC)) OBJS=$(COBJS) -all: $(OBJS) $(LIBC) +OBJ_LIST=../../obj.misc.file -$(LIBC): ar-target +all: $(OBJ_LIST) -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, misc/file/%, $(OBJS)) > $(OBJ_LIST) $(COBJS): %.o : %.c $(CC) $(CFLAGS) -c $< -o $@ @@ -45,4 +45,3 @@ $(COBJS): %.o : %.c clean: $(RM) *.[oa] *~ core - diff --git a/libc/misc/fnmatch/Makefile b/libc/misc/fnmatch/Makefile index af067bd15..535169550 100644 --- a/libc/misc/fnmatch/Makefile +++ b/libc/misc/fnmatch/Makefile @@ -28,12 +28,12 @@ CSRC=fnmatch.c COBJS=$(patsubst %.c,%.o, $(CSRC)) OBJS=$(COBJS) -all: $(OBJS) $(LIBC) +OBJ_LIST=../../obj.misc.fnmatch -$(LIBC): ar-target +all: $(OBJ_LIST) -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, misc/fnmatch/%, $(OBJS)) > $(OBJ_LIST) $(COBJS): %.o : %.c $(CC) $(CFLAGS) -c $< -o $@ @@ -41,4 +41,3 @@ $(COBJS): %.o : %.c clean: $(RM) *.[oa] *~ core - diff --git a/libc/misc/ftw/Makefile b/libc/misc/ftw/Makefile index a9df0c782..a8d52bf32 100644 --- a/libc/misc/ftw/Makefile +++ b/libc/misc/ftw/Makefile @@ -27,12 +27,12 @@ MSRC=ftw.c MOBJ=ftw.o ftw64.o OBJS=$(MOBJ) -all: $(OBJS) $(LIBC) +OBJ_LIST=../../obj.misc.ftw -$(LIBC): ar-target +all: $(OBJ_LIST) -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, misc/ftw/%, $(OBJS)) > $(OBJ_LIST) $(MOBJ): $(MSRC) $(CC) $(CFLAGS) -DL_$* $< -c -o $*.o @@ -40,4 +40,3 @@ $(MOBJ): $(MSRC) clean: $(RM) *.[oa] *~ core - diff --git a/libc/misc/glob/Makefile b/libc/misc/glob/Makefile index 31a3b80fe..e753c936a 100644 --- a/libc/misc/glob/Makefile +++ b/libc/misc/glob/Makefile @@ -28,12 +28,12 @@ CSRC=glob.c glob64.c glob-hooks.c COBJS=$(patsubst %.c,%.o, $(CSRC)) OBJS=$(COBJS) -all: $(OBJS) $(LIBC) +OBJ_LIST=../../obj.misc.glob -$(LIBC): ar-target +all: $(OBJ_LIST) -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, misc/glob/%, $(OBJS)) > $(OBJ_LIST) $(COBJS): %.o : %.c $(CC) $(CFLAGS) -c $< -o $@ @@ -43,4 +43,3 @@ glob64.o: glob64.c glob.c clean: $(RM) *.[oa] *~ core - diff --git a/libc/misc/gnu/Makefile b/libc/misc/gnu/Makefile index 6e3fd8463..a338b8131 100644 --- a/libc/misc/gnu/Makefile +++ b/libc/misc/gnu/Makefile @@ -28,12 +28,12 @@ CSRC=obstack.c COBJS=$(patsubst %.c,%.o, $(CSRC)) OBJS=$(COBJS) -all: $(LIBC) +OBJ_LIST=../../obj.misc.gnu -$(LIBC): ar-target +all: $(OBJ_LIST) -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, misc/gnu/%, $(OBJS)) > $(OBJ_LIST) $(COBJS): %.o : %.c $(CC) $(CFLAGS) -c $< -o $@ diff --git a/libc/misc/internals/Makefile b/libc/misc/internals/Makefile index 486cf8d55..23816b38d 100644 --- a/libc/misc/internals/Makefile +++ b/libc/misc/internals/Makefile @@ -29,12 +29,12 @@ COBJS=$(patsubst %.c,%.o, $(CSRC)) OBJS=$(COBJS) -all: $(OBJS) interp.o $(LIBC) +OBJ_LIST=../../obj.misc.internals -$(LIBC): interp.c ar-target +all: $(OBJ_LIST) interp.o -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, misc/internals/%, $(OBJS)) > $(OBJ_LIST) interp.c: Makefile echo "/* Force shared libraries to know about the correct library loader */" > interp.c @@ -54,4 +54,3 @@ $(COBJS): %.o : %.c clean: $(RM) *.[oa] interp.c *~ core - diff --git a/libc/misc/intl/Makefile b/libc/misc/intl/Makefile index df59c9d52..e0eb06493 100644 --- a/libc/misc/intl/Makefile +++ b/libc/misc/intl/Makefile @@ -30,12 +30,12 @@ MOBJ= __uClibc_dgettext.o __uClibc_dcgettext.o \ OBJS=$(MOBJ) -all: $(OBJS) $(LIBC) +OBJ_LIST=../../obj.misc.intl -$(LIBC): ar-target +all: $(OBJ_LIST) -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, misc/intl/%, $(OBJS)) > $(OBJ_LIST) $(MOBJ): $(MSRC) $(CC) $(CFLAGS) -DL_$* $< -c -o $*.o @@ -47,4 +47,3 @@ $(COBJS): %.o : %.c clean: $(RM) *.[oa] *~ core - diff --git a/libc/misc/locale/Makefile b/libc/misc/locale/Makefile index 75fa56a78..5ab005538 100644 --- a/libc/misc/locale/Makefile +++ b/libc/misc/locale/Makefile @@ -43,13 +43,12 @@ endif OBJS= $(MOBJ) $(MOBJx) $(DATA) -all: $(OBJS) $(LIBC) +OBJ_LIST=../../obj.misc.locale +all: $(OBJ_LIST) -$(LIBC): ar-target - -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, misc/locale/%, $(OBJS)) > $(OBJ_LIST) $(MOBJ): $(MSRC) $(CC) $(CFLAGS) -DL_$* $< -c -o $*.o diff --git a/libc/misc/mntent/Makefile b/libc/misc/mntent/Makefile index 7430dfe00..34a3d6f71 100644 --- a/libc/misc/mntent/Makefile +++ b/libc/misc/mntent/Makefile @@ -28,12 +28,12 @@ CSRC=mntent.c COBJS=$(patsubst %.c,%.o, $(CSRC)) OBJS=$(COBJS) -all: $(OBJS) $(LIBC) +OBJ_LIST=../../obj.misc.mntent -$(LIBC): ar-target +all: $(OBJ_LIST) -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, misc/mntent/%, $(OBJS)) > $(OBJ_LIST) $(COBJS): %.o : %.c $(CC) $(CFLAGS) -c $< -o $@ @@ -41,4 +41,3 @@ $(COBJS): %.o : %.c clean: $(RM) *.[oa] *~ core - diff --git a/libc/misc/pthread/Makefile b/libc/misc/pthread/Makefile index d01af1d74..0e432d308 100644 --- a/libc/misc/pthread/Makefile +++ b/libc/misc/pthread/Makefile @@ -33,12 +33,12 @@ CSRC=no-tsd.c weaks.c COBJS=$(patsubst %.c,%.o, $(CSRC)) OBJS=$(COBJS) -all: $(OBJS) $(LIBC) +OBJ_LIST=../../obj.misc.pthread -$(LIBC): ar-target +all: $(OBJ_LIST) -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, misc/pthread/%, $(OBJS)) > $(OBJ_LIST) $(COBJS): %.o : %.c $(CC) $(CFLAGS) -c $< -o $@ @@ -46,4 +46,3 @@ $(COBJS): %.o : %.c clean: $(RM) *.[oa] *~ core - diff --git a/libc/misc/regex/Makefile b/libc/misc/regex/Makefile index 5bdda32b4..db215edd8 100644 --- a/libc/misc/regex/Makefile +++ b/libc/misc/regex/Makefile @@ -28,12 +28,12 @@ CSRC=regex.c COBJS=$(patsubst %.c,%.o, $(CSRC)) OBJS=$(COBJS) -all: $(OBJS) $(LIBC) +OBJ_LIST=../../obj.misc.regex -$(LIBC): ar-target +all: $(OBJ_LIST) -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, misc/regex/%, $(OBJS)) > $(OBJ_LIST) $(COBJS): %.o : %.c $(CC) $(CFLAGS) -c $< -o $@ @@ -41,4 +41,3 @@ $(COBJS): %.o : %.c clean: $(RM) *.[oa] *~ core - diff --git a/libc/misc/search/Makefile b/libc/misc/search/Makefile index 9d579b964..7e67bb4e5 100644 --- a/libc/misc/search/Makefile +++ b/libc/misc/search/Makefile @@ -41,12 +41,12 @@ COBJS=$(patsubst %.c,%.o, $(CSRC)) OBJS=$(COBJS) $(MOBJ1) $(MOBJ2) $(MOBJ3) $(MOBJ4) -all: $(OBJS) $(LIBC) +OBJ_LIST=../../obj.misc.search -$(LIBC): ar-target +all: $(OBJ_LIST) -ar-target: $(OBJS) - $(AR) $(ARFLAGS) $(LIBC) $(OBJS) +$(OBJ_LIST): $(OBJS) + echo $(patsubst %, misc/search/%, $(OBJS)) > $(OBJ_LIST) $(MOBJ1): $(MSRC1) $(CC) $(CFLAGS) -DL_$* $< -c -o $*.o @@ -70,4 +70,3 @@ $(COBJS): %.o : %.c clean: $(RM) *.[oa] *~ core - diff --git a/libc/misc/statfs/Makefile b/libc/misc/statfs/Makefile index 55c21b8f6..bbb9dd0bc 100644 --- a/libc/misc/statfs/Makefile +++ b/ |