ifndef $(OBJROOT) OBJROOT = . endif ifndef $(SYMROOT) SYMROOT = . endif ARCH = $(shell arch) ifndef RC_ppc ifndef RC_i386 RC_ppc = 1 endif endif BSDMAKE = bsdmake -j 2 # Remove the arch stuff, since we know better here. LOCAL_CFLAGS = $(filter-out -arch ppc -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: installhdrs-real build: build-man build-dynamic install: installhdrs-real BI-install-dynamic 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 build-man: MAKEOBJDIR="$(OBJROOT)" MACHINE_ARCH="$(shell arch)" \ MAKEFLAGS="" $(BSDMAKE) buildman build-static: build-ppc-static build-i386-static @echo "Checking for libc_static.a" @if [ -f "$(OBJROOT)/obj.ppc/libc_static.a" -a -f "$(OBJROOT)/obj.i386/libc_static.a" ]; then\ lipo -create -arch ppc "$(OBJROOT)/obj.ppc/libc_static.a" \ -arch i386 "$(OBJROOT)/obj.i386/libc_static.a" \ -output $(SYMROOT)/libc_static.a;\ elif [ -f "$(OBJROOT)/obj.ppc/libc_static.a" ]; then \ cp -p "$(OBJROOT)/obj.ppc/libc_static.a" "$(SYMROOT)"; \ elif [ -f "$(OBJROOT)/obj.i386/libc_static.a" ]; then \ cp -p "$(OBJROOT)/obj.i386/libc_static.a" "$(SYMROOT)"; \ fi build-profile: build-ppc-profile build-i386-profile @echo "Checking for libc_profile.a" @if [ -f "$(OBJROOT)/obj.ppc/libc_profile.a" -a -f "$(OBJROOT)/obj.i386/libc_profile.a" ]; then\ lipo -create -arch ppc "$(OBJROOT)/obj.ppc/libc_profile.a" \ -arch i386 "$(OBJROOT)/obj.i386/libc_profile.a" \ -output $(SYMROOT)/libc_profile.a;\ elif [ -f "$(OBJROOT)/obj.ppc/libc_profile.a" ]; then \ cp -p "$(OBJROOT)/obj.ppc/libc_profile.a" "$(SYMROOT)"; \ elif [ -f "$(OBJROOT)/obj.i386/libc_profile.a" ]; then \ cp -p "$(OBJROOT)/obj.i386/libc_profile.a" "$(SYMROOT)"; \ fi build-debug: build-ppc-debug build-i386-debug @echo "Checking for libc_debug.a" @if [ -f "$(OBJROOT)/obj.ppc/libc_debug.a" -a -f "$(OBJROOT)/obj.i386/libc_debug.a" ]; then\ lipo -create -arch ppc "$(OBJROOT)/obj.ppc/libc_debug.a" \ -arch i386 "$(OBJROOT)/obj.i386/libc_debug.a" \ -output $(SYMROOT)/libc_debug.a;\ elif [ -f "$(OBJROOT)/obj.ppc/libc_debug.a" ]; then \ cp -p "$(OBJROOT)/obj.ppc/libc_debug.a" "$(SYMROOT)"; \ elif [ -f "$(OBJROOT)/obj.i386/libc_debug.a" ]; then \ cp -p "$(OBJROOT)/obj.i386/libc_debug.a" "$(SYMROOT)"; \ fi build-dynamic: build-ppc-dynamic build-i386-dynamic @echo "Checking for libc.a" @if [ -f "$(OBJROOT)/obj.ppc/libc.a" -a -f "$(OBJROOT)/obj.i386/libc.a" ]; then\ echo "Creating FAT libc.a"; \ lipo -create -arch ppc "$(OBJROOT)/obj.ppc/libc.a" -arch i386 \ "$(OBJROOT)/obj.i386/libc.a" -output $(SYMROOT)/libc.a;\ elif [ -f "$(OBJROOT)/obj.ppc/libc.a" ]; then \ echo "Using thin PPC libc.a" ;\ cp -p "$(OBJROOT)/obj.ppc/libc.a" "$(SYMROOT)"; \ elif [ -f "$(OBJROOT)/obj.i386/libc.a" ]; then \ echo "Using thin i386 libc.a" ;\ cp -p "$(OBJROOT)/obj.i386/libc.a" "$(SYMROOT)"; \ fi build-ppc-static: @if [ ! -z "$(RC_ppc)" ]; then \ mkdir -p $(OBJROOT)/obj.ppc ; \ MAKEOBJDIR="$(OBJROOT)/obj.ppc" MACHINE_ARCH="ppc" \ MAKEFLAGS="" CFLAGS="-arch ppc $(LOCAL_CFLAGS)" $(BSDMAKE) libc_static.a;\ fi build-i386-static: @if [ ! -z "$(RC_i386)" ]; then \ mkdir -p $(OBJROOT)/obj.i386 ; \ MAKEOBJDIR="$(OBJROOT)/obj.i386" MACHINE_ARCH="i386" \ MAKEFLAGS="" CFLAGS="-arch i386 $(LOCAL_CFLAGS)" $(BSDMAKE) libc_static.a;\ fi build-ppc-profile: @if [ ! -z "$(RC_ppc)" ]; then \ mkdir -p $(OBJROOT)/obj.ppc ; \ MAKEOBJDIR="$(OBJROOT)/obj.ppc" MACHINE_ARCH="ppc" \ MAKEFLAGS="" CFLAGS="-arch ppc $(LOCAL_CFLAGS)" $(BSDMAKE) libc_profile.a;\ fi build-i386-profile: @if [ ! -z "$(RC_i386)" ]; then \ mkdir -p $(OBJROOT)/obj.i386 ; \ MAKEOBJDIR="$(OBJROOT)/obj.i386" MACHINE_ARCH="i386" \ MAKEFLAGS="" CFLAGS="-arch i386 $(LOCAL_CFLAGS)" $(BSDMAKE) libc_profile.a;\ fi build-ppc-debug: @if [ ! -z "$(RC_ppc)" ]; then \ mkdir -p $(OBJROOT)/obj.ppc ; \ MAKEOBJDIR="$(OBJROOT)/obj.ppc" MACHINE_ARCH="ppc" \ MAKEFLAGS="" CFLAGS="-arch ppc $(LOCAL_CFLAGS)" $(BSDMAKE) libc_debug.a;\ fi build-i386-debug: @if [ ! -z "$(RC_i386)" ]; then \ mkdir -p $(OBJROOT)/obj.i386 ; \ MAKEOBJDIR="$(OBJROOT)/obj.i386" MACHINE_ARCH="i386" \ MAKEFLAGS="" CFLAGS="-arch i386 $(LOCAL_CFLAGS)" $(BSDMAKE) libc_debug.a;\ fi build-ppc-dynamic: @if [ ! -z "$(RC_ppc)" ]; then \ mkdir -p $(OBJROOT)/obj.ppc ; \ MAKEOBJDIR="$(OBJROOT)/obj.ppc" MACHINE_ARCH="ppc" \ MAKEFLAGS="" CFLAGS="-arch ppc $(LOCAL_CFLAGS)" $(BSDMAKE) libc.a;\ fi build-i386-dynamic: @if [ ! -z "$(RC_i386)" ]; then \ mkdir -p $(OBJROOT)/obj.i386 ; \ MAKEOBJDIR="$(OBJROOT)/obj.i386" MACHINE_ARCH="i386" \ MAKEFLAGS="" CFLAGS="-arch i386 $(LOCAL_CFLAGS)" $(BSDMAKE) libc.a;\ fi build-ppc: @if [ ! -z "$(RC_ppc)" ]; then \ mkdir -p $(OBJROOT)/obj.ppc ; \ MAKEOBJDIR="$(OBJROOT)/obj.ppc" MACHINE_ARCH="ppc" \ MAKEFLAGS="" CFLAGS="-arch ppc $(LOCAL_CFLAGS)" $(BSDMAKE) build;\ fi build-i386: @if [ ! -z "$(RC_i386)" ]; then \ mkdir -p $(OBJROOT)/obj.i386 ; \ MAKEOBJDIR="$(OBJROOT)/obj.i386" MACHINE_ARCH="i386" \ MAKEFLAGS="" CFLAGS="-arch i386 $(LOCAL_CFLAGS)" $(BSDMAKE) build;\ fi installsrc: $(_v) pax -rw . "$(SRCROOT)" installhdrs-real: MAKEOBJDIR="$(OBJROOT)" DESTDIR="$(DSTROOT)" MAKEFLAGS="" \ $(BSDMAKE) installhdrs @if [ ! -z "$(RC_i386)" ]; then \ mkdir -p "$(OBJROOT)/obj.i386" ; \ MAKEOBJDIR="$(OBJROOT)/obj.i386" MACHINE_ARCH="i386" \ MAKEFLAGS="" $(BSDMAKE) installhdrs-md ; \ fi @if [ ! -z "$(RC_ppc)" ]; then \ mkdir -p "$(OBJROOT)/obj.ppc" ; \ MAKEOBJDIR="$(OBJROOT)/obj.ppc" MACHINE_ARCH="ppc" \ MAKEFLAGS="" $(BSDMAKE) installhdrs-md ; \ fi 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 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 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 # 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 fbsdman maninstall install-all: build install-man BI-install-dynamic BI-install-static BI-install-profile clean: rm -rf $(OBJROOT)/obj.ppc $(OBJROOT)/obj.i386 $(OBJROOT)/libc.a \ $(OBJROOT)/libc_static.a $(OBJROOT)/libc_debug.a \ $(OBJROOT)/libc_profile.a