|
|
1.1 root 1: ###############################################################################
2: # NeXT Makefile.postamble Template
3: # Copyright 1993, NeXT Computer, Inc.
4: # Last changed: March 1995, Kresten Krab Thorup
5: #
6: # This Makefile is used for configuring the standard app makefiles associated
7: # with ProjectBuilder.
8: #
9: # Use this template to set attributes for a project, sub-project, bundle, or
10: # palette. Each node in the project's tree of sub-projects and bundles
11: # should have it's own Makefile.preamble and Makefile.postamble. Additional
12: # rules (e.g., after_install) that are defined by the developer should be
13: # defined in this file.
14: #
15: ###############################################################################
16: #
17: # Here are the variables exported by the common "app" makefiles that can be
18: # used in any customizations you make to the template below:
19: #
20: # PRODUCT_ROOT - Name of top-level app-wrapper (e.g., Webster.app)
21: # OFILE_DIR - Directory into which .o object files are generated.
22: # (Note that this name is calculated based on the target
23: # architectures specified in Project Builder).
24: # DERIVED_SRC_DIR - Directory used for all other derived files
25: # ALL_CFLAGS - All the flags passed to the cc(1) driver for compilations
26: #
27: # NAME - name of application, bundle, subproject, palette, etc.
28: # LANGUAGE - langage in which the project is written (default "English")
29: # ENGLISH - boolean flag set iff $(LANGUAGE) = "English"
30: # JAPANESE - boolean flag set iff $(LANGUAGE) = "Japanese"
31: # LOCAL_RESOURCES - localized resources (e.g. nib's, images) of project
32: # GLOBAL_RESOURCES - non-localized resources of project
33: # PROJECTVERSION - version of ProjectBuilder that output Makefile
34: # APPICON - application icon file
35: # DOCICONS - dock icon files
36: # ICONSECTIONS - Specifies icon sections when linking executable
37: #
38: # CLASSES - Class implementation files in project.
39: # HFILES - Header files in project.
40: # MFILES - Other Objective-C source files in project.
41: # CFILES - Other C source files in project.
42: # PSWFILES - .psw files in the project
43: # PSWMFILES - .pswm files in the project
44: # SUBPROJECTS - Subprojects of this project
45: # BUNDLES - Bundle subprojects of this project
46: # OTHERSRCS - Other miscellaneous sources of this project
47: # OTHERLINKED - Source files not matching a standard source extention
48: #
49: # LIBS - Libraries to link with when making app target
50: # DEBUG_LIBS - Libraries to link with when making debug target
51: # PROF_LIBS - Libraries to link with when making profile target
52: # OTHERLINKEDOFILES - Other relocatable files to (always) link in.
53: #
54: # APP_MAKEFILE_DIR - Directory in which to find generic set of Makefiles
55: # MAKEFILEDIR - Directory in which to find $(MAKEFILE)
56: # MAKEFILE - Top level mechanism Makefile (e.g., app.make, bundle.make)
57: # INSTALLDIR - Directory app will be installed into by 'install' target
58: #
59: ###############################################################################
60:
61:
62: # Change defaults assumed by the standard makefiles here. Edit the
63: # following default values as appropriate. (Note that if no Makefile.postamble
64: # exists, these values will have defaults set in common.make).
65:
66: # Add Makefile.preamble, Makefile.postamble, and Makefile.dependencies here if
67: # you would like changes to them to invalidate previous builds. The project
68: # depends on $(MAKEFILES) so that changes to Makefiles will trigger a re-build.
69: #MAKEFILES = Makefile
70:
71: # Some compiler flags can be easily overridden here:
72: #OPTIMIZATION_CFLAG = -O
73: #DEBUG_SYMBOLS_CFLAG = -g
74: #WARNING_CFLAGS = -Wall
75: #DEBUG_BUILD_CFLAGS = -DDEBUG
76: #PROFILE_BUILD_CFLAGS = -pg -DPROFILE
77:
78: # Flags passed to yacc
79: #YFLAGS = -d
80:
81: # Library and Framework projects only:
82: # 1. If you want something other than the default .dylib name, override it here
83: #DYLIB_INSTALL_NAME = lib$(NAME).dylib
84:
85: # 2. If you want to change the -install_name flag from the absolute path to the development area, change it here. One good choice is the installation directory. Another one might be none at all.
86: #DYLIB_INSTALL_DIR = $(INSTALLDIR)
87:
88:
89: # Ownership and permissions of files installed by 'install' target
90: #INSTALL_AS_USER = root # User to chown app to
91: #INSTALL_AS_GROUP = wheel # Group to chgrp app to
92: #INSTALL_PERMISSIONS = # If set, 'install' chmod's executable to this
93:
94: # Options to strip for bundles, apps with bundles, and apps without bundles,
95: # respectively (check common.make before stting any of these yourself!)
96: #APP_STRIP_OPTS = -S
97: #TOOL_STRIP_OPTS = -S
98: #LIBRARY_STRIP_OPTS = -S # Note: -S strips debugging symbols
99: # (Note: APP_STRIP_OPTS and TOOL_STRIP_OPTS default to empty, but
100: # developers doing their own dynamic loading should set this to
101: # $(DYLD_APP_STRIP_OPTS)).
102:
103: #########################################################################
104: # Put rules to extend the behavior of the standard Makefiles here. "Official"
105: # user-defined rules are:
106: # * before_install
107: # * after_install
108: # * after_installhdrs
109: # You should avoid redefining things like "install" or "app", as they are
110: # owned by the top-level Makefile API and no context has been set up for where
111: # derived files should go.
112:
113:
114: ##
115: ## build
116: ##
117: build:
118: $(MAKE) kernel \
119: "DSTROOT=/tmp/$(NAME).dst" \
120: "OBJROOT=/tmp/$(NAME).obj" \
121: "SYMROOT=/tmp/$(NAME).sym" \
122: "RC_CFLAGS = $(RC_CFLAGS)" \
123: "RC_ARCHS = $(RC_ARCHS)"
124:
125:
126: ## When the install target is invoked on this project, we need to build
127: ## shlib, kernel, & profile statically as well.
128:
129: after_install:: kernel
130: $(MKDIRS) $(DSTROOT)/usr/local/lib; \
131: $(LIPO) -create -output $(DSTROOT)/usr/local/lib/libk$(NAME).o \
132: $(SYMROOT)/*_sym/libk$(NAME).o; \
133:
134:
135: ## The kernel needs a special version of the runtime, so we move
136: ## static_obj aside for a while and re-build it with different parameters.
137: ## This target takes care of that, and creating a big file with
138: ## all the .o files in it for the kernel to link in.
139:
140: kernel:
141: @ \
142: $(ECHO) == Building kernel target ==; \
143: $(MAKE) all "CODE_GEN_STYLE=STATIC" \
144: "DSTROOT=$(DSTROOT)" \
145: "OBJROOT=$(OBJROOT)" \
146: "SYMROOT=$(SYMROOT)" \
147: "RC_CFLAGS = $(KERNEL_CFLAGS) $(RC_CFLAGS)" \
148: "RC_ARCHS=$(RC_ARCHS)"; \
149: $(ECHO) == Linking kernel library ==; \
150: for architecture in $(RC_ARCHS); do \
151: $(MKDIRS) $(SYMROOT)/$${architecture}_sym; \
152: $(ECHO) $(LD) -r -o \
153: $(SYMROOT)/$${architecture}_sym/libk$(NAME).o \
154: $(OBJROOT)/static_obj/$${architecture}/*.o; \
155: $(LD) -r -o \
156: $(SYMROOT)/$${architecture}_sym/libk$(NAME).o \
157: $(OBJROOT)/static_obj/$${architecture}/*.o; \
158: done
159:
160:
161: ## The Objective C messenger is split across a number of assembly files.
162: ## This is just dependencies to make sure it will be rebuild if changed.
163:
164: objc-msg.o:: objc-msg-*.s
165:
166:
167: ## We need this symbolic link to exist in the source directory.
168:
169: installsrc::
170: $(SYMLINK) $(SRCROOT) $(SRCROOT)/objc
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.