# Makefile for vgagames libraries, copyright (C) 2000-2004 Kurt Nienhaus
# To make libraries: type "make"
# To install libraries: type "make install" as user root
# To make example programs: type "make examples" (as user root)
# To remove object files in source path: type "make clean"
# To remove all installed files: type "make uninstall"


#CC = gcc
#CPP = gcc -E
CFLAGS = -Wall -O2
SHAREPATH = /usr/share/vgagames
LIBPATH = /usr/local/lib
INCPATH = /usr/local/include
BINPATH = /usr/local/bin
RANLIB=ar


all: liball vgag-midi vgag-mp3 vgag-wave vgag-nettcp vgag-bitmap

vga: lib_vga vgag-midi vgag-mp3 vgag-wave vgag-nettcp vgag-bitmap
vgl: lib_vgl vgag-midi vgag-mp3 vgag-wave vgag-nettcp vgag-bitmap
x: lib_x vgag-midi vgag-mp3 vgag-wave vgag-nettcp vgag-bitmap

uninstall:
	rm -f $(LIBPATH)/libvgagames_*.a
	rm -f $(INCPATH)/vgagames.h $(INCPATH)/vgagames_*.h
	rm -f $(SHAREPATH)/rgb256.dat $(SHAREPATH)/grey256.dat
	rm -f $(SHAREPATH)/wave.conf
	rm -rf $(SHAREPATH)/tmidi
	[ ! -d "$(SHAREPATH)" ] && true || rmdir $(SHAREPATH)
	rm -f $(BINPATH)/vgag-bitmap $(BINPATH)/vgag-nettcp
	rm -f $(BINPATH)/vgag-wave $(BINPATH)/vgag-midi
	rm -f $(BINPATH)/vgag-mp3 $(BINPATH)/vgag-mp3?
	rm -f /usr/bin/vgag-config.sh

clean:
	rm -f *.o config pfadh pfad.h config.log vgagames_vgl.h
	rm -f _c_*.h _c_*.lib netw.h _netw _t_of_sel.h _uname.h _endian.h _pipbfl.h __lib_*
	rm -f vgag-midi vgag-mp3 vgag-mp3? vgag-wave
	rm -f vgag-nettcp vgag-bitmap libvgagames_*.a
	rm -f vgag-config.sh wave.conf
	cd tmidi; $(MAKE) clean
	rm -f tmidi/pfad.h tmidi/_endian.h tmidi/_uname.h
	cd mp3; $(MAKE) clean
	rm -f mp3/pfad.h
	cd example; $(MAKE) clean


# *** different graphic libraries ***

liball: lib_vga lib_vgl lib_x

# +++ svgalib
lib_vga: libvgagames_vga.o sound.o nettcp.o
	if [ -f "__lib_vga" ]; then \
	  $(RANLIB) rcs libvgagames_vga.a libvgagames_vga.o sound.o nettcp.o; \
	fi

libvgagames_vga.o: pfadh vgagames.c vgagames.h vgag-bitmap.h \
	font*.h colordef.h vgagames_wave.h vgagames_vga.h vgagames_vga.c
	if [ -f "__lib_vga" ]; then \
	  $(CC) $(CFLAGS) -I. -DGRLIB_VGA -c vgagames.c; \
	  mv -f vgagames.o libvgagames_vga.o; \
	fi

# +++ libvgl
lib_vgl: libvgagames_vgl.o sound.o nettcp.o
	if [ -f "__lib_vgl" ]; then \
	  $(RANLIB) rcs libvgagames_vgl.a libvgagames_vgl.o sound.o nettcp.o; \
	fi

libvgagames_vgl.o: pfadh vgagames.c vgagames.h vgag-bitmap.h \
	font*.h colordef.h vgagames_wave.h vgagames_vgl.h vgagames_vgl.c
	if [ -f "__lib_vgl" ]; then \
	  $(CC) $(CFLAGS) -I. -DGRLIB_VGL -c vgagames.c; \
	  mv -f vgagames.o libvgagames_vgl.o; \
	fi

# +++ X window
lib_x: libvgagames_x.o sound.o nettcp.o
	if [ -f "__lib_x" ]; then \
	  $(RANLIB) rcs libvgagames_x.a libvgagames_x.o sound.o nettcp.o; \
	fi

libvgagames_x.o: pfadh vgagames.c vgagames.h vgag-bitmap.h \
	font*.h colordef.h vgagames_wave.h vgagames_x.h vgagames_x.c
	if [ -f "__lib_x" ]; then \
	  if [ -f "__lib_x_exts" ]; then \
	    $(CC) $(CFLAGS) -I. -I /usr/X11R6/include -DGRLIB_X -DGRLIB_X_EXTS -c vgagames.c; \
	  else \
	    $(CC) $(CFLAGS) -I. -I /usr/X11R6/include -DGRLIB_X -c vgagames.c; \
	  fi; \
	  mv -f vgagames.o libvgagames_x.o; \
	fi


# *** other stuff ***

pfadh: config
	echo "#define SHARE_PATH \"$(SHAREPATH)\"" > pfad.h
	echo "#define BIN_PATH \"$(BINPATH)\"" >> pfad.h
	@echo > pfadh

config:
	(echo "$(CC)"; echo "$(CPP)"; echo "$(LIBPATH)"; echo "$(INCPATH)"; echo "$(BINPATH)") | sh ./config.sh

sound.o: pfadh sound.c
	$(CC) $(CFLAGS) -c sound.c

nettcp.o: pfadh nettcp.c
	$(CC) $(CFLAGS) -c nettcp.c


# *** programs and servers ***

vgag-midi: pfadh
	cp pfad.h _uname.h _endian.h tmidi
	cd tmidi; $(MAKE) all

vgag-mp3: pfadh
	cp pfad.h mp3
	cd mp3; $(MAKE) BINPATH="$(BINPATH)" all

vgag-wave: pfadh vgag-wave.c vgag-wave.h wave_*.h \
	soundserver.h
	$(CC) $(CFLAGS) vgag-wave.c `cat _c_wave.lib` -o vgag-wave

vgag-nettcp: pfadh vgag-nettcp.c
	$(CC) $(CFLAGS) vgag-nettcp.c `cat _netw` -o vgag-nettcp

vgag-bitmap: pfadh vgag-bitmap.c vgag-bitmap.h
	$(CC) $(CFLAGS) vgag-bitmap.c -o vgag-bitmap


# *** installation ***

install: pfadh
	@[ `id -u` -eq 0 ] || (echo "*** you must be root for installing ***" ;false)
	mkdir -p $(SHAREPATH) || true
	mkdir -p $(LIBPATH) || true
	mkdir -p $(INCPATH) || true
	mkdir -p $(BINPATH) || true
	cp vgag-config.sh /usr/bin && chmod 555 /usr/bin/vgag-config.sh
	(cp libvgagames_*.a $(LIBPATH) && chmod 444 $(LIBPATH)/libvgagames_*.a) || true
	cp vgagames.h $(INCPATH) && chmod 444 $(INCPATH)/vgagames.h
	cp vgagames_*.h $(INCPATH) && chmod 444 $(INCPATH)/vgagames_*.h
	cp rgb256.dat $(SHAREPATH) && chmod 444 $(SHAREPATH)/rgb256.dat
	cp grey256.dat $(SHAREPATH) && chmod 444 $(SHAREPATH)/grey256.dat
	sh inst_wave-conf.sh > wave.conf && cp wave.conf $(SHAREPATH) && chmod 666 $(SHAREPATH)/wave.conf || true
	mkdir $(SHAREPATH)/tmidi 2> /dev/null && chmod 755 $(SHAREPATH)/tmidi || true
	cp tmidi/cfg/*.cfg $(SHAREPATH)/tmidi && chmod 444 $(SHAREPATH)/tmidi/*.cfg
	mkdir $(SHAREPATH)/tmidi/patch 2> /dev/null && chmod 755 $(SHAREPATH)/tmidi/patch || true
	cp tmidi/cfg/patch/*.pat $(SHAREPATH)/tmidi/patch && chmod 444 $(SHAREPATH)/tmidi/patch/*.pat
	[ ! -f "vgag-midi" ] && true || ( cp vgag-midi $(BINPATH) && chmod 555 $(BINPATH)/vgag-midi )
	[ ! -f "vgag-mp3" ] && true || ( cp vgag-mp3 $(BINPATH) && chmod 555 $(BINPATH)/vgag-mp3 )
	[ ! -f "vgag-mp3r" ] && true || ( cp vgag-mp3r $(BINPATH) && chmod 555 $(BINPATH)/vgag-mp3r )
	[ ! -f "vgag-mp3s" ] && true || ( cp vgag-mp3s $(BINPATH) && chmod 555 $(BINPATH)/vgag-mp3s )
	[ ! -f "vgag-wave" ] && true || ( cp vgag-wave $(BINPATH) && chmod 4555 $(BINPATH)/vgag-wave )
	[ ! -f "vgag-nettcp" ] && true || ( cp vgag-nettcp $(BINPATH) && chmod 555 $(BINPATH)/vgag-nettcp )
	[ ! -f "vgag-bitmap" ] && true || ( cp vgag-bitmap $(BINPATH) && chmod 555 $(BINPATH)/vgag-bitmap )


# *** examples ***

examples:
	cd example; $(MAKE) all

