
include ../Makefile.inc

ifdef APWAL_DEBUG
CFLAGS=-g -Wall -Werror `pkg-config --cflags gtk+-2.0 gthread-2.0` -DGTK_DISABLE_DEPRECATED -DAPWAL_DEBUG
LDFLAGS=`pkg-config --libs gtk+-2.0 gthread-2.0` `xml2-config --libs`
else
CFLAGS=-O2 `pkg-config --cflags gtk+-2.0 gthread-2.0`
LDFLAGS=-O2 `pkg-config --libs gtk+-2.0 gthread-2.0` `xml2-config --libs`
endif

OBJS=main.o app.o launcher.o editor.o property.o \
     gtkstuff.o sysstuff.o iconsel.o cereimg.o \
     apwalapp.o iconsel_interface.o filesel.o xmlrc.o iconlist.o log.o about.o \
     apwalpref.o splash.o gtkfnmatch.o
INCS=app.h launcher.h editor.h property.h gtkstuff.h sysstuff.h \
     iconsel.h cereimg.h apwalapp.h \
     iconsel_private.h filesel.h xmlrc.h common.h iconlist.h log.h about.h \
     apwalpref.h splash.h gtkfnmatch.h

.SUFFIXES: .png .c


ifdef APWAL_DEBUG
all: checktraceformat apwal tags
apwal: $(OBJS)
	gcc -o $@ $^ $(LDFLAGS)
else
all: apwal
apwal: $(OBJS)
	gcc -o $@ $^ $(LDFLAGS)
	strip $@
endif

install: all
	cp apwal /usr/local/bin/
	ln -sf /usr/local/bin/apwal /usr/local/bin/apwal-editor

.c.o: $(INCS)
	gcc -c $< -o $*.o $(CFLAGS)

xmlrc.o: xmlrc.c $(INCS)
	gcc -c $< -o $*.o $(CFLAGS) `xml2-config --cflags`
about.o: about.c $(INCS) ../Makefile.inc
	gcc -c $< -o $*.o $(CFLAGS) -DAPWAL_VERSION=\"$(VERS)\"

gtkstuff.o: pixbufinline.inc
xmlrc.o: xmlrcinline.inc

$(OBJS): $(INCS)

xmlrcinline.inc: ../example/apwalrc.xml
	@echo "generating $@..."
	@if [ -f $@ ]; then rm -f $@; fi;
	@echo > $@
	@echo -n "#define XMLRC_DEFAULT \"" >> $@
	@cat ../example/apwalrc.xml | awk ' \
	  BEGIN { ORS="\\n"; } \
	  { gsub("\"","\\\""); \
	    print; \
	  }'>> $@
	@echo "\"" >> $@
	@echo >> $@


pixbufinline.inc: ../pixmaps/*.png
	@echo "generating $@..."
	@list2build=$$( \
	   for f in ../pixmaps/*.png;do echo "`basename $$f .png` $$f ";done); \
	if [ -f $@ ]; then rm -f $@; fi; \
	gdk-pixbuf-csource --raw --build-list $$list2build > $@; \
	echo >> $@ ; echo "pixbufinline_t pixbufinline[] =" >> $@; \
	echo "{" >> $@; \
	for f in ../pixmaps/*.png;do \
	  echo "  {" >> $@; \
	  echo "    \"`basename $$f .png`\"," >> $@; \
	  echo "    sizeof(`basename $$f .png`)," >> $@; \
	  echo "    (guint8 *) & `basename $$f .png`" >> $@; \
	  echo "  }," >> $@; \
	done; \
	echo "};" >> $@; \
	echo -n "gint pixbufinline_count = (sizeof(pixbufinline) / " >> $@; \
	echo                               "sizeof(pixbufinline_t));" >> $@; \
	echo "" >> $@;

tags: $(INCS) $(OBJS:.o=.c)
	ctags -R

checktraceformat:
	@(fmterr=`find . -name "*.c" | xargs grep -nH '\(TRACE\|WARN\|ERR\)[ \t]*([ \t]*"[^%]*"'`; \
	if [ ! -z "$$fmterr" ]; then \
	echo "*** gcc on OpenBSD does not allow marcos with args... ending by a ','." ; \
	echo '*** To avoid this problem with the log macros, TRACE("") has to' ; \
	echo '*** be replaced by TRACE("%s", "") for example. Format problem in:' ; \
	echo "$$fmterr" ; \
	exit 1; fi; )
	

clean:
	-rm -f $(OBJS) apwal pixbufinline.inc xmlrcinline.inc tags

