Annotation of OpenXM_contrib/gnuplot/beos/Makefile, Revision 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>