##
# Makefile for Apple Release Control (common)
#
# Wilfredo Sanchez | wsanchez@apple.com
# Copyright (c) 1997-1999 Apple Computer, Inc.
#
# @APPLE_LICENSE_HEADER_START@
#
# Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
# Reserved. This file contains Original Code and/or Modifications of
# Original Code as defined in and that are subject to the Apple Public
# Source License Version 1.1 (the "License"). You may not use this file
# except in compliance with the License. Please obtain a copy of the
# License at http://www.apple.com/publicsource and read it before using
# this file.
#
# The Original Code and all software distributed under the License are
# distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
# EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
# INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT. Please see the
# License for the specific language governing rights and limitations
# under the License.
#
# @APPLE_LICENSE_HEADER_END@
##
# Set these variables as needed, then include this file, then:
#
# Project [ UNTITLED_PROJECT ]
# ProjectName [ $(Project) ]
# SubProjects
# Extra_Environment
# Passed_Targets
#
# Additional variables inherited from Standard/Standard.make
##
ifndef CoreOSMakefiles
CoreOSMakefiles = $(MAKEFILEPATH)/CoreOS
endif
include $(CoreOSMakefiles)/Standard/Standard.make
##
# Some reasonable defaults for RC variables
##
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
SRCROOT = /tmp/$(ProjectName)/Sources
OBJROOT = /tmp/$(ProjectName)/Build
SYMROOT = /tmp/$(ProjectName)/Debug
DSTROOT = /tmp/$(ProjectName)/Release
##
# My variables
##
ifndef Project
Project = UNTITLED_PROJECT
endif
ifndef ProjectName
ProjectName = $(Project)
endif
ifneq ($(RC_VERSION),unknown)
Version = RC_VERSION
else
Version := $(shell $(VERS_STRING) -f $(Project) 2>/dev/null | cut -d - -f 2)
ifeq ($(Version),)
Version = 0
endif
endif
Sources = $(SRCROOT)
Platforms = $(patsubst %,%-apple-rhapsody$(RhapsodyVersion),$(RC_ARCHS:ppc=powerpc))
BuildDirectory = $(OBJROOT)
CC_Archs = $(RC_ARCHS:%=-arch %)
#CPP_Defines += -DPROJECT_VERSION=\"$(Project)-$(Version)\"
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 _targetconfig
all: build
$(DSTROOT): install
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
install_headers::
lazy_install_source::
$(_v) if [ ! -f "$(SRCROOT)/Makefile" ]; then $(MAKE) install_source; fi
install_source::
ifneq ($(CommonNoInstallSource),YES)
@echo "Installing source for $(Project)..."
$(_v) $(MKDIR) "$(SRCROOT)"
ifneq ($(wildcard $(PAX)),)
$(_v) $(PAX) -rw . "$(SRCROOT)"
else
$(_v) $(TAR) cf - . | (cd "$(SRCROOT)" ; $(TAR) xfp -)
endif
$(_v) $(FIND) "$(SRCROOT)" $(Find_Cruft) -depth -exec $(RMDIR) "{}" \;
endif
ifndef ShadowTestFile
ShadowTestFile = $(BuildDirectory)/Makefile
endif
shadow_source:: $(ShadowTestFile)
$(ShadowTestFile):
echo "Creating pseudo-copy of sources in the build directory...";
$(_v) mkdir -p $(BuildDirectory);
$(_v) for dir in $$( cd $(Sources) && $(FIND) . -type d ); do \
cd $(BuildDirectory) && if [ ! -d $$dir ]; then $(MKDIR) $$dir; fi; \
done
$(_v) for file in $$( cd $(Sources) && $(FIND) . -type f ); do \
cd $(BuildDirectory) && $(LN) -fs $(Sources)/$$file $$file; \
done
# For RC
installsrc: install_source
build:: lazy_install_source
clean::
@echo "Cleaning $(Project)..."
$(_v) $(RMDIR) -f "$(BuildDirectory)" || true
$(Passed_Targets) $(Extra_Passed_Targets):
$(_v) umask $(Install_Mask) ; $(MAKE) -C $(BuildDirectory) $(Environment) $@
recurse:
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) || 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