# Build utils
MAKE = make
CC = gcc

# Directories
PREFIX=/usr
BINDIR=$(PREFIX)/bin
SYSCONFDIR=/etc
SHAREDIR=$(PREFIX)/share
LOCALEDIR=$(SHAREDIR)/locale

# External program/support programs
SUDO=$(BINDIR)/sudo
PARAMANO_SET=$(BINDIR)/paramano-set

# Misc
PARAMANO=$(BINDIR)/paramano
PARAMANO_CONF=$(SYSCONFDIR)/paramano.conf
ROOT_UID=0


ifdef DEBUG
 EXTRA_CFLAGS+=-DDEBUG
endif

EXTRA_CFLAGS+=	-DPREFIX=\"$(PREFIX)\" \
				-DBINDIR=\"$(BINDIR)\" \
				-DSUDO=\"$(SUDO)\" \
				-DPARAMANO_SET=\"$(PARAMANO_SET)\" \
				-DPARAMANO_CONF=\"$(PARAMANO_CONF)\" \
				-DLOCALEDIR=\"$(LOCALEDIR)\" \
				-DSHAREDIR=\"$(SHAREDIR)\" \
				-DROOT_UID=$(ROOT_UID) \
				-D_GNU_SOURCE


DEPS = 	bat_tray.h \
		common.h \
		config_file.h \
		defaults.h \
		getcore.h \
		getfreq.h \
		getgov.h \
		paramano.h \
		reload.h \
		tray.h \
		paramano_set_interface.h

CFLAGS	=	-I/usr/include/gtk-2.0 \
			-I/usr/lib/gtk-2.0/include \
			-I/usr/include/pango-1.0 \
			-I/usr/include/cairo \
			-I/usr/include/gdk-pixbuf-2.0 \
			-I/usr/include/atk-1.0 \
			-I/usr/include/glib-2.0 \
			-I/usr/lib/glib-2.0/include \
			-Wall \
			-Wclobbered \
			-Wempty-body \
			-Wignored-qualifiers \
			-Wmissing-field-initializers \
			-Wmissing-parameter-type \
			-Woverride-init \
			-Wsign-compare \
			-Wtype-limits \
			-Wuninitialized \
			-Wunused-but-set-parameter \
			-Wdouble-promotion \
			-Werror \
			-D_=gettext

LDFLAGS	=	-lgtk-3 \
			-lgobject-2.0 \
			-lglib-2.0
########################################################################
# Make entire suite
all: paramano paramano-set lang paramano-extra
########################################################################


########################################################################
# Make main paramano system tray program
paramano:	bat_tray.o \
			common.o \
			config_file.o \
			defaults.o \
			getcore.o \
			getfreq.o \
			getgov.o \
			reload.o \
			paramano.o \
			tray.o \
			paramano_set_interface.o
	$(CC) -o $@ $? $(LDFLAGS)
########################################################################


########################################################################
# Make paramano-set utility
paramano-set: \
			paramano_set.o \
			common.o \
			getcore.o \
			getfreq.o \
			getgov.o

	$(CC) -o $@ $? $(LDFLAGS)
########################################################################


########################################################################
%.o: %.c $(DEPS)
	$(CC) -c -o $@ $< $(CFLAGS) $(EXTRA_CFLAGS)
########################################################################


########################################################################
# Make language file(s)
lang:
	msgfmt -c -o lc/fr.mo lc/fr.po
########################################################################


########################################################################
# Prepare template config file
paramano-extra:
	for file in paramano.conf paramano.desktop ; do \
		sed	-e 's:SHAREDIR:$(SHAREDIR):g' \
			-e 's:PARAMANO_CONF:$(PARAMANO_CONF):g'  \
			-e 's:PARAMANO:$(PARAMANO):g' \
			$$file.src > $$file ; \
	done
########################################################################


########################################################################
# Strip all symbols from binaries
strip:
	strip -s paramano paramano-set
########################################################################


########################################################################
# Remove generated files
clean:
	rm -f paramano paramano-set *.o lc/*.mo paramano.conf paramano.desktop
########################################################################


########################################################################
# Install entire suite
install:
	mkdir -p $(DESTDIR)/$(SHAREDIR)/paramano/
	cp -r themes $(DESTDIR)/$(SHAREDIR)/paramano/

	install -Dm 644 lc/fr.mo $(DESTDIR)/$(LOCALEDIR)/fr/LC_MESSAGES/paramano.mo

	install -Dm 644 paramano.conf $(DESTDIR)/$(PARAMANO_CONF)
	install -Dm 644 paramano.desktop $(DESTDIR)/etc/xdg/autostart/paramano.desktop

	install -Dm 755 paramano $(DESTDIR)/$(PARAMANO)
	install -Dm 755 paramano-set $(DESTDIR)/$(PARAMANO_SET)

	# These provide some compatability with trayfreq
	ln -s paramano $$(dirname $(DESTDIR)/$(PARAMANO))/trayfreq
	ln -s paramano-set $$(dirname $(DESTDIR)/$(PARAMANO))/trayfreq-set
########################################################################