#all: libgoom.a goomdll.dll libgoommmx.a
all: libgoommmx.a mmx.obj

CC=gcc

LIB=ar rv

CFLAGS=-I./ -mms-bitfields -O
MMX_CFLAGS=-I./ -mms-bitfields -O
#CFLAGS=-I./ -fnative-struct
#MMX_CFLAGS=-I./ -fnative-struct 

#xmmx.obj \

GOOM_OBJS=filters.obj \
win32_compat.obj \
goom_tools.obj \
goom_hash.obj \
plugin_info.obj \
cpu_info.obj \
goom_script_scanner.tab.obj \
goom_script_scanner.obj \
goom_script.obj \
drawmethods.obj \
v3d.obj \
mmx_from_goom.obj \
sound_tester.obj \
pixeldoubler.obj \
mathtools.obj \
gfontrle.obj \
flying_stars_fx.obj \
convolve_fx.obj \
config_param.obj \
gfontlib.obj \
goom_core.obj \
graphic.obj \
ifs.obj \
lines.obj \
readme.obj \
surf3d.obj \
surface.obj \
tentacle3d.obj 
#frame_rate_tester.obj \
#gmtimer.obj \

GOOM_MMX_OBJS = mmx_from_goom.obj drawmethods.obj

libgoom.a: $(GOOM_OBJS)
	$(LIB) $@ $(GOOM_OBJS)

libgoommmx.a: $(GOOM_MMX_OBJS)
	$(LIB) $@ $(GOOM_MMX_OBJS)

filters.obj : ../filters.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

#frame_rate_tester.obj  : frame_rate_tester.c
#	$(CC) -c $(CFLAGS) $< -o $@

gfontlib.obj : ../gfontlib.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

#gmtimer.obj : gmtimer.c
#	$(CC) -c $(CFLAGS) $< -o $@

goom_core.obj : ../goom_core.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

graphic.obj : ../graphic.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

ifs.obj : ../ifs.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

lines.obj : ../lines.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

readme.obj : ../readme.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

surf3d.obj : ../surf3d.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

surface.obj : ../surface.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

tentacle3d.obj : ../tentacle3d.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

config_param.obj : ../config_param.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

convolve_fx.obj : ../convolve_fx.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

flying_stars_fx.obj : ../flying_stars_fx.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

gfontrle.obj : ../gfontrle.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

mathtools.obj : ../mathtools.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

pixeldoubler.obj : ../pixeldoubler.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

sound_tester.obj : ../sound_tester.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

mmx_from_goom.obj : ../mmx.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

#xmmx.obj : ../xmmx.c config.h
#	$(CC) -c $(MMX_CFLAGS) $< -o $@

v3d.obj : ../v3d.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

drawmethods.obj : ../drawmethods.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

goom_script.obj : ../goom_script.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

goom_script_scanner.obj : ../goom_script_scanner.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

goom_script_scanner.tab.obj : ../goom_script_scanner.tab.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

cpu_info.obj : ../cpu_info.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

plugin_info.obj : ../plugin_info.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

goom_hash.obj : ../goom_hash.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

goom_tools.obj : ../goom_tools.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

win32_compat.obj : win32_compat.c config.h
	$(CC) -c $(CFLAGS) $< -o $@

mmx.obj:
	nasm -f win32 mmx.asm

goomdll.dll : $(GOOM_OBJS)
	dlltool --add-stdcall-alias --output-def goomdll.def win32_compat.obj readme.obj
	dllwrap --def goomdll.def -o goomdll.dll $(GOOM_OBJS) -lgdi32 -mwindows -mno-cygwin

clean :
	@list='$(GOOM_OBJS)'; for p in $$list; do \
	 rm $$p; \
	done
