
TARGET := loki_update
VERSION := 1.0.14
IMAGE   := /loki/patch-tools/setup-image
UPDATES := /loki/updates/loki_update
UI_LIBDIR := .
DATADIR := .
LOCALEDIR := $(DATADIR)/locale

os := $(shell uname -s)
arch := $(shell sh print_arch)
libc := $(shell sh print_libc)

SETUPDB = ../loki_setupdb
CFLAGS ?= -g -O2 -Wall
ifeq ($(arch),alpha)
CFLAGS += -mcpu=ev4 -Wa,-mall
endif
ifdef MD5SUM
CFLAGS += -DMD5SUM=\"$(MD5SUM)\"
endif
CFLAGS += -I$(SETUPDB) -DVERSION=\"$(VERSION)\" -DDYNAMIC_UI
CFLAGS += -DUI_LIBDIR=\"$(UI_LIBDIR)\" -DDATADIR=\"$(DATADIR)\" -DLOCALEDIR=\"$(LOCALEDIR)\"
CFLAGS += $(shell pkgconf gtk+ --cflags) $(shell pkgconf libglade --cflags)
CFLAGS += $(shell xml2-config --cflags)
LFLAGS = -rdynamic
LFLAGS += -Wl,-Bstatic
LFLAGS += -L$(SETUPDB)/$(arch) -lsetupdb
LFLAGS += -Wl,-Bdynamic
LFLAGS += $(shell xml2-config --libs)
LFLAGS += $(shell pkgconf libcurl --libs) -lm -ldl
LFLAGS += -lz
LFLAGS += $(LDFLAGS)

TTY_LFLAGS = $(LDFLAGS)

GTK_SH_LFLAGS = -Wl,-Bstatic
GTK_SH_LFLAGS += -lglade
GTK_SH_LFLAGS += -Wl,-Bdynamic
GTK_SH_LFLAGS += $(shell pkgconf gtk+ --libs)
GTK_SH_LFLAGS += $(LDFLAGS)

CORE_OBJS = loki_update.o prefpath.o url_paths.o meta_url.o \
            load_products.o load_patchset.o patchset.o urlset.o \
            update.o gpg_verify.o get_url.o \
            mkdirhier.o text_parse.o log_output.o safe_malloc.o

OBJS = $(CORE_OBJS)

CORE_SRCS = $(CORE_OBJS:.o=.c)

all: $(TARGET) tty_ui.so gtk_sh_ui.so

gtk_sh_ui.o: gtk_ui.c
	$(CC) -c -o $@ $(CFLAGS) -fPIC $^

gtk_sh_ui.so: gtk_sh_ui.o
	$(CC) -o $@ -shared $^ $(GTK_SH_LFLAGS)

tty_ui.o: tty_ui.c
	$(CC) -c -o $@ $(CFLAGS) -fPIC $^

tty_ui.so: tty_ui.o
	$(CC) -o $@ -shared $^ $(TTY_LFLAGS)

$(TARGET): $(OBJS)
	$(CC) -o $@ $(OBJS) $(LFLAGS)

distclean: clean
	rm -f $(TARGET) *.so

clean:
	rm -f *.o *.bak core

dist:
	@dist=$(TARGET)-$(VERSION); \
	mkdir ../$$dist; \
	cp -r . ../$$dist; \
	(cd ../$$dist; make distclean; rm -r `find . -name CVS -print`); \
	(cd ..; tar zcvf $$dist.tar.gz $$dist); \
	rm -rf ../$$dist

install-bin: all
	@if [ -d $(IMAGE)/$(TARGET)/bin/$(arch)/$(libc)/ ]; then \
		cp -v $(TARGET) *.so $(IMAGE)/$(TARGET)/bin/$(arch)/$(libc)/; \
		strip $(IMAGE)/$(TARGET)/bin/$(arch)/$(libc)/*; \
	else \
		echo No directory to copy the binary files to.; \
	fi
	@if [ -d $(UPDATES) ]; then \
		rm -rf $(UPDATES)/bin-$(arch)-$(VERSION); \
		mkdir $(UPDATES)/bin-$(arch)-$(VERSION); \
		cp -v $(TARGET) *.so $(UPDATES)/bin-$(arch)-$(VERSION)/; \
		strip $(UPDATES)/bin-$(arch)-$(VERSION)/*; \
	fi
	@echo "Don't forget to update the version in setup.xml to $(VERSION)"

install-data:
	cp -av README icon.xpm $(IMAGE)/$(TARGET)/
	tar zcvf $(IMAGE)/$(TARGET)/data.tar.gz loki_update.glade pixmaps/*.xpm
	tar zcvf $(IMAGE)/$(TARGET)/detect.tar.gz detect/*.txt detect/*.sh detect/*.md5
	for file in `find locale -name $(TARGET).mo -print`; \
        do  path="$(IMAGE)/$(TARGET)/`dirname $$file | sed 's,image/setup.data/,,'`"; \
            mkdirhier $$path; \
            cp -v $$file $$path; \
        done;
	if [ -d $(UPDATES) ]; then \
	        rm -rf $(UPDATES)/data-$(VERSION); \
                mkdir $(UPDATES)/data-$(VERSION); \
	        cp -av README icon.xpm $(UPDATES)/data-$(VERSION); \
	        tar cf - loki_update.glade pixmaps/*.xpm | (cd $(UPDATES)/data-$(VERSION); tar xvf -); \
	        tar cf - detect/*.txt detect/*.sh detect/*.md5 | (cd $(UPDATES)/data-$(VERSION); tar xvf -); \
	        for file in `find locale -name $(TARGET).mo -print`; \
                do  path="$(UPDATES)/data-$(VERSION)/`dirname $$file | sed 's,image/setup.data/,,'`"; \
                    mkdirhier $$path; \
                    cp -v $$file $$path; \
                done; \
	fi

# i18n rules

# This is the list of supported locales
LOCALES = fr

po/$(TARGET).po: $(CORE_SRCS) loki_update.glade
	libglade-xgettext loki_update.glade > po/$(TARGET).po
	xgettext -p po -j -d $(TARGET) --keyword=_ $(CORE_SRCS)

update-po: po/$(TARGET).po
	for lang in $(LOCALES); do \
		msgmerge po/$$lang/$(TARGET).po po/$(TARGET).po > po/$$lang/tmp; \
		mv po/$$lang/tmp po/$$lang/$(TARGET).po; \
	done

gettext: po/$(TARGET).po
	for lang in $(LOCALES); do \
		msgfmt -f po/$$lang/$(TARGET).po -o locale/$$lang/LC_MESSAGES/$(TARGET).mo; \
	done
