
srcdir = .

prefix = /usr/local
exec_prefix = ${prefix}

bindir = ${exec_prefix}/bin
datadir = ${prefix}/share

CC = gcc
CFLAGS = -O2 -fomit-frame-pointer
LFLAGS = -s
INSTALL = install
ZC = $(srcdir)/zinc/zc

CONFIGDIR = ${datadir}/code-browser

all: zc cb


zc:
	(cd $(srcdir)/zinc && make)

cb: objs detect-file-chooser
	@echo Compiling zinc files...
	@$(ZC) \
		-I . \
		-I $(srcdir)/lib/zlib \
		-I $(srcdir)/lib/zlib/platform/linux \
		-I $(srcdir)/lib/include \
		-I $(srcdir)/lib/swift/gtk \
		-I $(srcdir)/lib/swift/common \
		$(srcdir)/src/main.zc -o cb.c
	@echo Compiling generated c file...
	@$(CC) $(CFLAGS) -w -c cb.c -o cb.o `pkg-config gtk+-2.0 --cflags`
	@echo Linking...
	@$(CC) $(LFLAGS) cb.o gtkcustom.o gtk.o gtk-resources.o io.o -o code-browser `pkg-config gtk+-2.0 --cflags --libs`

objs: gtk.o gtkcustom.o gtk-resources.o io.o config.zc

config.zc:
	@echo >config.zc public equ datadir = \"$(datadir)\"

io.o: $(srcdir)/lib/zlib/file/private/io.c
	@echo io.c
	@$(CC) $(CFLAGS) -c $(srcdir)/lib/zlib/file/private/io.c -o io.o

gtk.o: $(srcdir)/lib/include/gtk/gtk.c
	@echo gtk.c
	@$(CC) $(CFLAGS) -c $(srcdir)/lib/include/gtk/gtk.c -o gtk.o `pkg-config gtk+-2.0 --cflags`

gtkcustom.o: $(srcdir)/lib/include/gtk/gtkcustom.c
	@echo gtkcustom.c
	@$(CC) $(CFLAGS) -c $(srcdir)/lib/include/gtk/gtkcustom.c -o gtkcustom.o `pkg-config gtk+-2.0 --cflags`

gtk-resources.o: $(srcdir)/res/gtk-resources.c
	@echo gtk-resources.c
	@$(CC) $(CFLAGS) -c $(srcdir)/res/gtk-resources.c -o gtk-resources.o

detect-file-chooser:
	@echo -n "Detect gtk file chooser... "
	@if pkg-config --exists 'gtk+-2.0 >= 2.4'; \
	then echo public import \"lib/swift/gtk/toolbox/gtk-file-chooser\" > lib/swift/gtk/toolbox/file-selector-box.zc; echo Ok;\
	else echo public import \"lib/swift/gtk/toolbox/gtk-file-selection\" > lib/swift/gtk/toolbox/file-selector-box.zc; echo Use old file selector;\
	fi	
	
install:
	$(INSTALL) -s code-browser $(bindir)
	$(INSTALL) -d $(CONFIGDIR)
	$(INSTALL) $(srcdir)/config/languages.cb-config $(CONFIGDIR)
	$(INSTALL) $(srcdir)/config/preferences.cb-config $(CONFIGDIR)

uninstall:
	rm -f $(bindir)/code-browser
	rm -rf $(CONFIGDIR)

clean: 
	rm -f *.o code-browser cb.c config.zc
