####################################################################
########        Merlin Makefile                             ########
####################################################################


####### Flags

VERSION = 0.8.1-2

# do we want a mbmerlin with binary data files?
USE_BINARY = yes

# Where characters are installed
SAMPLES_INSTALL_DIR =  /usr/share/mbmerlin

# Where the binary is installed
INSTALL_DIR =   /usr/bin

# How to compile
NATIVE      =   yes
BACKUP_NAME = 	mbmerlin-$(VERSION).tar.gz
KEYMAPS     =   keymap/swedish-kbd.map keymap/english-kbd.map

# crosscompiler stuff
ifeq ($(NATIVE),yes)
INCFLAGS    =   -I.
PACKAGE_CFLAGS      =   -Os -Wall -DDEFAULT_HOME=\"$(SAMPLES_INSTALL_DIR)\" -DUSE_ENGLISH `pkg-config --cflags xft libstartup-notification-1.0` -DUSE_LIBSN 
PACKAGE_LDFLAGS     =  	-lm -lz -L/usr/X11R6/lib -lX11 `pkg-config --libs xft libstartup-notification-1.0`
CC          =   gcc
STRIP       =   strip
else
INCFLAGS    =   -I.
PACKAGE_CFLAGS      =   -Os -Wall -DDEFAULT_HOME=\"$(SAMPLES_INSTALL_DIR)\" -DUSE_ENGLISH `pkg-config --cflags xft libstartup-notification-1.0` -DUSE_LIBSN 
PACKAGE_LDFLAGS     =  	-L/skiff/local/arm-linux/lib -L/skiff/local/arm-linux/lib/X11 -lm -lz -lX11 `pkg-config --libs xft libstartup-notification-1.0` -lXft -lXrender -lXext 
 
CC          =   arm-linux-gcc
STRIP       =   arm-linux-strip
endif

ifeq ($(USE_BINARY),yes)
PACKAGE_CFLAGS += -DUSE_BINARY
STROKE_DATA = *.bin
else
STROKE_DATA = stroke-data.gz
endif

####### Files

OBJECTS     =   filter.o pattern.o preprocessor.o merlin.o elasticWizard.o \
		event.o graphics.o mapping.o
TARGET      = 	mbmerlin

####### Default rules

.SUFFIXES: 		.c

.c.o:
			$(CC) -c $(CFLAGS) $(PACKAGE_CFLAGS) $(INCFLAGS) $<


####### Build rules

all: 			$(TARGET)

$(TARGET):		$(OBJECTS) 
			$(CC) $(OBJECTS) -o $(TARGET) $(LDFLAGS) $(PACKAGE_LDFLAGS)

pattern.o:		def.h pattern.h point.h pattern.c
			$(CC) -c $(CFLAGS) $(PACKAGE_CFLAGS) $(INCFLAGS) pattern.c

mapping.o:		mapping.c $(KEYMAPS)
			$(CC) -c $(CFLAGS) $(PACKAGE_CFLAGS) $(INCFLAGS) mapping.c

elasticWizard.o: 	def.h pattern.h wizard.h point.h elasticWizard.c
			$(CC) -c $(CFLAGS) $(PACKAGE_CFLAGS) $(INCFLAGS) elasticWizard.c

dist:
			make distclean;\
			cd ..;\
			tar cvzf $(BACKUP_NAME) mbmerlin ; \
			mv $(BACKUP_NAME) mbmerlin/

clean:	
			rm -f *.o *~ core nil* $(TARGET) *.ipk

distclean:
			rm -f *.o *~ core nil* $(TARGET) $(TARGET)*.tar.gz *.ipk

compress:
			rm -fr samples/stroke-data samples/stroke-data.gz
			for i in samples/*.dat ; \
                        do \
                        echo $$i >> samples/stroke-data ; \
                        cat $$i >> samples/stroke-data; \
                        echo "8<----------" >> samples/stroke-data; \
                        done 
	                echo "__END__" >> samples/stroke-data;
			gzip -9 samples/stroke-data;

install-program:
install:		compress
			$(STRIP) $(TARGET)
			install -d $(DESTDIR)/$(SAMPLES_INSTALL_DIR)
			install -m 644 samples/$(STROKE_DATA) $(DESTDIR)/$(SAMPLES_INSTALL_DIR)
			install -d $(DESTDIR)/usr/share/applications/inputmethods
			install mbmerlin.desktop $(DESTDIR)/usr/share/applications/inputmethods
			install -d $(DESTDIR)/usr/share/pixmaps
			install mbmerlin.png $(DESTDIR)/usr/share/pixmaps
			install mbmerlin $(DESTDIR)/$(INSTALL_DIR)

ipkg:			
			$(STRIP) $(TARGET)
			mkdir -p `pwd`/ipkg-build
			mkdir -p `pwd`/ipkg-build/CONTROL
			mkdir -p `pwd`/ipkg-build/usr/bin
			mkdir -p `pwd`/ipkg-build/usr/share/mbmerlin
			mkdir -p `pwd`/ipkg-build/usr/share/applications/inputmethods
			mkdir -p `pwd`/ipkg-build/usr/share/pixmaps
			install mbmerlin.desktop `pwd`/ipkg-build/usr/share/applications/inputmethods
			install mbmerlin.png     `pwd`/ipkg-build/usr/share/pixmaps
			install -m 644 samples/$(STROKE_DATA) `pwd`/ipkg-build/usr/share/mbmerlin/
			install mbmerlin `pwd`/ipkg-build/usr/bin
			sed -e s/VERSION/$(VERSION)/ control > `pwd`/ipkg-build/CONTROL/control
			ipkg-build -o root -g root ./ipkg-build ./
			rm -fr ./ipkg-build

