.ifndef OBJROOT
OBJROOT != pwd
.endif
.ifndef SYMROOT
SYMROOT != pwd
.endif
ARCH != arch
.ifndef RC_ARCHS
RC_ARCHS = $(ARCH)
RC_$(RC_ARCHS) = 1
.endif
NARCHS != echo $(RC_ARCHS) | wc -w
.ifdef ALTUSRLOCALLIBSYSTEM
LIBSYS = $(ALTUSRLOCALLIBSYSTEM)
.else
LIBSYS = $(NEXT_ROOT)/usr/local/lib/system
.endif
NJOBS != perl -e '$$n = `/usr/sbin/sysctl -n hw.ncpu`; printf "%d\n", $$n < 2 ? 2 : ($$n * 1.5)'
BSDMAKE = bsdmake -f Makefile
BSDMAKEJ = $(BSDMAKE) -j $(NJOBS) -P
dynamic = dynamic
static = static
LOCAL_CFLAGS != echo $(RC_CFLAGS) | sed 's/ *-arch [^ ][^ ]*//g'
FORMS := dynamic debug profile static
all: build
.ifndef RC_ProjectName
installhdrs: installhdrs-real
build: build-static build-profile build-debug build-dynamic
install: installhdrs install-all
.else
.if $(RC_ProjectName) == Libc
installhdrs:
build: build-dynamic
install: BI-install-dynamic
.endif
.if $(RC_ProjectName) == Libc_headers
installhdrs: installhdrs-real
build:
install: installhdrs-real
.endif
.if $(RC_ProjectName) == Libc_man
installhdrs:
build:
install: install-man
.endif
.if $(RC_ProjectName) == Libc_static
installhdrs:
build: build-static
install: BI-install-static
.endif
.if $(RC_ProjectName) == Libc_debug
installhdrs:
build: build-debug
install: BI-install-debug
.endif
.if $(RC_ProjectName) == Libc_profile
installhdrs:
build: build-profile
install: BI-install-profile
.endif
.endif
.if !empty $(CC_PRINT_OPTIONS_FILE)
$(CC_PRINT_OPTIONS_FILE):
touch $(CC_PRINT_OPTIONS_FILE)
.endif
.for F in $(FORMS)
.if $(dynamic) == $(F)
SUFFIX$(F) =
.else
SUFFIX$(F) = _$(F)
.endif
LIPOARGS$(F) != perl -e 'printf "%s\n", join(" ", map(qq(-arch $$_ \"$(OBJROOT)/obj.$$_/libc$(SUFFIX$(F)).a\"), qw($(RC_ARCHS))))'
build-$(F): autopatch $(CC_PRINT_OPTIONS_FILE)
.for A in $(RC_ARCHS)
build-$(F): build-$(A)-$(F)
.endfor build-$(F):
.if $(NARCHS) == 1
cp -p "$(OBJROOT)/obj.$(RC_ARCHS)/libc$(SUFFIX$(F)).a" "$(SYMROOT)"
.else
lipo -create $(LIPOARGS$(F)) -output $(SYMROOT)/libc$(SUFFIX$(F)).a
.endif
.for A in $(RC_ARCHS)
build-$(A)-$(F):
mkdir -p $(OBJROOT)/obj.$(A) && \
MAKEOBJDIR="$(OBJROOT)/obj.$(A)" MACHINE_ARCH="$(A)" \
MAKEFLAGS="" CFLAGS="-arch $(A) $(LOCAL_CFLAGS)" $(BSDMAKEJ) libc$(SUFFIX$(F)).a
.endfor .endfor
autopatch:
.for A in $(RC_ARCHS)
MACHINE_ARCH="$(A)" $(BSDMAKEJ) autopatch
.endfor
installsrc:
pax -rw . "$(SRCROOT)"
installhdrs-real: $(CC_PRINT_OPTIONS_FILE)
MAKEOBJDIR="$(OBJROOT)" DESTDIR="$(DSTROOT)" MAKEFLAGS="" \
$(BSDMAKEJ) installhdrs
.for A in $(RC_ARCHS)
mkdir -p "$(OBJROOT)/obj.$(A)" && \
MAKEOBJDIR="$(OBJROOT)/obj.$(A)" MACHINE_ARCH="$(A)" \
MAKEFLAGS="" $(BSDMAKEJ) installhdrs-md
.endfor
.for F in $(FORMS)
BI-install-$(F): build-$(F)
mkdir -p $(DSTROOT)/usr/local/lib/system
if [ -f "$(SYMROOT)/libc$(SUFFIX$(F)).a" ]; then \
echo "Installing libc$(SUFFIX$(F)).a" && \
install -c -m 444 "$(SYMROOT)/libc$(SUFFIX$(F)).a" \
$(DSTROOT)/usr/local/lib/system && \
ranlib "$(DSTROOT)/usr/local/lib/system/libc$(SUFFIX$(F)).a"; \
fi
.if !empty $(RC_ppc) && ($(static) != $(F))
if [ -f "$(OBJROOT)/obj.ppc/libc-ldbl128$(SUFFIX$(F)).a" ]; then \
echo "Installing libldbl128$(SUFFIX$(F)).a" ; \
$(SRCROOT)/make_libldbl128 "$(OBJROOT)/obj.ppc/libc-ldbl128$(SUFFIX$(F)).a" \
"$(SUFFIX$(F))" "$(DSTROOT)/usr/local/lib/system" $(LIBSYS) ; \
fi
.endif .endfor
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="$(ARCH)" MAKEFLAGS="" $(BSDMAKE) autopatchman maninstall
install-all: build install-man
.for F in $(FORMS)
install-all: BI-install-$(F)
.endfor
clean:
.for F in $(FORMS)
rm -f $(OBJROOT)/libc$(SUFFIX$(F)).a
.endfor .for A in $(RC_ARCHS)
rm -rf $(OBJROOT)/obj.$(A)
.endfor