# This is the Makefile for XTrace.

# Parameters.

PROGRAM = xtrace
SOURCES.c = draw.c main.c control.c parse.c utils.c \
				tramspec.c swconfig.c build.c macros.c
SOURCES.h = globaldefs.h y.tab.h
SOURCES.l = 
SOURCES.y = 
SOURCES.G = xtrace.G results.G viewer.G tramspec.G swconfig.G
STUBS.G = 
XINCLUDE = /usr/include/X11

# Derived parameters.

#
# If you don't want sound, make the following two assignments empty!
# (and make sure you undefine USE_SOUND in config.h)
#
# SOUND_SRC = libsst.c
# SOUND_LIB = /usr/demo/SOUND/libaudio.a

# SOURCES.c += $(SOUND_SRC)

SOURCES = \
	$(SOURCES.G) \
	$(SOURCES.h) \
	$(SOURCES.l) \
	$(SOURCES.y) \
	$(SOURCES.c) \
   $(SOUND_SRC)

TARGETS.c = \
	$(SOURCES.G:%.G=%_ui.c) \
	$(STUBS.G:%.G=%_stubs.c)

TARGETS.h = \
	$(SOURCES.G:%.G=%_ui.h) \
	$(SOURCES.l:%.l=%.h) \
	$(SOURCES.y:%.y=%.h)

TARGETS.other = \
	$(SOURCES.G:%.G=%.info)

TARGETS = \
	$(TARGETS.other) \
	$(TARGETS.h) \
	$(TARGETS.c)

OBJECTS = \
	$(SOURCES.c:%.c=%.o) \
	$(TARGETS.c:%.c=%.o) 

# Compiler flags.

CFLAGS += -O
CPPFLAGS += -I$(XINCLUDE)
LDFLAGS += -L$(OPENWINHOME)/share/lib
LDLIBS += $(SOUND_LIB) -lolgx -lxview -lX11 -ll -lm

.KEEP_STATE:

# Standard targets.

all:	 $(TARGETS.other) $(PROGRAM)
objects: $(SOURCES.c) $(TARGETS.c) $(TARGETS.h) $(OBJECTS)
sources: $(SOURCES)
targets: $(SOURCES) $(TARGETS)

%.c: RCS/%.c,v
	co $@

%.l: RCS/%.l,v
	co $@

%.y: RCS/%.y,v
	co $@

%.G: RCS/%.G,v
	co $@

$(PROGRAM): $(SOURCES.c) $(TARGETS.c) $(TARGETS.h) $(OBJECTS)
	$(LINK.c) -o $(PROGRAM) $(OBJECTS) $(LDLIBS)

$(PROGRAM).static: $(SOURCES.c) $(TARGETS.c) $(TARGETS.h) $(OBJECTS)
	$(LINK.c) -Bstatic -o $(PROGRAM) $(OBJECTS) $(LDLIBS)

saber:
	#load $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(OBJECTS) $(LDLIBS)

parse.o: parse.lex.c parse.c
	cc $(CFLAGS) $(CPPFLAGS) -c parse.c

parse.lex.c: xtrace.l
	lex xtrace.l
	mv lex.yy.c parse.lex.c

parse.c: xtrace.y
	yacc -d -t xtrace.y
	mv y.tab.c parse.c

draw.c: y.tab.h 

y.tab.h: xtrace.y
	yacc -d -t xtrace.y

# Targets to be used by a certain CASE tool.

stest: $(SOURCES.c) $(TARGETS.c) $(TARGETS.h) $(OBJECTS)
	#load $(CFLAGS) $(CPPFLAGS) $(LDFLAGS) $(TARGET_ARCH) \
		-o $(PROGRAM) $(SOURCES.c) $(TARGETS.c) $(LDLIBS)

%_ui.c + %_ui.h + %_stubs.c + %.info: %.G
	$(GUIDEHOME)/bin/gxv $*

clean:
	$(RM) $(TARGETS) $(OBJECTS) $(SOURCES.G:%.G=%_stubs.c) core
