.PHONY : all
PACKAGE= r2l-plugins
PREFIX = /usr/local
LIBDIR = $(PREFIX)/lib
BINDIR = $(PREFIX)/bin

VERSION= 0.60

# compiler/linker
CC = gcc
LD = gcc

# compiler flags/linker flags
# general
CFLAGS = -Wall -O2 -fno-strength-reduce # This gets overwritten by rpm

R2LLIB_CONFIG = r2llib-config
R2LLIB_CFLAGS = $(shell $(R2LLIB_CONFIG) --cflags)
R2LLIB_LIBS   = $(shell $(R2LLIB_CONFIG) --libs)

# #########################
#
#  Will be overriden in make.defs

# using the name 'GNOMEC' instead of 'GNOME' to prevent a clash with the
# variable name 'GNOME_CONFIG'
GNOMEC_CONFIG = gnome-config

X11_LIB_DIR = /usr/X11R6/lib
X11_INCLUDES_DIR = /usr/include/X11

X11_LIBS   = -L$(X11_LIB_DIR) -lX11 -lXext -lXpm
X11_CFLAGS = -I$(X11_INCLUDES_DIR)

DOCKAPP_CFLAGS = 
DOCKAPP_LIBS=-ldockapp

BUILD_GNOME = 1
BUILD_DOCKAPP = 1

INSTALL = install -c

# include 'make.defs' if it exists 
-include make.defs

GNOMEC_CFLAGS = $(shell $(GNOMEC_CONFIG) --cflags applets)
GNOMEC_LIBS   = $(shell $(GNOMEC_CONFIG) --libs   applets)

BASE_CFLAGS = -g -Wall $(R2LLIB_CFLAGS) $(CFLAGS)
BASE_LDFLAGS = -g $(R2LLIB_LIBS) $(CFLAGS)
# for terminal
TERMINAL_CFLAGS = $(BASE_CFLAGS)
TERMINAL_LDFLAGS = $(BASE_LDFLAGS)
# for gnome_applet
GNOME_CFLAGS = $(BASE_CFLAGS) $(GNOMEC_CFLAGS)
GNOME_LDFLAGS = $(BASE_LDFLAGS) $(GNOMEC_LIBS)
# for wm_dockapp
WM_CFLAGS = $(BASE_CFLAGS) $(X11_CFLAGS) $(DOCKAPP_CFLAGS)
WM_LDFLAGS =$(BASE_LDFLAGS) $(X11_LIBS) $(DOCKAPP_LIBS)

# application files.
ifeq ($(BUILD_GNOME),1)
  GNOME_PROG = r2lgnomeapplet
else
  GNOME_PROG = 
endif

ifeq ($(BUILD_DOCKAPP),1)
  WM_PROG = r2ldockapp
else
  WM_PROG = 
endif

TERMINAL_PROG = r2lterminal

# program binary file name
PROGS = $(TERMINAL_PROG) $(GNOME_PROG) $(WM_PROG)
#PROGS = $(TERMINAL_PROG) $(WM_PROG) # because I have some problems with gnome

#PIC = -fPIC
LIBS = $(GNOME_LIBS) $(X11_LIBS) $(R2LLIB_LIBS)
SPEC_FILE=$(PACKAGE).spec

COMMON_DEFS=ui_plugin.h

# plugin object files.
COMMON_OBJS = main.o
TERMINAL_OBJS = ui_plugin_terminal.o
GNOME_OBJS = ui_plugin_gnome_applet.o
WM_OBJS = ui_plugin_wm_dockapp.o

XPM_LIST = ln.xpm ll.xpm lr.xpm rl.xpm rn.xpm rr.xpm
FILES_LIST=ui_plugin_wm_dockapp.c ui_plugin_terminal.c ui_plugin_gnome_applet.c \
           main.c $(COMMON_DEFS) $(XPM_LIST) \
	   $(SPEC_FILE).in $(SPEC_FILE) Makefile \
	   README Changelog README.internals make.defs.in
TAR_BALL_DIR=$(PACKAGE)-$(VERSION)
TAR_BALL=$(TAR_BALL_DIR).tar.gz

# external programs.
CP		= cp
MKDIR		= mkdir
RM		= /bin/rm -f


# object files
all: $(PROGS)

$(TERMINAL_PROG): $(COMMON_OBJS) $(TERMINAL_OBJS)
	$(LD) -o $@ $(TERMINAL_OBJS) $(COMMON_OBJS) $(TERMINAL_LDFLAGS)

$(TERMINAL_OBJS): ui_plugin_terminal.c $(COMMON_DEFS)
	$(CC) -c $< $(TERMINAL_CFLAGS)

$(GNOME_PROG): $(COMMON_OBJS) $(GNOME_OBJS)
	$(LD) -o $@ $(GNOME_OBJS) $(COMMON_OBJS) $(GNOME_LDFLAGS)

$(GNOME_OBJS): ui_plugin_gnome_applet.c $(COMMON_DEFS) $(XPM_LIST)
	$(CC) -c $< $(GNOME_CFLAGS)

$(WM_PROG): $(COMMON_OBJS) $(WM_OBJS)
	$(LD) -o $@ $(WM_OBJS) $(COMMON_OBJS) $(WM_LDFLAGS)

$(WM_OBJS): ui_plugin_wm_dockapp.c $(COMMON_DEFS) $(XPM_LIST)
	$(CC) -c $< $(WM_CFLAGS)

$(COMMON_OBJS): main.c $(COMMON_DEFS)
	$(CC) -c $< $(BASE_CFLAGS)

clean:
	$(RM) $(PROGS) $(COMMON_OBJS) $(TERMINAL_OBJS) $(GNOME_OBJS) $(WM_OBJS) \
	      core $(SPEC_FILE) *~

$(SPEC_FILE): $(SPEC_FILE).in
	cat $< |sed -e 's#PACKAGE_VERSION#$(VERSION)#g' \
	       > $@

install: $(PROGS)
	$(INSTALL) -d $(BINDIR)
	for progbin in $(PROGS) ; do \
	  $(INSTALL) -m 0755 $${progbin} $(BINDIR)/ ; \
	done

uninstall:
	for progbin in $(PROGS) ; do \
	  $(RM) $(BINDIR)/$${progbin} ; \
	done

pack: $(TAR_BALL)

$(TAR_BALL): $(FILES_LIST)
	if [ -e $(TAR_BALL_DIR) ] ; then \
	  $(RM) -rf $(TAR_BALL_DIR);     \
	fi
	mkdir $(TAR_BALL_DIR)
	cp $(FILES_LIST) $(TAR_BALL_DIR)
	tar cvzf $(TAR_BALL) $(TAR_BALL_DIR)

rpm: $(TAR_BALL)
	rpm -tb $(TAR_BALL)
