CC = gcc
#CFLAGS = -g -Wall
CFLAGS = -O3 -fomit-frame-pointer -funroll-loops -fno-strength-reduce

ifneq (, $(findstring freebsd, $(OSTYPE)))
GTKCONFIG = gtk12-config
LIBGDK = -lgdk12
else
GTKCONFIG = gtk-config
LIBGDK = -lgdk -lXext
endif

LIBS =  -lX11 -lXext `$(GTKCONFIG) --libs | sed "s/-l.*//g"` $(LIBGDK) -lm

all:	wmquake

clean:
	rm -f *.o wmquake

fiep:
	echo "Hello" $(findstring linux, $(OSTYPE))

%.o : %.s
	$(CC) $(CFLAGS) -DELF -x assembler-with-cpp -c $<

PORTABLE_OBJS= \
 console.o r_light.o r_misc.o pr_cmds.o cd_null.o menu.o draw.o cl_demo.o \
 cl_input.o keys.o cl_main.o cl_parse.o cl_tent.o cmd.o common.o crc.o \
 cvar.o d_edge.o d_fill.o d_init.o d_modech.o d_part.o d_polyse.o d_scan.o \
 d_sky.o d_sprite.o d_surf.o d_zpoint.o host.o host_cmd.o mathlib.o model.o \
 net_main.o net_vcr.o pr_edict.o pr_exec.o r_aclip.o r_efrag.o r_alias.o \
 r_bsp.o r_draw.o r_edge.o r_main.o r_part.o r_sky.o r_sprite.o r_surf.o \
 r_vars.o sbar.o screen.o sv_main.o sv_move.o sv_phys.o sv_user.o view.o \
 wad.o world.o zone.o

LINUX_OBJS= \
 d_vars.o sys_linux.o net_bsd.o net_dgrm.o net_loop.o net_udp.o nonintel.o \
 snd_dma.o snd_mem.o snd_linux.o snd_mix.o

OBJS = $(PORTABLE_OBJS) $(LINUX_OBJS)

vid_gdk.o:
	$(CC) $(CFLAGS) `$(GTKCONFIG) --cflags` -c -o vid_gdk.o vid_gdk.c

wmquake: $(OBJS) vid_gdk.o in_null.o
	$(CC) $(OBJS) vid_gdk.o in_null.o -o wmquake $(LIBS)

# dependencies
cd_null.o: cd_null.c \
   quakedef.h
cl_demo.o: cl_demo.c \
   quakedef.h
cl_input.o: cl_input.c \
   quakedef.h
cl_main.o: cl_main.c \
   quakedef.h
cl_parse.o: cl_parse.c \
   quakedef.h
cl_tent.o: cl_tent.c \
   quakedef.h
cmd.o: cmd.c \
   quakedef.h
common.o: common.c \
   quakedef.h
console.o: console.c \
   quakedef.h
crc.o: crc.c \
   quakedef.h \
   crc.h
cvar.o: cvar.c \
   quakedef.h
d_edge.o: d_edge.c \
   quakedef.h \
   d_local.h
d_fill.o: d_fill.c \
   quakedef.h
d_init.o: d_init.c \
   quakedef.h \
   d_local.h
d_modech.o: d_modech.c \
   quakedef.h \
   d_local.h
d_part.o: d_part.c \
   quakedef.h \
   d_local.h
d_polyse.o: d_polyse.c \
   quakedef.h \
   r_local.h \
   d_local.h \
   adivtab.h
d_scan.o: d_scan.c \
   quakedef.h \
   r_local.h \
   d_local.h
d_sky.o: d_sky.c \
   quakedef.h \
   r_local.h \
   d_local.h
d_sprite.o: d_sprite.c \
   quakedef.h \
   d_local.h
d_surf.o: d_surf.c \
   quakedef.h \
   d_local.h \
   r_local.h
d_vars.o: d_vars.c \
   quakedef.h
d_zpoint.o: d_zpoint.c \
   quakedef.h \
   d_local.h
draw.o: draw.c \
   quakedef.h
host.o: host.c \
   quakedef.h \
   r_local.h
host_cmd.o: host_cmd.c \
   quakedef.h
in_null.o: in_null.c \
   quakedef.h
keys.o: keys.c \
   quakedef.h
mathlib.o: mathlib.c \
   quakedef.h
menu.o: menu.c \
   quakedef.h
model.o: model.c \
   quakedef.h \
   r_local.h
net_bsd.o: net_bsd.c \
   quakedef.h \
   net_loop.h \
   net_dgrm.h \
   net_udp.h
net_dgrm.o: net_dgrm.c \
   quakedef.h \
   net_dgrm.h
net_loop.o: net_loop.c \
   quakedef.h \
   net_loop.h
net_main.o: net_main.c \
   quakedef.h \
   net_vcr.h
net_udp.o: net_udp.c \
   quakedef.h \
   net_udp.h
net_vcr.o: net_vcr.c \
   quakedef.h \
   net_vcr.h
nonintel.o: nonintel.c \
   quakedef.h \
   r_local.h \
   d_local.h
pr_cmds.o: pr_cmds.c \
   quakedef.h
pr_edict.o: pr_edict.c \
   quakedef.h
pr_exec.o: pr_exec.c \
   quakedef.h
r_aclip.o: r_aclip.c \
   quakedef.h \
   r_local.h \
   d_local.h
r_alias.o: r_alias.c \
   quakedef.h \
   r_local.h \
   d_local.h \
   anorms.h
r_bsp.o: r_bsp.c \
   quakedef.h \
   r_local.h
r_draw.o: r_draw.c \
   quakedef.h \
   r_local.h \
   d_local.h
r_edge.o: r_edge.c \
   quakedef.h \
   r_local.h
r_efrag.o: r_efrag.c \
   quakedef.h \
   r_local.h
r_light.o: r_light.c \
   quakedef.h \
   r_local.h
r_main.o: r_main.c \
   quakedef.h \
   r_local.h
r_misc.o: r_misc.c \
   quakedef.h \
   r_local.h
r_part.o: r_part.c \
   quakedef.h \
   r_local.h
r_sky.o: r_sky.c \
   quakedef.h \
   r_local.h \
   d_local.h
r_sprite.o: r_sprite.c \
   quakedef.h \
   r_local.h
r_surf.o: r_surf.c \
   quakedef.h \
   r_local.h
r_vars.o: r_vars.c \
   quakedef.h
sbar.o: sbar.c \
   quakedef.h
screen.o: screen.c \
   quakedef.h \
   r_local.h
snd_dma.o: snd_dma.c \
   quakedef.h
snd_linux.o: snd_linux.c \
   quakedef.h
snd_mem.o: snd_mem.c \
   quakedef.h
snd_mix.o: snd_mix.c \
   quakedef.h \
   sound.h
sv_main.o: sv_main.c \
   quakedef.h
sv_move.o: sv_move.c \
   quakedef.h
sv_phys.o: sv_phys.c \
   quakedef.h
sv_user.o: sv_user.c \
   quakedef.h
sys_linux.o: sys_linux.c \
   quakedef.h
vid_gdk.o: vid_gdk.c \
   quakedef.h \
   d_local.h
view.o: view.c \
   quakedef.h \
   r_local.h
wad.o: wad.c \
   quakedef.h
world.o: world.c \
   quakedef.h
zone.o: zone.c \
   quakedef.h
