# GSI - general sound interface
#
# Copyright (C) 1998 W.H.Scholten
#
# Makefile for gsi_server (OSS)



# ** Defines (USE_GUS_SYNTH, USE_OPL3_SYNTH)
#DEFINES=-DUSE_GUS_SYNTH
#now in config.h

#CC=gcc

# ** Various
INCLUDES= -I..

CFLAGS = -O2 -fomit-frame-pointer -DDEBUG -Wall

# ** Now together
ALL_CFLAGS=$(CFLAGS) $(DEFINES) $(INCLUDES)


CONFIG_OBJECTS = Config/Makeflags2 Config/Makeflags .depend

GSI_SERVER	= server/gsi_server
GSI_SERVER0	= gsi_server

GSI_SERVER_OBJS	= $(addprefix server/, gsi_server.o mixer.o dsp.o load.o clients.o midi/gsi_midi.o midi/gsi_midi_synth_control.o midi/gsi_patchload_gus.o midi/gsi_patchload_opl3.o )

UTIL_OBJS=utils/raw2au utils/raw2au.o

INSTALL_FILE=$(BINDIR)/$(GSI_SERVER0)

# ** Targets:
all:	$(GSI_SERVER)

$(GSI_SERVER): $(CONFIG_OBJECTS) $(GSI_SERVER_OBJS)
	$(CC) -o $(GSI_SERVER) $(GSI_SERVER_OBJS) -lm

strip:	$(GSI_SERVER)
	strip --strip-unneeded -R .note -R .comment $(GSI_SERVER)

clean:
	rm -f $(GSI_SERVER) $(GSI_SERVER_OBJS) *~ .depend $(UTIL_OBJS)

allclean: clean
	make -C test -f Makefile clean
	make -C player -f Makefile clean
	rm -f Config/Makeflags Config/Makeflags2 config.h gsi_config.e

install: $(GSI_SERVER) $(INSTALL_FILE)

install.all: install install.man install.header


$(INSTALL_FILE): $(GSI_SERVER)
	cp $(GSI_SERVER) $(INSTALL_FILE)

install.man: doc/*.?
	cp -f doc/*.1 $(MANDIR)/man1/
	cp -f doc/*.3 $(MANDIR)/man3/

install.header: $(CONFIG_OBJECTS)
	mkdir -p $(HEADERDIR)/gsi/
	cp *.h *.e *interface*  $(HEADERDIR)/gsi/

#config.h: config

utils: utils/raw2au
utils/raw2au: utils/raw2au.o



## Dependencies ##
ifeq (.depend, $(wildcard .depend))
.depend depend dep:
	for i in *.c; do $(CC) -M $(CFLAGS) $(INCLUDES) -I/usr/X11R6/include $$i; done >.depend

include .depend
else
depend dep:
	for i in *.c; do $(CC) -M $(CFLAGS) $(INCLUDES) -I/usr/X11R6/include  $$i; done >.depend

#.depend: *.h
.depend:
	$(MAKE) depend
	@exit 0
endif

## Makeflags2 = system locations ##
ifeq (Config/Makeflags2, $(wildcard Config/Makeflags2))
Config/Makeflags2:
	location
include Config/Makeflags2
else
# Non existant Makeflags2:
Config/Makeflags2:
	$(MAKE) location
	@exit 0
endif

## Makeflags = user config ##
ifeq (Config/Makeflags, $(wildcard Config/Makeflags))
Config/Makeflags:
	config
include Config/Makeflags
else
# Non existant Makeflags:
Config/Makeflags:
	$(MAKE) config
	@exit 0
endif

location:
	@./Config/Locations.sh

config:
	@./Config/Configure.sh

eiffelconfig: config.h
	@echo "class GSI_CONFIG" > gsi_config.e
	@utils/h2e.py config.h >> gsi_config.e
	@echo "end" >> gsi_config.e


# ------------------------------------------------------------------
#                    Implicit rules
# ------------------------------------------------------------------
# Compile C files to object files.
%.o: %.c
	$(CC) $(ALL_CFLAGS) -c -o $(addprefix $(dir $<), $(notdir $@)) $<

# Compile assembler files to object files.
%.s: %.c
	$(CC) $(ALL_CFLAGS) -S -o $(addprefix $(dir $<), $(notdir $@)) $<

# Compile C++ files to object files
#%.o: %.cc
#	$(CC) $(ALL_CFLAGS) -c -o $(addprefix $(dir $<), $(notdir $@)) $<
#	g++ $(ALL_CFLAGS)   -c -o $(addprefix $(dir $<), $(notdir $@)) $<
