Annotation of OpenXM_contrib/gnuplot/beos/Makefile, Revision 1.1.1.1
1.1 ohara 1: ## BeOS Generic Makefile v2.0b3 ##
2:
3: ## Fill in the top section of this makefile to define exactly what sort of
4: ## binary you are creating, and what sources, resources and libraries are
5: ## needed to create it. The makefile will then determine the proper
6: ## platform specific options.
7:
8: ## Fill in the top section to define the binary being created and the makefile
9: ## will make sure that all of the hard work is taken care of for you, for both
10: ## PowerPC and Intel versions of the BeOS.
11:
12: ## Application Specific Settings ---------------------------------------------
13:
14: # specify the name of the binary
15: NAME= gnuplot_be
16:
17: # specify the type of binary
18: # APP: Application
19: # SHARED: Shared library or add-on
20: # STATIC: Static library archive
21: # DRIVER: Kernel Driver
22: TYPE= APP
23:
24: # specify the source files to use
25: # full paths or paths relative to the makefile can be included
26: # all files, regardless of directory, will have their object
27: # files created in the common object directory.
28: # Note that this means this makefile will not work correctly
29: # if two source files with the same name (source.c or source.cpp)
30: # are included from different directories. Also note that spaces
31: # in folder names do not work well with this makefile.
32: SOURCES= GPApp.cpp GPWindow.cpp GPView.cpp GPBitmap.cpp
33:
34: HEADERS= GPApp.h GPBitmap.h GPView.h GPWindow.h XStringList.h constants.h
35:
36: EXTRA_DIST= Makefile XStringList.cpp
37:
38: # specify the resource files to use
39: # full path or a relative path to the resource file can be used.
40: RSRCS= gnuplot_be.rsrc
41:
42: #specify additional libraries to link against
43: # if libName.so or libName.a is the name of the library to link against
44: # then simply specify Name in the LIBS list
45: # if there is another naming scheme use the full binary
46: # name: my_library.so or my_lib.a
47: # libroot.so never needs to be specified here, although libbe.so does
48: LIBS= be tracker
49:
50:
51: # specify the paths to directories where additional
52: # libraries are to be found. /boot/develop/lib/PLATFORM/ is
53: # already set. The paths can be full or relative to this
54: # makefile. The paths included may not be recursive, so
55: # specify all of the needed paths explicitly
56: # Directories containing source-files are automatically added.
57: LIBPATHS=
58:
59: # specify additional directories where header files can be found
60: # directories where sources are found are included automatically
61: # included.
62: INCPATHS=
63:
64: # specify the level of optimization that you desire
65: # NONE, SOME, FULL
66: OPTIMIZE= NONE
67:
68: # specify any symbols to be defined. The symbols will be
69: # set to a value of 1. For example specify DEBUG if you want
70: # DEBUG=1 to be set when compiling.
71: DEFINES=
72:
73: # specify special warning levels
74: # if unspecified default warnings will be used
75: # NONE = supress all warnings
76: # ALL = enable all warnings
77: WARNINGS =
78:
79: # specify symbols
80: # if TRUE debug symbols will be created
81: SYMBOLS = TRUE
82:
83:
84: # specify debug settings
85: # if TRUE will allow application to be run from
86: # the debugger
87: DEBUGGER = TRUE
88:
89:
90: ## Generic Makefile Rules ---------------------------
91: ## DO NOT MODIFY BENEATH THIS LINE -----------------
92:
93: # determine wheather running on x86 or ppc
94: MACHINE=$(shell uname -m)
95: ifeq ($(MACHINE), BePC)
96: CPU = x86
97: else
98: CPU = ppc
99: endif
100:
101: # set the directory where object files and binaries will be created
102: OBJ_DIR := obj.$(CPU)
103:
104: # specify that the binary should be created in the object directory
105: TARGET := $(NAME)
106:
107: # specify the mimeset tool
108: MIMESET := mimeset
109:
110: # specify the tools for adding and removing resources
111: XRES = xres
112:
113:
114: # platform specific settings
115:
116: # x86 Settings
117: ifeq ($(CPU), x86)
118: # set the compiler and compiler flags
119: CC = gcc
120:
121: # SETTING: set the CFLAGS for each binary type
122: ifeq ($(TYPE), DRIVER)
123: CFLAGS += -no-fpic
124: else
125: CFLAGS +=
126: endif
127:
128: # SETTING: set the proper optimization level
129: ifeq ($(OPTIMIZE), FULL)
130: OPTIMIZER = -O3
131: else
132: ifeq ($(OPTIMIZE), SOME)
133: OPTIMIZER = -O1
134: else
135: ifeq ($(OPTIMIZE), NONE)
136: OPTIMIZER = -O0
137: else
138: # OPTIMIZE not set so set to full
139: OPTIMIZER = -O3
140: endif
141: endif
142: endif
143:
144:
145:
146: # SETTING: set proper debugger flags
147: ifeq ($(DEBUGGER), TRUE)
148: DEBUG = -gdwarf-2
149: OPTIMIZER = -O0
150: endif
151:
152: CFLAGS += $(OPTIMIZER) $(DEBUG)
153:
154: # SETTING: set warning level
155: ifeq ($(WARNINGS), ALL)
156: CFLAGS += -Wall -Wno-multichar -Wno-ctor-dtor-privacy
157: else
158: ifeq ($(WARNINGS), NONE)
159: CFLAGS +=
160: endif
161: endif
162:
163: # set the linker and linker flags
164: LD = gcc
165: LDFLAGS += $(DEBUG)
166:
167: # SETTING: set linker flags for each binary type
168: ifeq ($(TYPE), APP)
169: LDFLAGS += -Xlinker -soname=_APP_
170: else
171: ifeq ($(TYPE), SHARED)
172: LDFLAGS += -nostart -Xlinker -soname=$(NAME)
173: else
174: ifeq ($(TYPE), DRIVER)
175: LDFLAGS += -nostdlib /boot/develop/lib/x86/_KERNEL_
176: endif
177: endif
178: endif
179:
180: # SETTING: define debug symbols if desired
181: ifeq ($(SYMBOLS), TRUE)
182: CFLAGS += -g
183: endif
184:
185:
186: else
187:
188: # ppc Settings
189: ifeq ($(CPU), ppc)
190: # set the compiler and compiler flags
191: CC = mwcc
192: CFLAGS +=
193:
194: # SETTING: set the proper optimization level
195: ifeq ($(OPTIMIZE), FULL)
196: OPTIMIZER = -O7
197: else
198: ifeq ($(OPTIMIZE), SOME)
199: OPTIMIZER = -O3
200: else
201: ifeq ($(OPTIMIZE), NONE)
202: OPTIMIZER =
203: else
204: # OPTIMIZE not set so set to full
205: OPTIMIZER = -O7
206: endif
207: endif
208: endif
209:
210:
211: CFLAGS += $(OPTIMIZER)
212:
213: # SETTING: set warning level
214: ifeq ($(WARNINGS), ALL)
215: CFLAGS += -w all
216: else
217: ifeq ($(WARNINGS), NONE)
218: CFLAGS += -w 0
219: endif
220: endif
221:
222: # clear the standard environment variable
223: # now there are no standard libraries to link against
224: BELIBFILES=
225:
226: # set the linker and linker flags
227: LD = mwldppc
228:
229: # SETTING: set linker flags for each binary type
230: ifeq ($(TYPE), APP)
231: LDFLAGS +=
232: else
233: ifeq ($(TYPE), SHARED)
234: LDFLAGS += -xms
235: endif
236: endif
237:
238: ifeq ($(TYPE), DRIVER)
239: LDFLAGS += -nodefaults \
240: -export all \
241: -G \
242: /boot/develop/lib/ppc/glue-noinit.a \
243: /boot/develop/lib/ppc/_KERNEL_
244: else
245: LDFLAGS += -export pragma \
246: -init _init_routine_ \
247: -term _term_routine_ \
248: -lroot \
249: /boot/develop/lib/ppc/glue-noinit.a \
250: /boot/develop/lib/ppc/init_term_dyn.o \
251: /boot/develop/lib/ppc/start_dyn.o
252: endif
253:
254:
255: # SETTING: output symbols in an xMAP file
256: ifeq ($(SYMBOLS), TRUE)
257: LDFLAGS += -map $(TARGET).xMAP
258: endif
259:
260: # SETTING: output debugging info to a .SYM file
261: ifeq ($(DEBUGGER), TRUE)
262: LDFLAGS += -g -osym $(TARGET).SYM
263: endif
264:
265: endif
266: endif
267:
268:
269: # psuedo-function for converting a list of source files in SOURCES variable
270: # to a corresponding list of object files in $(OBJ_DIR)/xxx.o
271: # The "function" strips off the src file suffix (.ccp or .c or whatever)
272: # and then strips of the directory name, leaving just the root file name.
273: # It then appends the .o suffix and prepends the $(OBJ_DIR)/ path
274: define SRCS_LIST_TO_OBJS
275: $(addprefix $(OBJ_DIR)/, $(addsuffix .o, $(foreach file, $(SOURCES), \
276: $(basename $(notdir $(file))))))
277: endef
278:
279: OBJS = $(SRCS_LIST_TO_OBJS)
280:
281: # create a unique list of paths to our sourcefiles
282: SRC_PATHS += $(sort $(foreach file, $(SOURCES), $(dir $(file))))
283:
284: # add source paths to VPATH if not already present
285: VPATH :=
286: VPATH += $(addprefix :, $(subst ,:, $(filter-out $($(subst, :, ,$(VPATH))), $(SRC_PATHS))))
287:
288: # add source paths and include paths to INLCUDES if not already present
289: INCLUDES = $(foreach path, $(INCPATHS) $(SRC_PATHS), $(addprefix -I, $(path)))
290:
291:
292: # SETTING: add the -L prefix to all library paths to search
293: LINK_PATHS = $(foreach path, $(LIBPATHS) $(SRC_PATHS) , \
294: $(addprefix -L, $(path)))
295:
296: # SETTING: add the -l prefix to all libs to be linked against
297: LINK_LIBS = $(foreach lib, $(LIBS), $(addprefix -l, $(lib)))
298:
299: # add to the linker flags
300: LDFLAGS += $(LINK_PATHS) $(LINK_LIBS)
301:
302: # SETTING: add the defines to the compiler flags
303: CFLAGS += $(foreach define, $(DEFINES), $(addprefix -D, $(define)))
304:
305: # SETTING: use the archive tools if building a static library
306: # otherwise use the linker
307: ifeq ($(TYPE), STATIC)
308: BUILD_LINE = ar -cru $(TARGET) $(OBJS)
309: else
310: BUILD_LINE = $(LD) -o $@ $(OBJS) $(LDFLAGS)
311: endif
312:
313: # create the resource instruction
314: ifeq ($(RSRCS), )
315: DO_RSRCS :=
316: else
317: DO_RSRCS := $(XRES) -o $(TARGET) $(RSRCS)
318: endif
319:
320:
321: # define the actual work to be done
322: default: $(TARGET)
323:
324: $(TARGET): $(OBJ_DIR) $(OBJS) $(RSRCS)
325: $(BUILD_LINE)
326: $(DO_RSRCS)
327: $(MIMESET) -f $@
328:
329:
330: # rule to create the object file directory if needed
331: $(OBJ_DIR)::
332: @[ -d $(OBJ_DIR) ] || mkdir $(OBJ_DIR) > /dev/null 2>&1
333:
334: $(OBJ_DIR)/%.o : %.c
335: $(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
336: $(OBJ_DIR)/%.o : %.cpp
337: $(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
338: $(OBJ_DIR)/%.o : %.cp
339: $(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
340: $(OBJ_DIR)/%.o : %.C
341: $(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
342: $(OBJ_DIR)/%.o : %.CC
343: $(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
344: $(OBJ_DIR)/%.o : %.CPP
345: $(CC) $(INCLUDES) $(CFLAGS) -c $< -o $@
346:
347:
348: # empty rule. Things that depend on this rule will always get triggered
349: FORCE:
350:
351: # The generic clean command. Delete everything in the object folder.
352: clean :: FORCE
353: -rm -rf $(OBJ_DIR)
354:
355: #
356: distclean: clean
357:
358: # remove just the application from the object folder
359: rmapp ::
360: -rm -f $(TARGET)
361:
362: # generic distdir rules - needed with automake
363: # maybe we can automakify the Makefile?
364: srcdir = .
365: top_builddir = ../..
366:
367: distdir = $(top_builddir)/$(PACKAGE)-$(VERSION)/src/$(subdir)
368:
369: subdir = beos
370:
371: DISTFILES = $(SOURCES) $(HEADERS) $(EXTRA_DIST)
372:
373: distdir: $(DISTFILES)
374: distdir=`cd $(distdir) && pwd`
375: @for file in $(DISTFILES); do \
376: d=$(srcdir); \
377: if test -d $$d/$$file; then \
378: cp -pr $$d/$$file $(distdir)/$$file; \
379: else \
380: test -f $(distdir)/$$file \
381: || ln $$d/$$file $(distdir)/$$file 2> /dev/null \
382: || cp -p $$d/$$file $(distdir)/$$file || :; \
383: fi; \
384: done
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>