# Makefile for rhn-applet
#
# $Id: Makefile,v 1.32 2004/01/09 15:54:29 veillard Exp $

PREFIX		?=
MANPATH		?= /usr/man/man

FILES		= applet needed-packages rhn_applet rhn_utils \
		  rhn_applet_rpc rhn_applet_rpm rhn_applet_model \
		  rhn_applet_dialogs rhn_applet_animation \
		  rhn_sources rhn_applet_yum rhn_applet_version \
		  rhn_applet_protocols rhn_applet_apt
PYFILES 	= $(addsuffix .py, $(FILES))
PYCFILES	= $(addsuffix .pyc, $(FILES))
PYLIBFILES      = eggtrayiconmodule.so
PIXMAPS		= applet-busy.png applet-critical.png \
	          applet-critical-blank.png applet-okay.png \
		  applet-error.png applet-disconnect.png
GLADES		= rhn_applet.glade applet-druid-watermark.png
CONFIG_FILE	= rhn-applet.config
GUI_PROGRAM	= applet.py
CLI_PROGRAM	= needed-packages.py
GNORBA		= rhn-applet.gnorba
DESKTOP		= rhn-applet.desktop

OBJECTS		= $(PYLIBFILES) $(PYFILES) $(PYCFILES)

# Dirs we need to walk into
SUBDIRS		= po

# Compilation stuff
CC		= gcc
PYTHON_VERSION	= $(shell echo `python -c "import sys; print sys.version[0:3]"`)
PYTHON_INCLUDE	= -I/usr/include/python$(PYTHON_VERSION) \
                  -I/usr/include/pygtk-2.0 \
	          $(shell pkg-config gtk+-2.0 --cflags) \
		  $(shell pkg-config libgnomeui-2.0 --cflags)
LIBS            = $(shell pkg-config gtk+-2.0 --libs) \
                  $(shell pkg-config libgnomeui-2.0 --libs)
CFLAGS		= -Wall -g -fomit-frame-pointer $(PYTHON_INCLUDE)
PYCHECKER	= /usr/bin/pychecker

# Directories for installation
RHNSHARE_DIR    = $(PREFIX)/usr/share/rhn
BIN_DIR		= $(PREFIX)/usr/bin
PIXMAP_DIR	= $(PREFIX)/usr/share/pixmaps
CONFIG_DIR	= $(PREFIX)/etc/sysconfig/rhn
DESKTOP_DIR 	= $(PREFIX)/usr/share/applications
GNORBA_DIR 	= $(PREFIX)/etc/CORBA/servers
# all dirs
DIRS		= $(BIN_DIR) $(PIXMAP_DIR)

# INSTALL scripts 
INSTALL         = install --verbose 
INSTALL_BIN     = $(INSTALL) -m 755 
INSTALL_DIR     = $(INSTALL) -m 755 -d 
INSTALL_DATA    = $(INSTALL) -m 644 
INSTALL_KEYRING	= $(INSTALL) -m 600 

# Handy defines 
VERSION         = $(shell echo `awk '{ print $$1 }' version`)

# For subdirs, required exports 
export PREFIX 
export MANPATH

all:: $(OBJECTS)
	$(descend-subdirs)
	intltool-merge po rhn-applet.desktop.in rhn-applet.desktop -d -u

# default compile rule:
%.pyc: %.py
	python -c "import py_compile; py_compile.compile('$<')"

$(DIRS):
	@$(INSTALL_DIR) $@

rhn_applet_version.py: version
	echo '# This file is a portion of the Red Hat Network Panel Applet'>$@
	echo '# autogenerated' >> $@
	echo "version='"`awk '{ print $$1 }' $<`"'" >> $@
	echo "release='"`awk '{ print $$2 }' $<`"'" >> $@

install:: all $(DIRS)
	$(INSTALL_DIR) $(RHNSHARE_DIR)/rhn_applet
	$(INSTALL_DIR) $(CONFIG_DIR)
	$(INSTALL_DIR) $(DESKTOP_DIR)
	$(INSTALL_BIN) $(PYFILES) $(PYCFILES) $(PYLIBFILES) \
	    $(RHNSHARE_DIR)/rhn_applet

	ln -sf $(subst $(PREFIX)/usr,..,$(RHNSHARE_DIR))/rhn_applet/$(GUI_PROGRAM) $(BIN_DIR)/yum-applet-gui
	ln -sf $(subst $(PREFIX)/usr,..,$(RHNSHARE_DIR))/rhn_applet/$(CLI_PROGRAM) $(BIN_DIR)/yum-applet-tui

	$(INSTALL_DATA) $(PIXMAPS) $(PIXMAP_DIR)
	$(INSTALL_DATA) $(GLADES) $(RHNSHARE_DIR)/rhn_applet
	$(INSTALL_DATA) $(CONFIG_FILE) $(CONFIG_DIR)/rhn-applet
	$(INSTALL_DATA) $(DESKTOP) $(DESKTOP_DIR)

	for py in *.py ; do \
		sed -e "s,@VERSION@,$(VERSION),g" $${py} > $(RHNSHARE_DIR)/rhn_applet/`basename $${py}` ; \
	done

	$(descend-subdirs)

%.o : %.c
	$(CC) -fPIC $(CFLAGS) -c -o $@ $<
%.so : %.o
	$(CC) -shared $(LIBS) -Wl,-soname,$@ $< -o $@

tardist: clean
	rm -Rfv /tmp/rhn-applet-$(VERSION)
	cp -fapRdv . /tmp/rhn-applet-$(VERSION)
	tar zcfv rhn-applet-$(VERSION).tar.gz --exclude CVS -C /tmp rhn-applet-$(VERSION)

clean::
	@rm -fv *.pyc *~ .*~ *.o *.so core* *.desktop
	@rm -fv rhn-applet*.tar.gz rhn-applet*.tar.bz2
	@find . -name .\#\* -exec rm -fv {} \;
	@rm -fv *.rpm
	$(descend-subdirs)

# useful macro
descend-subdirs = @$(foreach d,$(SUBDIRS), $(MAKE) -C $(d) $@ || exit 1; )

# Now do the same in the subdirs
#all clean install :: $(SUBDIRS)
#	$(descend-subdirs)

# OTHER targets for internal use
pychecker:: 
	@$(PYCHECKER) $(PYFILES) || exit 0
graphviz:: 
	@$(PYCHECKER) -Z $(PYFILES) || exit 0

# Import the RHN build system macros
PROJECT		= applet
-include ../../Makefile.inc
