Loading...
GNUmakefile Libc-391.5.21 Libc-391
--- Libc/Libc-391.5.21/GNUmakefile
+++ Libc/Libc-391/GNUmakefile
@@ -1,5 +1,304 @@
-all:
-	@bsdmake
-
-.DEFAULT:
-	@bsdmake $@
+ifndef $(OBJROOT)
+OBJROOT = .
+endif
+ifndef $(SYMROOT)
+SYMROOT = .
+endif
+ARCH = $(shell arch)
+ifndef RC_ARCHS 
+RC_$(ARCH) = 1
+RC_ARCHS = $(ARCH)
+endif
+ifdef ALTUSRLOCALLIBSYSTEM
+LIBSYS = $(ALTUSRLOCALLIBSYSTEM)
+else
+LIBSYS = $(NEXT_ROOT)/usr/local/lib/system
+endif
+NJOBS = $(shell perl -e '$$n = `/usr/sbin/sysctl -n hw.ncpu`; printf "%d\n", $$n < 2 ? 2 : ($$n * 1.5)')
+BSDMAKE = bsdmake -j $(NJOBS)
+
+# Remove the arch stuff, since we know better here.  
+LOCAL_CFLAGS = $(filter-out -arch ppc -arch ppc64 -arch i386,$(RC_CFLAGS))
+
+all: build
+
+# These are the non B&I defaults
+ifndef RC_ProjectName
+installhdrs: installhdrs-real
+build: build-static build-profile build-debug build-dynamic
+install: installhdrs install-all
+endif
+
+# And these are to deal with B&I building libc differently 
+# based on RC_ProjectName.
+ifeq ($(RC_ProjectName),Libc)
+installhdrs:
+build: build-dynamic
+install: BI-install-dynamic
+endif
+ifeq ($(RC_ProjectName),Libc_headers)
+installhdrs: installhdrs-real
+build:
+install: installhdrs-real
+endif
+ifeq ($(RC_ProjectName),Libc_man)
+installhdrs:
+build:
+install: install-man
+endif
+ifeq ($(RC_ProjectName),Libc_static)
+installhdrs:
+build: build-static
+install: BI-install-static
+endif
+ifeq ($(RC_ProjectName),Libc_debug)
+installhdrs:
+build: build-debug
+install: BI-install-debug
+endif
+ifeq ($(RC_ProjectName),Libc_profile)
+installhdrs:
+build: build-profile
+install: BI-install-profile
+endif
+
+# Because of 3780028, there are random failures on HFS because the
+# CC_PRINT_OPTIONS_FILE can't be created.  So we touch it first.
+ifneq ($(CC_PRINT_OPTIONS_FILE),)
+$(CC_PRINT_OPTIONS_FILE):
+	touch $(CC_PRINT_OPTIONS_FILE)
+endif
+
+build-static: autopatch $(CC_PRINT_OPTIONS_FILE) build-ppc-static build-ppc64-static build-i386-static
+	@echo "Creating final libc_static.a"
+ifeq ($(words $(RC_ARCHS)),1)
+	cp -p "$(OBJROOT)/obj.$(RC_ARCHS)/libc_static.a" "$(SYMROOT)"
+else
+	lipo -create \
+		$(foreach A,$(RC_ARCHS),-arch $(A) "$(OBJROOT)/obj.$(A)/libc_static.a") \
+		-output $(SYMROOT)/libc_static.a
+endif
+build-profile: autopatch $(CC_PRINT_OPTIONS_FILE) build-ppc-profile build-ppc64-profile build-i386-profile
+	@echo "Creating final libc_profile.a"
+ifeq ($(words $(RC_ARCHS)),1)
+	cp -p "$(OBJROOT)/obj.$(RC_ARCHS)/libc_profile.a" "$(SYMROOT)"
+else
+	lipo -create \
+		$(foreach A,$(RC_ARCHS),-arch $(A) "$(OBJROOT)/obj.$(A)/libc_profile.a") \
+		-output $(SYMROOT)/libc_profile.a
+endif
+build-debug: autopatch $(CC_PRINT_OPTIONS_FILE) build-ppc-debug build-ppc64-debug build-i386-debug
+	@echo "Creating final libc_debug.a"
+ifeq ($(words $(RC_ARCHS)),1)
+	cp -p "$(OBJROOT)/obj.$(RC_ARCHS)/libc_debug.a" "$(SYMROOT)"
+else
+	lipo -create \
+		$(foreach A,$(RC_ARCHS),-arch $(A) "$(OBJROOT)/obj.$(A)/libc_debug.a") \
+		-output $(SYMROOT)/libc_debug.a
+endif
+build-dynamic: autopatch $(CC_PRINT_OPTIONS_FILE) build-ppc-dynamic build-ppc64-dynamic build-i386-dynamic
+	@echo "Creating final libc.a"
+ifeq ($(words $(RC_ARCHS)),1)
+	cp -p "$(OBJROOT)/obj.$(RC_ARCHS)/libc.a" "$(SYMROOT)"
+else
+	lipo -create \
+		$(foreach A,$(RC_ARCHS),-arch $(A) "$(OBJROOT)/obj.$(A)/libc.a") \
+		-output $(SYMROOT)/libc.a
+endif
+build-ppc-static:
+ifneq ($(RC_ppc),)
+	mkdir -p $(OBJROOT)/obj.ppc ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.ppc" MACHINE_ARCH="ppc" \
+		MAKEFLAGS="" CFLAGS="-arch ppc $(LOCAL_CFLAGS)" $(BSDMAKE) libc_static.a
+endif
+build-ppc64-static:
+ifneq ($(RC_ppc64),)
+	mkdir -p $(OBJROOT)/obj.ppc64 ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.ppc64" MACHINE_ARCH="ppc64" \
+		MAKEFLAGS="" CFLAGS="-arch ppc64 $(LOCAL_CFLAGS)" $(BSDMAKE) libc_static.a
+endif
+build-i386-static:
+ifneq ($(RC_i386),)
+	mkdir -p $(OBJROOT)/obj.i386 ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.i386" MACHINE_ARCH="i386" \
+		MAKEFLAGS="" CFLAGS="-arch i386 $(LOCAL_CFLAGS)" $(BSDMAKE) libc_static.a
+endif
+build-ppc-profile:
+ifneq ($(RC_ppc),)
+	mkdir -p $(OBJROOT)/obj.ppc ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.ppc" MACHINE_ARCH="ppc" \
+		MAKEFLAGS="" CFLAGS="-arch ppc $(LOCAL_CFLAGS)" $(BSDMAKE) libc_profile.a
+endif
+build-ppc64-profile:
+ifneq ($(RC_ppc64),)
+	mkdir -p $(OBJROOT)/obj.ppc64 ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.ppc64" MACHINE_ARCH="ppc64" \
+		MAKEFLAGS="" CFLAGS="-arch ppc64 $(LOCAL_CFLAGS)" $(BSDMAKE) libc_profile.a
+endif
+build-i386-profile:
+ifneq ($(RC_i386),)
+	mkdir -p $(OBJROOT)/obj.i386 ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.i386" MACHINE_ARCH="i386" \
+		MAKEFLAGS="" CFLAGS="-arch i386 $(LOCAL_CFLAGS)" $(BSDMAKE) libc_profile.a
+endif
+build-ppc-debug:
+ifneq ($(RC_ppc),)
+	mkdir -p $(OBJROOT)/obj.ppc ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.ppc" MACHINE_ARCH="ppc" \
+		MAKEFLAGS="" CFLAGS="-arch ppc $(LOCAL_CFLAGS)" $(BSDMAKE) libc_debug.a
+endif
+build-ppc64-debug:
+ifneq ($(RC_ppc64),)
+	mkdir -p $(OBJROOT)/obj.ppc64 ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.ppc64" MACHINE_ARCH="ppc64" \
+		MAKEFLAGS="" CFLAGS="-arch ppc64 $(LOCAL_CFLAGS)" $(BSDMAKE) libc_debug.a
+endif
+build-i386-debug:
+ifneq ($(RC_i386),)
+	mkdir -p $(OBJROOT)/obj.i386 ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.i386" MACHINE_ARCH="i386" \
+		MAKEFLAGS="" CFLAGS="-arch i386 $(LOCAL_CFLAGS)" $(BSDMAKE) libc_debug.a
+endif
+build-ppc-dynamic:
+ifneq ($(RC_ppc),)
+	mkdir -p $(OBJROOT)/obj.ppc ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.ppc" MACHINE_ARCH="ppc" \
+		MAKEFLAGS="" CFLAGS="-arch ppc $(LOCAL_CFLAGS)" $(BSDMAKE) libc.a
+endif
+build-ppc64-dynamic:
+ifneq ($(RC_ppc64),)
+	mkdir -p $(OBJROOT)/obj.ppc64 ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.ppc64" MACHINE_ARCH="ppc64" \
+		MAKEFLAGS="" CFLAGS="-arch ppc64 $(LOCAL_CFLAGS)" $(BSDMAKE) libc.a
+endif
+build-i386-dynamic:
+ifneq ($(RC_i386),)
+	mkdir -p $(OBJROOT)/obj.i386 ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.i386" MACHINE_ARCH="i386" \
+		MAKEFLAGS="" CFLAGS="-arch i386 $(LOCAL_CFLAGS)" $(BSDMAKE) libc.a
+endif
+build-ppc:
+ifneq ($(RC_ppc),)
+	mkdir -p $(OBJROOT)/obj.ppc ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.ppc" MACHINE_ARCH="ppc" \
+		MAKEFLAGS="" CFLAGS="-arch ppc $(LOCAL_CFLAGS)" $(BSDMAKE) build
+endif
+build-ppc64:
+ifneq ($(RC_ppc64),)
+	mkdir -p $(OBJROOT)/obj.ppc64 ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.ppc64" MACHINE_ARCH="ppc64" \
+		MAKEFLAGS="" CFLAGS="-arch ppc64 $(LOCAL_CFLAGS)" $(BSDMAKE) build
+endif
+build-i386:
+ifneq ($(RC_i386),)
+	mkdir -p $(OBJROOT)/obj.i386 ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.i386" MACHINE_ARCH="i386" \
+		MAKEFLAGS="" CFLAGS="-arch i386 $(LOCAL_CFLAGS)" $(BSDMAKE) build
+endif
+
+# We have to separately call bsdmake to patch the FreeBSD files, because of
+# the way its cache works, it would otherwise pick a file in ${SYMROOT}, even
+# over a .s file.
+autopatch:
+ifneq ($(RC_i386),)
+	MACHINE_ARCH="i386" $(BSDMAKE) autopatch
+endif
+ifneq ($(RC_ppc),)
+	MACHINE_ARCH="ppc" $(BSDMAKE) autopatch
+endif
+ifneq ($(RC_ppc64),)
+	MACHINE_ARCH="ppc64" $(BSDMAKE) autopatch
+endif
+
+installsrc:
+	$(_v) pax -rw . "$(SRCROOT)"
+
+installhdrs-real: $(CC_PRINT_OPTIONS_FILE)
+	MAKEOBJDIR="$(OBJROOT)" DESTDIR="$(DSTROOT)" MAKEFLAGS="" \
+		$(BSDMAKE) installhdrs
+ifneq ($(RC_i386),)
+	mkdir -p "$(OBJROOT)/obj.i386" ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.i386" MACHINE_ARCH="i386" \
+	    MAKEFLAGS="" $(BSDMAKE) installhdrs-md
+endif
+ifneq ($(RC_ppc),)
+	mkdir -p "$(OBJROOT)/obj.ppc" ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.ppc" MACHINE_ARCH="ppc" \
+	    MAKEFLAGS="" $(BSDMAKE) installhdrs-md
+endif
+ifneq ($(RC_ppc64),)
+	mkdir -p "$(OBJROOT)/obj.ppc64" ; \
+	MAKEOBJDIR="$(OBJROOT)/obj.ppc64" MACHINE_ARCH="ppc64" \
+	    MAKEFLAGS="" $(BSDMAKE) installhdrs-md
+endif
+
+BI-install-static: build-static
+	mkdir -p $(DSTROOT)/usr/local/lib/system
+	if [ -f "$(SYMROOT)/libc_static.a" ]; then \
+		echo "Installing libc_static.a" ; \
+		install -c -m 444 "$(SYMROOT)/libc_static.a" \
+			$(DSTROOT)/usr/local/lib/system; \
+		ranlib "$(DSTROOT)/usr/local/lib/system/libc_static.a"; \
+	fi
+BI-install-profile: build-profile
+	mkdir -p $(DSTROOT)/usr/local/lib/system
+	if [ -f "$(SYMROOT)/libc_profile.a" ]; then \
+		echo "Installing libc_profile.a" ; \
+		install -c -m 444 "$(SYMROOT)/libc_profile.a" \
+			$(DSTROOT)/usr/local/lib/system; \
+		ranlib "$(DSTROOT)/usr/local/lib/system/libc_profile.a"; \
+	fi
+ifneq ($(RC_ppc),)
+	if [ -f "$(OBJROOT)/obj.ppc/libc-ldbl128_profile.a" ]; then \
+		echo "Installing libldbl128_profile.a" ; \
+		$(SRCROOT)/make_libldbl128 "$(OBJROOT)/obj.ppc/libc-ldbl128_profile.a" \
+			"_profile" "$(DSTROOT)/usr/local/lib/system" $(LIBSYS) ; \
+	fi
+endif
+BI-install-debug: build-debug
+	mkdir -p $(DSTROOT)/usr/local/lib/system
+	if [ -f "$(SYMROOT)/libc_debug.a" ]; then \
+		echo "Installing libc_debug.a" ; \
+		install -c -m 444 "$(SYMROOT)/libc_debug.a" \
+			$(DSTROOT)/usr/local/lib/system; \
+		ranlib "$(DSTROOT)/usr/local/lib/system/libc_debug.a"; \
+	fi
+ifneq ($(RC_ppc),)
+	if [ -f "$(OBJROOT)/obj.ppc/libc-ldbl128_debug.a" ]; then \
+		echo "Installing libldbl128_debug.a" ; \
+		$(SRCROOT)/make_libldbl128 "$(OBJROOT)/obj.ppc/libc-ldbl128_debug.a" \
+			"_debug" "$(DSTROOT)/usr/local/lib/system" $(LIBSYS) ; \
+	fi
+endif
+BI-install-dynamic: build-dynamic
+	mkdir -p $(DSTROOT)/usr/local/lib/system
+	if [ -f "$(SYMROOT)/libc.a" ]; then \
+		echo "Installing libc.a" ; \
+		install -c -m 444 "$(SYMROOT)/libc.a" \
+			$(DSTROOT)/usr/local/lib/system; \
+		ranlib "$(DSTROOT)/usr/local/lib/system/libc.a"; \
+	fi
+ifneq ($(RC_ppc),)
+	if [ -f "$(OBJROOT)/obj.ppc/libc-ldbl128.a" ]; then \
+		echo "Installing libldbl128.a" ; \
+		$(SRCROOT)/make_libldbl128 "$(OBJROOT)/obj.ppc/libc-ldbl128.a" \
+			"" "$(DSTROOT)/usr/local/lib/system" $(LIBSYS) ; \
+	fi
+endif
+
+# Don't use -j here; it may try to make links before the files are copied
+install-man:
+	mkdir -p $(DSTROOT)/usr/share/man/man2
+	mkdir -p $(DSTROOT)/usr/share/man/man3
+	mkdir -p $(DSTROOT)/usr/share/man/man4
+	mkdir -p $(DSTROOT)/usr/share/man/man5
+	mkdir -p $(DSTROOT)/usr/share/man/man7
+	MAKEOBJDIR="$(OBJROOT)" DESTDIR="$(DSTROOT)" NOMANCOMPRESS=1 \
+		MACHINE_ARCH="$(shell arch)" MAKEFLAGS="" bsdmake autopatchman maninstall
+
+install-all: build install-man BI-install-dynamic BI-install-static BI-install-profile BI-install-debug
+
+clean:
+	rm -rf $(OBJROOT)/obj.ppc $(OBJROOT)/obj.i386 $(OBJROOT)/libc.a \
+		$(OBJROOT)/libc_static.a $(OBJROOT)/libc_debug.a \
+		$(OBJROOT)/libc_profile.a