]> git.saurik.com Git - apple/coreosmakefiles.git/blob - ReleaseControl/Common.make
df5161b5bfae330a2a999ced5ee4de9e77510576
[apple/coreosmakefiles.git] / ReleaseControl / Common.make
1 ##
2 # Makefile for Apple Release Control (common)
3 #
4 # Wilfredo Sanchez | wsanchez@apple.com
5 # Copyright (c) 1997-1999 Apple Computer, Inc.
6 #
7 # @APPLE_LICENSE_HEADER_START@
8 #
9 # Portions Copyright (c) 1999 Apple Computer, Inc. All Rights
10 # Reserved. This file contains Original Code and/or Modifications of
11 # Original Code as defined in and that are subject to the Apple Public
12 # Source License Version 1.1 (the "License"). You may not use this file
13 # except in compliance with the License. Please obtain a copy of the
14 # License at http://www.apple.com/publicsource and read it before using
15 # this file.
16 #
17 # The Original Code and all software distributed under the License are
18 # distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY KIND, EITHER
19 # EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
20 # INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
21 # FITNESS FOR A PARTICULAR PURPOSE OR NON- INFRINGEMENT. Please see the
22 # License for the specific language governing rights and limitations
23 # under the License.
24 #
25 # @APPLE_LICENSE_HEADER_END@
26 ##
27 # Set these variables as needed, then include this file, then:
28 #
29 # Project [ UNTITLED_PROJECT ]
30 # ProjectName [ $(Project) ]
31 # SubProjects
32 # Extra_Environment
33 # Passed_Targets
34 #
35 # Additional variables inherited from Standard/Standard.make
36 ##
37
38 ifndef CoreOSMakefiles
39 CoreOSMakefiles = $(MAKEFILEPATH)/CoreOS
40 endif
41
42 include $(CoreOSMakefiles)/Standard/Standard.make
43
44 ##
45 # Some reasonable defaults for RC variables
46 ##
47
48 RC_ARCHS = $(shell file /usr/lib/libSystem.B.dylib | grep 'shared library ' | sed 's|.*shared library ||')
49 RC_RELEASE = unknown
50 RC_VERSION = unknown
51
52 ifeq ($(COPY_SOURCES),YES)
53 SRCROOT = /tmp/$(ProjectName)/Sources
54 else
55 SRCROOT = $(shell pwd)
56 endif
57
58 OBJROOT = /tmp/$(ProjectName)/Build
59 SYMROOT = /tmp/$(ProjectName)/Debug
60 DSTROOT = /tmp/$(ProjectName)/Release
61
62 ##
63 # My variables
64 ##
65
66 ifndef Project
67 Project = UNTITLED_PROJECT
68 endif
69
70 ifndef ProjectName
71 ProjectName = $(Project)
72 endif
73
74 ifneq ($(RC_VERSION),unknown)
75 Version = RC_VERSION
76 else
77 Version := $(shell $(VERS_STRING) -f $(Project) 2>/dev/null | cut -d - -f 2)
78 ifeq ($(Version),)
79 Version = 0
80 endif
81 endif
82
83 Sources = $(SRCROOT)
84 Platforms = $(patsubst %,%-apple-rhapsody$(RhapsodyVersion),$(RC_ARCHS:ppc=powerpc))
85 BuildDirectory = $(OBJROOT)
86
87 CC_Archs = $(RC_ARCHS:%=-arch %)
88 #CPP_Defines += -DPROJECT_VERSION=\"$(Project)-$(Version)\"
89
90 Extra_CC_Flags += $(RC_CFLAGS)
91
92 Environment = CFLAGS="$(CFLAGS)" \
93 CCFLAGS="$(CXXFLAGS)" \
94 CXXFLAGS="$(CXXFLAGS)" \
95 LDFLAGS="$(LDFLAGS)" \
96 $(Extra_Environment)
97
98 VPATH=$(Sources)
99
100 ##
101 # Targets
102 ##
103
104 .PHONY: all install installhdrs install_headers lazy_installsrc lazy_install_source installsrc install_source build clean recurse
105
106 all: build
107
108 $(DSTROOT): install
109
110 install:: install_headers build
111
112 # For RC
113 installhdrs:: install_headers
114
115 install_headers::
116
117 lazy_install_source::
118 $(_v) if [ ! -f "$(SRCROOT)/Makefile" ]; then $(MAKE) install_source; fi
119
120 install_source::
121 ifneq ($(CommonNoInstallSource),YES)
122 @echo "Installing source for $(Project)..."
123 $(_v) $(MKDIR) "$(SRCROOT)"
124 ifneq ($(wildcard $(PAX)),)
125 $(_v) $(PAX) -rw . "$(SRCROOT)"
126 else
127 $(_v) $(TAR) cf - . | (cd "$(SRCROOT)" ; $(TAR) xfp -)
128 endif
129 $(_v) $(FIND) "$(SRCROOT)" $(Find_Cruft) | $(XARGS) $(RMDIR)
130 endif
131
132 ifndef ShadowTestFile
133 ShadowTestFile = $(BuildDirectory)/Makefile
134 endif
135
136 shadow_source:: $(ShadowTestFile)
137
138 $(ShadowTestFile):
139 echo "Creating pseudo-copy of sources in the build directory...";
140 $(_v) mkdir -p $(BuildDirectory);
141 $(_v) for dir in $$( cd $(Sources) && $(FIND) . -type d ); do \
142 cd $(BuildDirectory) && if [ ! -d $$dir ]; then $(MKDIR) $$dir; fi; \
143 done
144 $(_v) for file in $$( cd $(Sources) && $(FIND) . -type f ); do \
145 cd $(BuildDirectory) && $(LN) -fs $(Sources)/$$file $$file; \
146 done
147
148 # For RC
149 installsrc: install_source
150
151 build:: lazy_install_source
152
153 clean::
154 @echo "Cleaning $(Project)..."
155 $(_v) $(RMDIR) -f "$(BuildDirectory)"
156
157 $(Passed_Targets) $(Extra_Passed_Targets):
158 $(_v) umask $(Install_Mask) ; $(MAKE) -C $(BuildDirectory) $(Environment) $@
159
160 recurse:
161 ifdef SubProjects
162 $(_v) for SubProject in $(SubProjects); do \
163 $(MAKE) -C $$SubProject $(TARGET) \
164 BuildDirectory=$(BuildDirectory)/$${SubProject} \
165 Sources=$(Sources)/$${SubProject} \
166 CoreOSMakefiles=$(CoreOSMakefiles); \
167 done
168 endif
169
170 rshowvar: showvar
171 $(_v) $(MAKE) recurse TARGET=rshowvar