# --------------------------------------------------------------------
# 
# Makefile for KDE plugins
# 
# Time-stamp: <97/05/06 05:16:44 vels>
# 
# --------------------------------------------------------------------

# --------------------------------------------------------------------
#                            Program names
# --------------------------------------------------------------------
PROGRAM  = ptest
PLUGIN1  = dir_plugin
PLUGIN2  = stdout_plugin


# --------------------------------------------------------------------
#                                Files 
# --------------------------------------------------------------------
SRCS     = main.cpp kplugmng.cpp kplugin.cpp
SRCPLUG1 = dirplug.cpp
SRCPLUG2 = stdoutplug.cpp
SRCMETA  = $(addsuffix .moc, $(basename $(SRCS))) \
           $(addsuffix .moc, $(basename $(SRCPLUG1))) \
           $(addsuffix .moc, $(basename $(SRCPLUG2))) \

# --------------------------------------------------------------------
#                        Compiler and linker options
# --------------------------------------------------------------------
CC         = gcc
CXX        = g++
MAKEDEPEND = makedepend -Y
MOC        = /usr/bin/moc -nw
CFLAGS     = -Wall -g
#CFLAGS    = -O

LIBS       =
LIBPLUG    =
# /usr/lib/libc.a

INCLUDES   = -I. -I$(QTDIR)/include
SYSLIBS    = -L/usr/X11/lib -lX11 -L$(QTDIR)/lib -lqt -ldl


# --------------------------------------------------------------------
#                          Some preparations
# --------------------------------------------------------------------
OBJS     = $(addsuffix .o, $(basename $(SRCS)))
OBJPLUG1 = $(addsuffix .o, $(basename $(SRCPLUG1)))
OBJPLUG2 = $(addsuffix .o, $(basename $(SRCPLUG2)))

.SUFFIXES: .o .cpp


# --------------------------------------------------------------------
#                          Compilation rules
# --------------------------------------------------------------------
all: $(PROGRAM) $(PLUGIN1) $(PLUGIN2)

%.moc: %.h
	$(MOC) -o $@ $<

.c.o:
	$(CC) -c $(CFLAGS) $(INCLUDES) $<

.cpp.o:
	$(CXX) -c $(CFLAGS) $(INCLUDES) $<

%plug.o: %plug.cpp
	$(CXX) -c $(CFLAGS) $(INCLUDES) -fPIC $<

%plugin.o: %plugin.cpp
	$(CXX) -c $(CFLAGS) $(INCLUDES) -fPIC $<


# --------------------------------------------------------------------
#                              Link rules
# --------------------------------------------------------------------
$(PROGRAM): $(SRCMETA) $(OBJS) $(LIBS)
	$(RM) $@
	$(CXX) -rdynamic -o $@ $(OBJS) $(LIBS) $(SYSLIBS)

$(PLUGIN1): $(SRCMETA1) $(OBJPLUG1)
	$(CXX) -shared -Wl,-soname,$(PLUGIN1) -o $(PLUGIN1) $(OBJPLUG1) $(LIBPLUG)

$(PLUGIN2): $(SRCMETA2) $(OBJPLUG2)
	$(CXX) -shared -Wl,-soname,$(PLUGIN2) -o $(PLUGIN2) $(OBJPLUG2) $(LIBPLUG)


# --------------------------------------------------------------------
#                              General rules
# --------------------------------------------------------------------
depend:
	@touch .depend
	@$(MAKEDEPEND) -f.depend $(INCLUDES) *.cpp 2> /dev/null
	@$(RM) .depend.bak

clean:
	@$(RM) $(PROGRAM) $(PLUGIN1) $(PLUGIN2) .gdb* core *.core *.bak *.o *.flc *~ *.moc


# --------------------------------------------------------------------
#                                Dependencies
# --------------------------------------------------------------------
ifeq (.depend,$(wildcard .depend))
include .depend
endif
