]> git.saurik.com Git - apple/libsystem.git/blobdiff - GNUmakefile
Libsystem-111.tar.gz
[apple/libsystem.git] / GNUmakefile
index 10d71828cdd7269746ec06c5f759ee74366948d9..d589dc362ae794e7e521349eff0214ed2909a3e4 100644 (file)
@@ -19,35 +19,54 @@ no_target:
 ALLARCHS = hppa i386 m68k ppc ppc64 sparc x86_64
 NARCHS = $(words $(RC_ARCHS))
 USRLIB = /usr/lib
+ifdef ALTUSRLOCALLIBSYSTEM
+LIBSYS = $(ALTUSRLOCALLIBSYSTEM)
+else
+LIBSYS = $(NEXT_ROOT)/usr/local/lib/system
+endif
 
-install: $(RC_ARCHS)
+install: fake $(DSTROOT)/usr/local/lib/system/libc.a $(RC_ARCHS)
 ifneq "$(NARCHS)" "1"
        rsync -aH $(OBJROOT)/$(word 1,$(RC_ARCHS))/dstroot/ $(DSTROOT)
        rsync -aH $(OBJROOT)/$(word 1,$(RC_ARCHS))/symroot/ $(SYMROOT)
-       @for i in libSystem.B.dylib libSystem.B_debug.dylib libSystem.B_profile.dylib; do \
-           echo rm -f $(DSTROOT)$(USRLIB)/$$i && \
+       @set -x && \
+       for i in libSystem.B.dylib libSystem.B_debug.dylib libSystem.B_profile.dylib; do \
            rm -f $(DSTROOT)$(USRLIB)/$$i && \
-           echo lipo -create -o $(DSTROOT)$(USRLIB)/$$i $(foreach ARCH,$(RC_ARCHS),$(OBJROOT)/$(ARCH)/dstroot$(USRLIB)/$$i) && \
            lipo -create -o $(DSTROOT)$(USRLIB)/$$i $(foreach ARCH,$(RC_ARCHS),$(OBJROOT)/$(ARCH)/dstroot$(USRLIB)/$$i) && \
-           echo rm -f $(SYMROOT)/$$i && \
            rm -f $(SYMROOT)/$$i && \
-           echo lipo -create -o $(SYMROOT)/$$i $(foreach ARCH,$(RC_ARCHS),$(OBJROOT)/$(ARCH)/symroot/$$i) && \
-           lipo -create -o $(SYMROOT)/$$i $(foreach ARCH,$(RC_ARCHS),$(OBJROOT)/$(ARCH)/symroot/$$i); \
+           lipo -create -o $(SYMROOT)/$$i $(foreach ARCH,$(RC_ARCHS),$(OBJROOT)/$(ARCH)/symroot/$$i) || exit 1; \
        done
 endif
+       @set -x && \
+       for i in libSystem.B.dylib libSystem.B_debug.dylib libSystem.B_profile.dylib; do \
+           dsymutil $(SYMROOT)/$$i || exit 1; \
+       done
+
+# 4993197: force dependency generation for libsyscall.a
+fake:
+       @set -x && \
+       cd $(OBJROOT) && \
+       echo 'main() { __getpid(); return 0; }' > fake.c && \
+       cc -c fake.c && \
+       ld -r -o fake fake.o -lsyscall -L$(LIBSYS)
+
+$(DSTROOT)/usr/local/lib/system/libc.a:
+       bsdmake -C libsys install
 
 $(ALLARCHS):
 ifneq "$(NARCHS)" "1"
        mkdir -p $(OBJROOT)/$@/objroot $(OBJROOT)/$@/dstroot $(OBJROOT)/$@/symroot
        $(MAKE) -f Makefile install \
            OBJROOT='$(OBJROOT)/$@/objroot' \
+           TOPOBJROOT='$(OBJROOT)' \
            DSTROOT='$(OBJROOT)/$@/dstroot' \
            SYMROOT='$(OBJROOT)/$@/symroot' \
+           DESTDIR='$(DSTROOT)' \
            RC_CFLAGS='-arch $@ $(RC_NONARCH_CFLAGS)' \
            RC_ARCHS='$@' \
            RC_$@=YES $(foreach ARCH,$(filter-out $@,$(ALLARCHS)),RC_$(ARCH)=)
 else # NARCHS == 1
-       $(MAKE) -f Makefile install
+       $(MAKE) -f Makefile install TOPOBJROOT='$(OBJROOT)' DESTDIR='$(DSTROOT)'
 endif # NARCHS != 1
 
 .DEFAULT: