shithub: freetype+ttf2subf

ref: 4d3e56392fd0a89d97cb3f567d713cb15ac74cbf
dir: /demos/graph/rules.mk/

View raw version
#**************************************************************************
#*
#*  FreeType demo utilities sub-Makefile
#*
#*  This Makefile is to be included by "freetype/demo/Makefile". Its
#*  purpose is to compile MiGS (the Minimalist Graphics Subsystem)
#*
#*  It is written for GNU Make. Other make utilities are not
#*  supported.. !!
#*
#*
#*  The following variables must be defined :
#*
#*  CFLAGS     : C flags to use when compiling the utilities. This
#*               must NOT include the '-c' flag used to specify a
#*               simple compilation.
#*
#*  IFLAG      : include path flag. This is typically "-I" but some
#*               compilers use a different convention..
#*
#*  LFLAG      : add link directory flag. Usually '-L' but could be
#*               different..
#*
#*  OBJ_DIR    : target location of the object files
#*
#*  UTIL_DIR   : location of the utilities sources. I.e. this
#*               directory (usually "freetype/demo/graph").
#*
#*
#*  It also defines the following variables
#*
#*  SIMPLE_UTILS : list of object files for the non-graphical utilities
#*
#*  GRAPH_UTILS  : all object files, including the graphics sub-system
#*
#*  GRAPH_FLAGS  : additional compile flags for graphical apps
#*  GRAPH_LINK   : additional link flags for graphical apps
#*
#**************************************************************************

##########################################################################
#
#
#
#
#

GRAPH_INCLUDES := $(TOP2_)graph
GRAPH_LIB      := $(OBJ_)graph.$A
#GRAPH_LINK     := $(GRAPH_LIB)

GRAPH_ := $(TOP2_)graph$(SEP)

GRAPH_H := $(GRAPH_)graph.h    \
           $(GRAPH_)grtypes.h  \
           $(GRAPH_)grobjs.h   \
           $(GRAPH_)grdevice.h \
           $(GRAPH_)grblit.h


GRAPH_OBJS := $(OBJ_)grblit.$O   \
              $(OBJ_)grobjs.$O   \
              $(OBJ_)grfont.$O   \
              $(OBJ_)grdevice.$O \
              $(OBJ_)grinit.$O


# Default value for COMPILE_GRAPH_LIB
# this value can be modified by the system-specific graphics drivers..
#
COMPILE_GRAPH_LIB = ar -r $@ $(GRAPH_OBJS)

# Add the rules used to detect and compile graphics driver depending
# on the current platform..
#
include $(wildcard $(TOP2)/graph/*/rules.mk)

#########################################################################
#
# Build the "graph" library from its objects. This should be changed
# in the future in order to support more systems. Probably something
# like a `config/<system>' hierarchy with a system-specific rules file
# to indicate how to make a library file, but for now, I'll stick to
# unix, Win32 and OS/2-gcc..
#
#
$(GRAPH_LIB): $(GRAPH_OBJS)
	$(COMPILE_GRAPH_LIB)


# pattern rule for normal sources
#
$(OBJ_)%.$O: $(GRAPH_)%.c $(GRAPH_H)
	$(CC) $(CFLAGS) $(GRAPH_INCLUDES:%=$I%) $T$@ $<


# a special rule is used for 'grinit.o' as it needs the definition
# of some macros like "-DDEVICE_X11" or "-DDEVICE_OS2_PM"
#
$(OBJ_)grinit.$O: $(GRAPH_)grinit.c $(GRAPH_H)
	$(CC) $(CFLAGS) $(GRAPH_INCLUDES:%=$I%)  \
                    $(DEVICE_INCLUDES:%=$I%) \
                    $(DEVICES:%=$DDEVICE_%) $T$@ $<