# MakeSkel - makefile skeleton for vw/demo/sprites
#
# modification history
# --------------------
# 02g,31oct91,rrr  added search of /usr/include for host build
# 02f,20aug91,gae  removed sprite.h reference -- forgotten in 02e.
# 02e,26jul91,gae  added xdrawServer for X11; removed VxWorks module/library.
#                  references (lstLib,copyright).
# 02d,30apr91,hdn  made changes for TRON architecture.
# 02c,23jan91,rbr  Took "-g" out of CFLAGS.
# 02b,25oct90,dnw  Added filter to change <rpc/types.h> to <rpc/rpctypes.h>.
#		   Removed -I/usr/include before VxWorks directories.
# 02a,29jun90,rbr  Reworked so "lib" can be made for any architecture from
#		   any host by specifying $(CPU).  "Exe" always builds just
#		   for the host- too complicated to change.  "Lib" builds
#		   shared library, VxWorks object modules in vw/lib; "exe"
#		   builds Unix programs in vw/bin.
# 01a,14jan90,gae  added modification history; added include of makeDirs.
#
# DESCRIPTION
# This file contains the configuration makefile for VxWorks targets.
#
# CONSTANTS
#    DEFVW   - location of top-level VxWorks directory
#
# INCLUDES
#    makeHost
#    makeDirs
#    makeLibrary
#*/


define(DEFVW,UP2)
include(../../misc/makeHost)
include(../../misc/makeDirs)


## additional rules

.SUFFIXES: .x

changequote({,})

.x.c:
	\@ $(RM) $@
	\@ echo "/* $@ - generated by rpcgen from $< */" > $@
	\@ echo "/* `date` */" >> $@
	\@ echo >> $@
	$(RPCGEN) -c $< | sed "s%<rpc/types.h>%<rpc/rpctypes.h>%" >> $@

.x.h:
	\@ $(RM) $@
	\@ echo "/* $@ - generated by rpcgen from $< */" > $@
	\@ echo "/* `date` */" >> $@
	\@ echo >> $@
	$(RPCGEN) -h $< | sed "s%<rpc/types.h>%<rpc/rpctypes.h>%" >> $@

## tools

RPCGEN   = rpcgen

## flags and defines

INCLUDES  = -I$(H1) -I$(H2) -I$(H3)
DEFINES   = -DCPU=<CPU> -D$(HOST_TYPE)

# CFLAGS only used for "lib", not "exe" - see below
CFLAGS    = $(HOST_CFLAGS_<CPU>) $(DEFINES) $(INCLUDES)
CASFLAGS  = -E $(EVEN) $(INCLUDES) $(DEFINES)
LINTFLAGS = -bun $(INCLUDES) -DCPU=<CPU> -D$(HOST_TYPE) -DLINT
LINT_FILES= simpleSprite.c ramaServer.c drawServer.c xdrawServer.c


## files and directories

LIBDIR	 = $(LIB_<CPU>)
LIBNAME  = sprites.a
LIBRARY	 = $(LIBDIR)$(LIBNAME)

OBJ_COMMON = draw.o rama.o simpleSprite.o ramaServer.o

OBJ_I960CA    = $(OBJ_COMMON)
OBJ_MC68000   = $(OBJ_COMMON)
OBJ_MC68010   = $(OBJ_COMMON)
OBJ_MC68020   = $(OBJ_COMMON)
OBJ_MC68040   = $(OBJ_COMMON)
OBJ_CPU32     = $(OBJ_COMMON)
OBJ_R3K       = $(OBJ_COMMON)
OBJ_SPARC     = $(OBJ_COMMON)
OBJ_G100      = $(OBJ_COMMON)
OBJ_G200      = $(OBJ_COMMON)

SUN_LIBS  = -lsuntool -lsunwindow -lpixrect -lrpcsvc 
X_LIBS    = -lX11 -lXext


####################### "Makefile" targets #############################

default : lib exe

# mf, lib, etc. defined for us here
include(../../misc/makeLibrary)

exe:
	make CPU=`mach | tr a-z A-Z` mf
	make RANLIB=ranlib AR=ar -f Makefile.`mach | tr a-z A-Z` \
	    _get _exe _clean

####################### "Makefile.$(CPU)" targets ######################

_lib: $(LIBDIR)sprites.o

_exe: $(BIN)xdrawServer $(BIN)drawServer $(BIN)ramaServer $(BIN)simpleSprite

####################### object modules ################################

lint: lib.lint

lib.lint: $(LINT_FILES)
	- lint $(LINTFLAGS) $(LINT_FILES) > lib.lint

## rpc files

rama.h: rama.x
rama.c: rama.x
draw.h: draw.x
draw.c: draw.x

##

rama.o: rama.c rama.h
draw.o: draw.c draw.h
simpleSprite.o: rama.h
ramaServer.o: rama.h draw.h

## VxWorks object modules

$(LIBDIR)sprites.o: $(LIBRARY)
	\@ $(RM) $@
	$(LD) -r -u _simpleSprite -u _ramaServer -o tmp.o $(LIBRARY)
	$(LDOUT_CONV) tmp.o > $@
	\@ $(RM) tmp.o

## UNIX programs

changequote(`,')
HOST_INCLUDES=	-I`/usr/include' $(INCLUDES)

$(BIN)simpleSprite: $(LIBRARY) ssMain.c
	\@ $(RM) $@
	$(CC_HOST) $(DEFINES) $(HOST_INCLUDES) $(HOST_CFLAGS_HOST) -o $@ \
	    ssMain.c $(LIBRARY) $(SUN_LIBS)

$(BIN)ramaServer: $(LIBRARY) rsMain.c
	\@ $(RM) $@
	$(CC_HOST) $(DEFINES) $(HOST_INCLUDES) $(HOST_CFLAGS_HOST) -o $@ \
	    rsMain.c $(LIBRARY) $(SUN_LIBS)

$(BIN)drawServer: $(LIBRARY) drawServer.c
	\@ $(RM) $@
	$(CC_HOST) $(DEFINES) $(HOST_INCLUDES) $(HOST_CFLAGS_HOST) -o $@ \
	    drawServer.c $(LIBRARY) $(SUN_LIBS)

$(BIN)xdrawServer: $(LIBRARY) xdrawServer.c
	\@ $(RM) $@
	$(CC_HOST) $(DEFINES) $(HOST_INCLUDES) $(HOST_CFLAGS_HOST) -o $@ \
	    xdrawServer.c $(LIBRARY) $(X_LIBS)

# end MakeSkel
