all: pd_linux
#all: pd_win
#all: pd_darwin

.SUFFIXES: .pd_linux .pd_darwin .dll .tk .tk2c

PDPATH = /home/pat/pd




# ----------------------- WINDOWS -------------------------
pd_win: tracker.dll
tracker.dll: tracker.c tracker.h tracker.tk2c

WINCFLAGS = -Wall -W -Wshadow -Wstrict-prototypes -DPD -DNT -W3 -WX -Werror -Wno-unused -mms-bitfields -Wno-parentheses -Wno-switch -O6 -funroll-loops -fomit-frame-pointer
WININCLUDE =  -I.. -I../include -I$(PDPATH)/src

WINLDFLAGS = -shared

.c.dll:
	gcc -mms-bitfields $(WINCFLAGS) $(WININCLUDE) -o $*.o -c $*.c
	gcc $(WINLDFLAGS) -o $*.dll $*.o $(PDPATH)/bin/pd.dll
	strip --strip-unneeded $*.dll
	rm -f $*.o

# ----------------------- LINUX i386 ----------------------
pd_linux: tracker.pd_linux
tracker.pd_linux: tracker.c tracker.h tracker.tk2c

LINUXCFLAGS = -DPD -DUNIX -O2 -funroll-loops -fomit-frame-pointer \
   -Wall -W -Wno-shadow -Wstrict-prototypes \
   -Wno-unused -Wno-parentheses -Wno-switch
LINUXINCLUDE = -I/usr/include -I$(PDPATH)/src
LINUXLDFLAGS = --export-dynamic  -shared

.c.pd_linux:
	$(CC) $(LINUXCFLAGS) $(CFLAGS) $(LINUXINCLUDE) -fPIC -o $*.o -c $*.c
	$(LD) $(LINUXLDFLAGS) -o $*.pd_linux $*.o -lc -lm
	strip --strip-unneeded $*.pd_linux

# ----------------------- Darwin (OSX) --------------------
pd_darwin: tracker.pd_darwin
tracker.pd_darwin: tracker.c tracker.h tracker.tk2c

DARWINCFLAGS = -DPD -DUNIX -O2 -funroll-loops -fomit-frame-pointer \
   -Wall -W -Wno-shadow -Wstrict-prototypes \
   -Wno-unused -Wno-parentheses -Wno-switch
DARWININCLUDE = -I/usr/include -I$(PDPATH)/src
DARWINLDFLAGS = -bundle -undefined suppress -flat_namespace

.c.pd_darwin:
	$(CC) $(DARWINCFLAGS) $(DARWININCLUDE) -o $*.o -c $*.c
	$(LD) $(DARWINLDFLAGS) -o $*.pd_darwin $*.o -lc -lm

# ----------------------- Miscellaneous -------------------
.tk.tk2c:
	sh tk2c.bash < $*.tk > $*.tk2c

clean:
	rm -f *.o *.pd_linux *.pd_darwin *.pd_win *.dll so_locations *.tk2c