# Some reasonable defaults for RC variables
##
-RC_ARCHS = ppc i386
+RC_ARCHS = $(shell for i in `file /usr/lib/libSystem.B.dylib | grep 'shared library ' | sed 's|.*shared library ||'`; do $(CC) -arch $$i -E -x c /dev/null > /dev/null 2>&1 && echo $$i; done)
RC_RELEASE = unknown
RC_VERSION = unknown
-ifeq ($(COPY_SOURCES),YES)
-SRCROOT = /tmp/$(Project)/Sources
-else
-SRCROOT = $(shell pwd)
-endif
-
-OBJROOT = /tmp/$(Project)/Build
-SYMROOT = /tmp/$(Project)/Debug
-DSTROOT = /tmp/$(Project)/Release
+SRCROOT = /tmp/$(ProjectName)/Sources
+OBJROOT = /tmp/$(ProjectName)/Build
+SYMROOT = /tmp/$(ProjectName)/Debug
+DSTROOT = /tmp/$(ProjectName)/Release
##
# My variables
CC_Archs = $(RC_ARCHS:%=-arch %)
#CPP_Defines += -DPROJECT_VERSION=\"$(Project)-$(Version)\"
-Extra_CC_Flags += $(RC_CFLAGS)
-
-Environment = CFLAGS="$(CFLAGS)" \
- CCFLAGS="$(CXXFLAGS)" \
- CXXFLAGS="$(CXXFLAGS)" \
- LDFLAGS="$(LDFLAGS)" \
- $(Extra_Environment)
+ifneq "$(strip $(CFLAGS))" ""
+Environment += CFLAGS="$(CFLAGS)"
+endif
+ifneq "$(strip $(CXXFLAGS))" ""
+Environment += CCFLAGS="$(CXXFLAGS)" CXXFLAGS="$(CXXFLAGS)"
+endif
+ifneq "$(strip $(LDFLAGS))" ""
+Environment += LDFLAGS="$(LDFLAGS)"
+endif
+ifneq "$(strip $(CPPFLAGS))" ""
+Environment += CPPFLAGS="$(CPPFLAGS)"
+endif
+Environment += $(Extra_Environment)
VPATH=$(Sources)
+ManPageDirectories = /usr/share/man
+
##
# Targets
##
-.PHONY: all install installhdrs install_headers lazy_installsrc lazy_install_source installsrc install_source build clean recurse
+.PHONY: all install installhdrs install_headers lazy_installsrc lazy_install_source installsrc install_source build clean recurse _targetconfig
all: build
$(DSTROOT): install
-install:: install_headers build
+install:: _targetconfig install_headers build
+
+_targetconfig::
+ @PRODUCT="`tconf --product 2>/dev/null`" ; \
+ if [ -z "$$PRODUCT" ]; then \
+ echo "Error: TargetConfig not defined" ; exit 1 ; \
+ else echo "TargetConfig: $$PRODUCT" ; fi
# For RC
installhdrs:: install_headers
else
$(_v) $(TAR) cf - . | (cd "$(SRCROOT)" ; $(TAR) xfp -)
endif
- $(_v) $(FIND) "$(SRCROOT)" $(Find_Cruft) | $(XARGS) $(RMDIR)
+ $(_v) $(FIND) "$(SRCROOT)" $(Find_Cruft) -depth -exec $(RMDIR) "{}" \;
endif
ifndef ShadowTestFile
clean::
@echo "Cleaning $(Project)..."
- $(_v) $(RMDIR) -f "$(BuildDirectory)"
+ $(_v) $(RMDIR) -f "$(BuildDirectory)" || true
$(Passed_Targets) $(Extra_Passed_Targets):
$(_v) umask $(Install_Mask) ; $(MAKE) -C $(BuildDirectory) $(Environment) $@
ifdef SubProjects
$(_v) for SubProject in $(SubProjects); do \
$(MAKE) -C $$SubProject $(TARGET) \
+ OBJROOT=$(OBJROOT) \
+ SYMROOT=$(SYMROOT) \
+ DSTROOT=$(DSTROOT) \
BuildDirectory=$(BuildDirectory)/$${SubProject} \
Sources=$(Sources)/$${SubProject} \
- CoreOSMakefiles=$(CoreOSMakefiles); \
+ CoreOSMakefiles=$(CoreOSMakefiles) || exit 1 ; \
done
endif
rshowvar: showvar
$(_v) $(MAKE) recurse TARGET=rshowvar
+
+compress_man_pages:
+ifneq "$(strip $(ManPageDirectories))" ""
+ @echo "Compressing man pages for $(Project)..."
+ $(_v) $(COMPRESSMANPAGES) $(ManPageDirectories)
+endif