Index: trunk/Ohana/src/skycalc/Makefile
===================================================================
--- trunk/Ohana/src/skycalc/Makefile	(revision 12842)
+++ trunk/Ohana/src/skycalc/Makefile	(revision 19681)
@@ -1,5 +1,5 @@
-default: skycalc
+default: install
 help:
-	@echo "make options: (default)"
+	@echo "make options: install libskycalc all programs clean dist"
 
 include ../../Makefile.System
@@ -13,65 +13,64 @@
 
 # programs may add their own internal requirements here
-FULL_CFLAGS   = $(BASE_CFLAGS)
+FULL_CFLAGS   = $(BASE_CFLAGS) -fPIC
 FULL_CPPFLAGS = $(BASE_CPPFLAGS)
-FULL_LDFLAGS  = $(BASE_LDFLAGS)
+FULL_LDFLAGS  = $(BASE_LDFLAGS) -lskycalc -lohana
 
-skycalc: $(DESTLIB)/libskycalc.a
 install: $(DESTINC)/skycalc.h $(DESTLIB)/libskycalc.a
+libskycalc: $(DESTLIB)/libskycalc.a $(DESTLIB)/libskycalc.$(DLLTYPE)
 
-all: moondata dusktime sundata
+all: libskycalc dusktime moondata sundata
+programs: all
 
-OBJ = 	$(SRC)/time.$(ARCH).o		$(SRC)/geometry.$(ARCH).o \
-	$(SRC)/astro.$(ARCH).o		$(SRC)/sun.$(ARCH).o \
-	$(SRC)/moon.$(ARCH).o
+INCS = $(DESTINC)/skycalc.h
 
-$(OBJ): $(INC)/skycalc.h $(INC)/skycalc_internal.h
+MYINCS = $(INCS) $(INC)/skycalc_internal.h
 
-$(LIB)/libskycalc.$(ARCH).a: $(OBJ)
-	@if [ ! -d $(LIB) ]; then mkdir -p $(LIB); fi
-	rm -f $(LIB)/libskycalc.$(ARCH).a
-	ar rcv $(LIB)/libskycalc.$(ARCH).a $(OBJ)
-	$(RANLIB) $(LIB)/libskycalc.$(ARCH).a
+OBJS = 	\
+$(SRC)/time.$(ARCH).o     \
+$(SRC)/geometry.$(ARCH).o \
+$(SRC)/astro.$(ARCH).o    \
+$(SRC)/sun.$(ARCH).o      \
+$(SRC)/moon.$(ARCH).o
 
-$(DESTLIB)/libskycalc.a: $(LIB)/libskycalc.$(ARCH).a 
-	@if [ ! -d $(DESTLIB) ]; then mkdir -p $(DESTLIB); fi
-	rm -f  $(DESTLIB)/libskycalc.a
-	cp $(LIB)/libskycalc.$(ARCH).a $(DESTLIB)/libskycalc.a
+$(OBJS): $(MYINCS)
 
-$(DESTINC)/skycalc.h: $(INC)/skycalc.h
-	@if [ ! -d $(DESTINC) ]; then mkdir -p $(DESTINC); fi
-	rm -f $(DESTINC)/skycalc.h
-	cp $(INC)/skycalc.h $(DESTINC)/
+$(LIB)/libskycalc.$(ARCH).a: $(OBJS)
+$(LIB)/libskycalc.$(ARCH).$(DLLTYPE): $(OBJS)
 
-test:
-	$(CC) $(CCFLAGS) -g -o skylib $(SRC)/skylib.c -lskycalc -lm
+$(DESTLIB)/libskycalc.a:  $(LIB)/libskycalc.$(ARCH).a
+$(DESTLIB)/libskycalc.$(DLLTYPE): $(LIB)/libskycalc.$(ARCH).$(DLLTYPE)
 
-dusktime: skycalc
-	@if [ ! -d $(BIN) ]; then mkdir -p $(BIN); fi
-	@if [ ! -d $(DESTBIN) ]; then mkdir -p $(DESTBIN); fi
-	$(CC) $(CCFLAGS) -g -o $(BIN)/dusktime.$(ARCH) $(SRC)/dusktime.c -lskycalc -lm -lohana
-	cp $(BIN)/dusktime.$(ARCH) $(DESTBIN)/dusktime
+dusktime : $(BIN)/dusktime.$(ARCH)
+moondata : $(BIN)/moondata.$(ARCH)
+sundata  : $(BIN)/sundata.$(ARCH)
+sunmoon  : $(BIN)/sunmoon.$(ARCH)
 
-moondata: skycalc
-	@if [ ! -d $(BIN) ]; then mkdir -p $(BIN); fi
-	@if [ ! -d $(DESTBIN) ]; then mkdir -p $(DESTBIN); fi
-	$(CC) $(CCFLAGS) -g -o $(BIN)/moondata.$(ARCH) $(SRC)/moondata.c -lskycalc -lm -lohana
-	cp $(BIN)/moondata.$(ARCH) $(DESTBIN)/moondata
+DUSKTIME = $(SRC)/dusktime.$(ARCH).o
+MOONDATA = $(SRC)/moondata.$(ARCH).o
+SUNDATA  = $(SRC)/sundata.$(ARCH).o
+SUNMOON  = $(SRC)/sunmoon.$(ARCH).o
 
-sundata: skycalc
-	@if [ ! -d $(BIN) ]; then mkdir -p $(BIN); fi
-	@if [ ! -d $(DESTBIN) ]; then mkdir -p $(DESTBIN); fi
-	$(CC) $(CCFLAGS) -g -o $(BIN)/sundata.$(ARCH) $(SRC)/sundata.c -lskycalc -lm -lohana
-	cp $(BIN)/sundata.$(ARCH) $(DESTBIN)/sundata
+$(DUSKTIME) : $(MYINCS)
+$(MOONDATA) : $(MYINCS)
+$(SUNDATA)  : $(MYINCS)
+$(SUNMOON)  : $(MYINCS)
 
-clean:	
-	rm -f `find . -name "*.o"`
-	rm -f `find . -name "*.a"`
-	rm -f `find . -name "*~"`
-	rm -f `find . -name "#*"`
+$(BIN)/dusktime.$(ARCH) : $(DUSKTIME)
+$(BIN)/moondata.$(ARCH) : $(MOONDATA)
+$(BIN)/sundata.$(ARCH)  : $(SUNDATA)
+$(BIN)/sunmoon.$(ARCH)  : $(SUNMOON)
 
-.SUFFIXES: .$(ARCH).o
+INSTALL = dusktime moondata sundata sunmoon
 
-.c.$(ARCH).o:
-	$(CC) $(CFLAGS) -c $<
+# dependancy rules for binary code #########################
+$(INSTALL): % : $(BIN)/%.$(ARCH)
 
+%.clean :
+	rm -f $(BIN)/$*.$(ARCH)
+
+%.install:
+	make $(DESTBIN)/$*
+
+install:
+	for i in $(INSTALL); do make $$i.install || exit; done
