LIBS = -lc
LIB = libbogl.a

CFLAGS = -O2 -D_GNU_SOURCE

-include ../../config

CFLAGS += -I../dbootstrap
CFLAGS += -DARCH=$(architecture) -DARCHNAME='"$(architecture)"' 
CFLAGS += -DKVER='"$(KVER)"' 
CFLAGS += -DLINGUA='"$(LINGUA)"' -DINCLINGUA='"messages/lang_$(LINGUA).h"'
CFLAGS += -Wall -g

xml_langs=$(shell fgrep generated_languages= ../dbootstrap/langs/Makefile  | sed -e 's/generated_languages=//')
xml_files=$(addprefix ../dbootstrap/langs/,$(xml_langs))

LIBOBJECTS = $(LIBBOGLOBJECTS) $(LIBBOMLOBJECTS) $(LIBBOWLOBJECTS)	\
	$(LIBRSRCOBJECTS)
LIBBOGLOBJECTS = bogl.o bogl-font.o
LIBBOMLOBJECTS = arrow.o boml.o
LIBBOWLOBJECTS = bowl.o symbol.o
LIBRSRCOBJECTS = helvB10.o helvB12.o helvR10.o timBI18.o tux75.o

SOURCES_DEP = arrow.c bdftobogl.c bogl-cfb.c bogl-cfb.h bogl-cfb8.c	\
bogl-cfb8.h bogl-font.c bogl-font.h bogl-pcfb.c bogl-pcfb.h		\
bogl-tcfb.c bogl-tcfb.h bogl-test.c bogl.c bogl.h boglP.h boml.c	\
boml.h bowl-boxes.c bowl.c bowl.h pngtobogl.c

ifeq (,)
	CFLAGS += -DBOGL_CFB_FB=1
	LIBBOGLOBJECTS += bogl-cfb.o bogl-pcfb.o bogl-tcfb.o
endif

ifeq ($(architecture), i386)
	CFLAGS += -DBOGL_VGA16_FB=1
	LIBBOGLOBJECTS += bogl-vga16.o
	SOURCES_DEP += bogl-vga16.c bogl-vga16.h
endif

OBJECTS = $(LIBOBJECTS) bowl-boxes.o

GENERATED = helvB10.c helvB12.c helvR10.c timBI18.c tux75.c

all:    depend $(LIB) bterm bdftobogl libutf8_plug.so unifont-reduced.bgf

unifont-reduced.bgf: bdftobogl unifont-reduced.bdf
	./bdftobogl -b unifont-reduced.bdf > unifont-reduced.bgf

unifont-reduced.bdf: ../bf-utf/unifont.bdf ../all.utf libutf8_plug.so reduce-font
	LD_PRELOAD=./libutf8_plug.so LC_CTYPE=C.UTF-8 ./reduce-font $< < ../all.utf > $@

../all.utf: ../po.utf ../rn.utf $(xml_files)
	cat $^ > $@

../po.utf:
	$(MAKE) -C ../dbootstrap/po all-po-utf
	cat ../dbootstrap/po/utf/*.po > $@

../rn.utf:
	$(MAKE) RN_TARGET_DIR=. -C ../../scripts/rootdisk/messages install-utf
	cat ../../scripts/rootdisk/messages/release_notes.* > $@

$(LIB): $(OBJECTS)
	rm -f $(LIB)
	ar rcs $(LIB) $(OBJECTS)

bogl-test: $(LIB) bogl-test.c tux75.o
	$(CC) $(CFLAGS) -o bogl-test bogl-test.c tux75.o $(LIB)

bowl-boxes: $(LIB)
	$(CC) -DSTANDALONE_TEST $(CFLAGS) bowl-boxes.c $(LIBOBJECTS) -o bowl-boxes

bterm: $(LIB) bterm.o bogl-term.o bogl-bgf.o
	$(CC) $+ $(LIB) -o bterm

bdftobogl: $(LIBBOGLOBJECTS)
%.c: %.bdf bdftobogl
	./bdftobogl $< > $@

pngtobogl: pngtobogl.o
	$(CC) $(CFLAGS) -o pngtobogl pngtobogl.o -lgd -lpng -lm
%.c: %.png pngtobogl
	./pngtobogl $< > $@

libutf8_plug.so:
	$(MAKE) -C ../bf-utf/libutf8
	cp -f ../bf-utf/libutf8/libutf8_plug.so $@

depend: $(SOURCES_DEP)
	$(CPP) $(CFLAGS) -M $(SOURCES_DEP) > .depend

clean: 
	rm -rf reduce-font libutf8_plug.so bterm bdftobogl pngtobogl *.o $(GENERATED) *-test lang.h tmp.*.c bowl-boxes $(LIB) unifont-reduced.bgf unifont-reduced.bdf

distclean: clean
	rm -f $(LIB) .depend *~ .nfs*

force:

ifeq (.depend,$(wildcard .depend))
include .depend
endif

