
include ../../config.mk

ifneq ($(DISABLE_LIBXML2),)
CFLAGS_LIBXML2 = -DDISABLE_LIBXML2=
else
CFLAGS_LIBXML2 = -I$(LIBXML2_INC_DIR)
endif

ifneq ($(ENABLE_GDB_SYMBOLS),)
override CFLAGS += -g
endif

ifneq ($(ENABLE_OPTIMIZATION),)
override CFLAGS += -O2
endif

ifneq ($(ENABLE_TRACING),)
override CFLAGS += -DENABLE_TRACING=
endif

ifneq ($(THROW_SIGFAULT_ON_ERROR),)
override CFLAGS += -DTHROW_SIGFAULT_ON_ERROR=
endif

ifeq ($(DISABLE_BLOCKBUFFER),)
BLOCKBUF_DEP_H = blockbuf.h
BLOCKBUF_DEP_O = blockbuf.o
else
override CFLAGS += -DDISABLE_BLOCKBUFFER=
endif

ifeq ($(DISABLE_COMMAND_HISTORY),)
CMD_HST_DEP_H = cmd_hst.h
CMD_HST_DEP_O = cmd_hst.o
else
override CFLAGS += -DDISABLE_COMMAND_HISTORY
endif

ifeq ($(DISABLE_OUTPUT_HISTORY),)
OUTPUT_HST_DEP_H = history.h
OUTPUT_HST_DEP_O = history.o
else
override CFLAGS += -DDISABLE_OUTPUT_HISTORY
endif


.PHONY : clean

libfizmo.a: locales.o fizmo.o zpu.o stack.o streams.o i18n.o routine.o variable.o object.o property.o text.o savegame.o iff.o misc.o mt19937a.o math.o output.o sound.o tracelog.o wordwrap.o table.o z_ucs.o config.o z_ucs_i.o undo.o filelist.o babel.o $(BLOCKBUF_DEP_O) $(CMD_HST_DEP_O) $(OUTPUT_HST_DEP_O)
	$(AR) rcs libfizmo.a locales.o fizmo.o zpu.o stack.o streams.o i18n.o routine.o variable.o object.o property.o text.o savegame.o iff.o misc.o mt19937a.o math.o output.o sound.o tracelog.o wordwrap.o table.o z_ucs.o config.o z_ucs_i.o undo.o filelist.o babel.o $(BLOCKBUF_DEP_O) $(CMD_HST_DEP_O) $(OUTPUT_HST_DEP_O)

fizmo.o: tracelog.h fizmo.h zpu.h text.h math.h stack.h i18n.h misc.h streams.h config.h savegame.h output.h z_ucs.h splint.h fizmo.c $(BLOCKBUF_DEP_H) $(OUTPUT_HST_DEP_H)
	$(CC) $(CFLAGS) -c fizmo.c

fizmo.h: ../c/screen_interface.h
	touch fizmo.h

locales.o: i18n.h locales.c locales.h
	$(CC) $(CFLAGS) -c locales.c

locales.c: prepi18n
	./prepi18n

locales.h: prepi18n
	./prepi18n

prepi18n.o: i18n.h z_ucs.h prepi18n.c
	$(CC) $(CFLAGS) -c prepi18n.c

prepi18n: z_ucs.o prepi18n.o
	$(CC) $(CFLAGS) z_ucs.o prepi18n.o -o prepi18n

zpu.o: zpu.h tracelog.h fizmo.h savegame.h misc.h routine.h variable.h property.h object.h math.h text.h i18n.h streams.h output.h sound.h stack.h table.h undo.h splint.h zpu.c
	$(CC) $(CFLAGS) -c zpu.c

stack.o: stack.h tracelog.h config.h i18n.h routine.h splint.h stack.c
	$(CC) $(CFLAGS) -c stack.c

streams.o: streams.h tracelog.h fizmo.h ../c/screen_interface.h i18n.h wordwrap.h text.h zpu.h output.h z_ucs.h splint.h blockbuf.h history.h types.h streams.c $(BLOCKBUF_DEP_H) $(OUTPUT_HST_DEP_H)
	$(CC) $(CFLAGS) -c streams.c

i18n.o: i18n.h tracelog.h fizmo.h config.h locales.h streams.h misc.h types.h z_ucs.h zpu.h splint.h i18n.c
	$(CC) $(CFLAGS) -c i18n.c

routine.o: routine.h tracelog.h stack.h variable.h zpu.h i18n.h fizmo.h splint.h routine.c
	$(CC) $(CFLAGS) -c routine.c

variable.o: tracelog.h fizmo.h stack.h zpu.h i18n.h config.h splint.h variable.c
	$(CC) $(CFLAGS) -c variable.c

object.o: object.h tracelog.h fizmo.h variable.h zpu.h i18n.h splint.h object.c
	$(CC) $(CFLAGS) -c object.c

property.o: tracelog.h fizmo.h variable.h object.h zpu.h i18n.h splint.h property.c
	$(CC) $(CFLAGS) -c property.c

text.o: text.h tracelog.h fizmo.h routine.h object.h zpu.h i18n.h variable.h misc.h streams.h types.h history.h fizmo.h math.h stack.h config.h output.h undo.h splint.h $(CMD_HST_DEP_H) text.c
	$(CC) $(CFLAGS) -c text.c

savegame.o: savegame.h tracelog.h streams.h fizmo.h iff.h stack.h zpu.h i18n.h variable.h text.h z_ucs_i.h routine.h splint.h savegame.c
	$(CC) $(CFLAGS) -c savegame.c

iff.o: iff.h tracelog.h i18n.h splint.h types.h iff.c
	$(CC) $(CFLAGS) -c iff.c

misc.o: misc.h tracelog.h fizmo.h streams.h stack.h zpu.h i18n.h routine.h splint.h misc.c
	$(CC) $(CFLAGS) -c misc.c

mt19937a.o: mt19937a.h mt19937a.c
	$(CC) $(CFLAGS) -c mt19937a.c

math.o: math.h tracelog.h mt19937a.h variable.h zpu.h i18n.h splint.h math.c
	$(CC) $(CFLAGS) -c math.c

streams.h: config.h
	touch streams.h

output.o: output.h tracelog.h types.h fizmo.h i18n.h zpu.h variable.h splint.h $(BLOCKBUF_DEP_H) $(OUTPUT_HST_DEP_H) output.c
	$(CC) $(CFLAGS) -c output.c

sound.o: fizmo.h i18n.h tracelog.h zpu.h splint.h sound.c
	$(CC) $(CFLAGS) -c sound.c

tracelog.o: tracelog.h config.h i18n.h types.h z_ucs.h splint.h tracelog.c
	$(CC) $(CFLAGS) -c tracelog.c

wordwrap.o: wordwrap.h tracelog.h types.h i18n.h z_ucs.h splint.h wordwrap.c
	$(CC) $(CFLAGS) -c wordwrap.c

history.o: history.h tracelog.h config.h i18n.h z_ucs.h types.h ../c/screen_interface.h fizmo.h splint.h history.c
	$(CC) $(CFLAGS) -c history.c

table.o: table.h tracelog.h zpu.h variable.h i18n.h splint.h table.c
	$(CC) $(CFLAGS) -c table.c

cmd_hst.o: cmd_hst.h tracelog.h types.h i18n.h splint.h cmd_hst.c
	$(CC) $(CFLAGS) -c cmd_hst.c

blockbuf.o: blockbuf.h types.h tracelog.h i18n.h z_ucs.h splint.h blockbuf.c
	$(CC) $(CFLAGS) -c blockbuf.c

z_ucs.o: z_ucs.h config.h splint.h z_ucs.c
	$(CC) $(CFLAGS) -c z_ucs.c

config.o: config.h types.h splint.h config.c
	$(CC) $(CFLAGS) -c config.c

z_ucs_i.o: z_ucs_i.h config.h z_ucs.h i18n.h splint.h z_ucs_i.c
	$(CC) $(CFLAGS) -c z_ucs_i.c

undo.o: undo.h tracelog.h types.h zpu.h variable.h fizmo.h stack.h splint.h undo.c
	$(CC) $(CFLAGS) -c undo.c

filelist.o: filelist.h fizmo.h tracelog.h babel.h iff.h types.h filelist.c
	$(CC) $(CFLAGS) $(CFLAGS_LIBXML2) -c filelist.c

babel.o: babel.h fizmo.h tracelog.h babel.c
	$(CC) $(CFLAGS) $(CFLAGS_LIBXML2) -c babel.c

clean:
	rm -f *.o libfizmo.a locales.h locales.c prepi18n

