Index: trunk/MagicSoft/Cosy/Makefile
===================================================================
--- trunk/MagicSoft/Cosy/Makefile	(revision 808)
+++ trunk/MagicSoft/Cosy/Makefile	(revision 909)
@@ -11,22 +11,18 @@
 
 #
-#  ----->>>   settings for compiler
+#  please change all system depend values in the 
+#  config.mk.${OSTYPE} file 
+#
+#
+include Makefile.conf.$(OSTYPE)
+include Makefile.conf.general
+
 #
 
-CC     = gcc
-CXX    = g++
-AR     = ar -rc
-AS     = as
-LD     = ld
-RANLIB = ranlib
-
-#
-#  ----->>>   settings for compilation
-#
-
-PROGRAMS  = cosy starg
-
-ROOTFLAGS = `root-config --cflags`
-ROOTGLIBS = `root-config --glibs`
+PROGRAMS = cosy starg
+SOLIB    = 
+CINT     = M
+INCLUDES = -I. -Iincl -Ibase -Igui -Idevdrv -Icandrv -Ivideodev -Icatalog
+LIBS     = -lpng -lz -L/usr/X11R6/lib
 
 #
@@ -34,69 +30,27 @@
 #
 #    WARNING: the result (whether the linkage works or not) depends on the
-#             order of the libraries
+#             order of the libraries. It seems, that the most base library
+#             must be the last one
 #
-#
-#LIBS      = -L. -L/usr/lib -lstdc++ -lpthread 
-INCLUDES  = -I. -I/usr/X11R6/include -Icandrv -Idevdrv -Ibase -Igui -Iincl -Islalib -Ivideodev -Icatalog
-LIBS      = -L. -L/usr/X11R6/lib -lpthread -lpng -lz
-#INCLUDES  = -I. -Ibase -Igui -Islalib
-
-WARNING   = -Wall -fno-rtti -fno-exceptions 
-OPTIM     = -O2
-DEBUG 	  = -g 
-DEFINES	  = -DCPU=486 -DBUS_LITTLE_ENDIAN -DDEBUG=0 -DLINUX -DSHOW 
-
-CFLAGS    = $(OPTIM) $(DEBUG) $(WARNING) $(INCLUDES) $(ROOTFLAGS) $(DEFINES)
-CXXFLAGS  = $(CFLAGS)
-
-CINT     = M
 
 #
 #  ----->>>   mars libraries
 #
+SUBDIRS = \
+        candrv      \
+        catalog     \
+	devdrv      \
+        gui         \
+        videodev    \
+	base        \
+        slalib
+
+LIBRARIES = $(SUBDIRS:=.a)
 
 #------------------------------------------------------------------------------
-.SILENT:
 
 .SUFFIXES: .c .cc .h .o 
 
-SLASRC  = slalib/cldj.c   slalib/dranrm.c  slalib/mappa.c  slalib/aoppa.c \
-	  slalib/mapqk.c  slalib/aopqk.c   slalib/epj.c    slalib/evp.c   \
-	  slalib/dvn.c    slalib/prenut.c  slalib/geoc.c   slalib/refco.c \
-	  slalib/eqeqx.c  slalib/dcs2c.c   slalib/dvdv.c   slalib/dmxv.c  \
-	  slalib/dcc2s.c  slalib/refz.c    slalib/refro.c  slalib/prec.c  \
-	  slalib/nut.c    slalib/dmxm.c    slalib/nutc.c   slalib/range.c \
-          slalib/aoppat.c slalib/deuler.c  slalib/drange.c slalib/daf2r.c \
-          slalib/dh2e.c   slalib/gmst.c    slalib/de2h.c   slalib/altaz.c \
-          slalib/gmsta.c  slalib/dat.c     slalib/dtt.c    slalib/oapqk.c \
-          slalib/ampqk.c  slalib/dimxv.c   slalib/mapqkz.c slalib/dr2af.c \
-          slalib/dd2tf.c
-
-SLAOBJ  = $(SLASRC:.c=.o)
-
-SRCFILES = candrv/vmodican.cc \
-	   candrv/canopen.cc \
-	   candrv/network.cc \
-	   candrv/nodedrv.cc \
-           candrv/sdolist.cc \
-	   devdrv/shaftencoder.cc \
-	   devdrv/macs.cc \
-	   gui/MGCosy.cc \
-           gui/MGImage.cc \
-           gui/MGCoordinate.cc \
-           gui/MGCoordinates.cc \
-           base/timer.cc \
-           base/msgqueue.cc \
-           base/File.cc \
-           base/MStopwatch.cc \
-           catalog/SaoFile.cc \
-           catalog/StarCatalog.cc \
-           catalog/Slalib.cc \
-           videodev/Camera.cc \
-           videodev/Filter.cc \
-           videodev/Writer.cc \
-           MStarguider.cc \
-           MCosy.cc \
-           Starguider.cc
+SRCFILES = MCosy.cc Starguider.cc
 
 SRCS    = $(SRCFILES)
@@ -106,27 +60,58 @@
 ############################################################
 
-all: $(PROGRAMS)
+all: rmlib $(PROGRAMS) $(SOLIB)
 
-$(SLAOBJ):
-	echo 'Compiling $*.c'
-	$(CC) -c $(CFLAGS) -pedantic $*.c -o $*.o
+# Use $(CXX) -v ... for a more verbose output
+#
+# We could link mars.so instead of all libraries. This would need
+# some MBs less space on the HD. But this means, that the Shared
+# Library Path in your system must be set properly to be able to start
+# 'mars'
+#
+$(PROGRAMS): $(LIBRARIES) $(OBJS) $(HEADERS) $(PROGRAMS:=.o) 
+	@echo " Linking $@ ..." 
+	$(CXX) $(CXXFLAGS) $(LIBS) $@.o $(OBJS) $(MARS_LIB) $(ROOTGLIBS) -o $@
 
-#$(PROGRAMS): $(PROGRAMS:=.o) $(OBJS) $(SLAOBJ)
-#	@echo " Linking $@ ..." 
-#	$(CXX) $(CXXFLAGS) $@.o $(LIBS) $(ROOTGLIBS) -o $@
-$(PROGRAMS): $(SLAOBJ) $(OBJS) $(PROGRAMS:=.o) 
-	@echo " Linking $@ ..." 
-	$(CXX) $(CXXFLAGS) $(LIBS) $(SLAOBJ) $(OBJS) $(ROOTGLIBS) -o $@ $@.o
+$(SOLIB): $(LIBRARIES) $(OBJS) $(HEADERS) MCint.o
+	@echo " Linking $(SOLIB) ..."
+	$(CXX) -shared $(CXXFLAGS) $(SUBDIRS:=/*.o) $(ROOTGLIBS) -o $@
+	mv cosy.so lib
 
-#dox:
-#	@echo " Creating html documentation:"
-#	root -b -q dohtml.C
+$(LIBRARIES):
+	@echo " "  
+	@echo " Creating lib$@:"
+	(cd $*; make -f Makefile; cd ..; mv $*/$@ lib/lib$@) 
 
+dox:
+	@echo " Creating html documentation:"
+	root -b -q dohtml.C
 
 include Makefile.rules
 
-clean:	rmcint rmobjs rmcore rmbin rmbak
+clean:	rmlib rmcint rmobjs rmcore rmbin
 
-tar:	clean
+mrproper:	clean rmbak
+	@rm -f macros/*~
+	@rm -rf htmldoc
+	@echo "cd base"
+	@cd base; make mrproper; cd ..
+	@echo "cd .."
+	@echo "cd candrv"
+	@cd candrv; make mrproper; cd ..
+	@echo "cd .."
+	@echo "cd devdrv"
+	@cd devdrv; make mrproper; cd ..
+	@echo "cd .."
+	@echo "cd gui"
+	@cd gui; make mrproper; cd ..
+	@echo "cd .."
+	@echo "cd videodev"
+	@cd videodev; make mrproper; cd ..
+	@echo "cd .."
+	@echo "cd catalog"
+	@cd videodev; make mrproper; cd ..
+	@echo "cd .."
+
+tar:	mrproper
 	@echo "Making tar-file"
 	@tar -cvf ../cosy.tar *
