################################
# PlaySPC_GTK Makefile         #
# Copyright (C) 2002, JJ Foote #
################################

# Prefix for installation (used in 'make install')
PREFIX=/usr

# Temporary directory (trailing slash is important!)
TEMP_DIR=/tmp

# Output plugin to use
DEF_PLUG_IN=spccore

# Track timer display style: START or END placement
LOCATION=END

# Track timer display style: TEXT or LABEL
TIMER=LABEL

# Default encoder (for shoutcasting)
ENCODER=lame

# Files to install with 'make install'
BINARIES = playspc_gtk spccore
LIBRARIES = libopenspc.so

DEF_LIST_FILE=7zlist.txt

# The following basic UNIX utilities are used solely in the handling of compressed archives.
DEF_RM_PROGRAM=rm
DEF_RM_FLAGS=-Rf

DEF_GREP_PROGRAM=grep
DEF_GREP_FLAGS=

DEF_SED_PROGRAM=sed
DEF_SED_FLAGS=

DEF_CAT_PROGRAM=cat
DEF_CAT_FLAGS=

DEF_XARGS_PROGRAM=/usr/bin/xargs
DEF_XARGS_FLAGS=-ifoo

###############################################
# From here on, you shouldn't touch anything. #
###############################################

WARN=-Wall
#CFLAGS=-g
CFLAGS=-march=athlon-xp -O3
LIBS=

LOCATION_OPTIONS=-DSTART=0 -DEND=1
TIMER_OPTIONS=-DTEXT=0 -DLABEL=1

DEF_RAR=-DRAR="\"$(DEF_RAR_PROGRAM) \"" -DRAR_EXTRACT_FLAGS="\"$(DEF_RAR_EXTRACT_FLAGS) \"" -DRAR_LIST_FLAGS="\"$(DEF_RAR_LIST_FLAGS) \"" -DRAR_COMPRESS_FLAGS="\"$(DEF_RAR_COMPRESS_FLAGS) \""
DEF_LIST=-DLIST_FILE="\"$(DEF_LIST_FILE)\""
DEF_RM=-DRM="\"$(DEF_RM_PROGRAM) \"" -DRM_FLAGS="\"$(DEF_RM_FLAGS) \""
DEF_GREP=-DGREP="\"$(DEF_GREP_PROGRAM) \"" -DGREP_FLAGS="\"$(DEF_GREP_FLAGS) \""
DEF_SED=-DSED="\"$(DEF_SED_PROGRAM) \"" -DSED_FLAGS="\"$(DEF_SED_FLAGS) \""
DEF_CAT=-DCAT="\"$(DEF_CAT_PROGRAM) \"" -DCAT_FLAGS="\"$(DEF_CAT_FLAGS) \""
DEF_XARGS=-DXARGS="\"$(DEF_XARGS_PROGRAM) \"" -DXARGS_FLAGS="\"$(DEF_XARGS_FLAGS) \""
DEF_TEMP=-DTEMP_DIR="\"$(TEMP_DIR)\""
DEF_PLUG=-DPLUG_IN="\"$(DEF_PLUG_IN)\""
DEF_ENC=-DENCODER="\"$(ENCODER)\""
DEF_LOC=-DLOCATION=$(LOCATION) $(LOCATION_OPTIONS)
DEF_TIMER=-DTIMER=$(TIMER) $(TIMER_OPTIONS)

DEFINES=$(DEF_TEMP) $(DEF_SPC) $(DEF_LIST) $(DEF_GREP) $(DEF_SED) $(DEF_RM) $(DEF_CAT) $(DEF_XARGS) $(DEF_PLUG) $(DEF_ENC) $(DEF_LOC) $(DEF_TIMER)

all: $(BINARIES)
	strip $(BINARIES)
	@echo ""
	@echo "PlaySPC_GTK compilation successful!"
	@echo ""

playspc_gtk: playspc_gtk.o strlcpy.o connectTCP.o passiveTCP.o opensock.o
	gcc $(WARN) $(CFLAGS) ${LIBS} playspc_gtk.o strlcpy.o connectTCP.o passiveTCP.o opensock.o -o playspc_gtk `gtk-config --libs gthread`

playspc_gtk.o: playspc_gtk.c playspc_gtk.h
	gcc $(WARN) $(CFLAGS) $(DEFINES) -c playspc_gtk.c -o playspc_gtk.o `gtk-config --cflags gthread` 
		
strlcpy.o: strlcpy.c
	gcc $(WARN) $(CFLAGS) $(DEFINES) -c strlcpy.c -o strlcpy.o

passiveTCP.o: passiveTCP.c opensock.h
	gcc $(WARN) $(CFLAGS) $(DEFINES) -c passiveTCP.c -o passiveTCP.o

connectTCP.o: connectTCP.c opensock.h
	gcc $(WARN) $(CFLAGS) $(DEFINES) -c connectTCP.c -o connectTCP.o

opensock.o: opensock.c
	gcc $(WARN) $(CFLAGS) $(DEFINES) -c opensock.c -o opensock.o

libopenspc.so: force_look
	cd libopenspc; $(MAKE) CFLAGS="$(CFLAGS)" $(MFLAGS)

spccore: spccore.o libopenspc.so
	gcc $(WARN) $(CFLAGS) spccore.o -o spccore -lz -lopenspc -Llibopenspc `gtk-config --libs gthread`

spccore.o: spccore.c shared.h libopenspc/openspc.h
	gcc $(WARN) $(CFLAGS) -c spccore.c -o spccore.o -Ilibopenspc

install:
	install -m 755 $(BINARIES) $(PREFIX)/bin
	cd libopenspc; install -m 755 $(LIBRARIES) $(PREFIX)/lib
	$(LDCONFIG)

clean:
	rm -f *~ *.o playspc_gtk spccore
	cd libopenspc; $(MAKE) $(MFLAGS) clean

force_look:
	true
