Index: /trunk/Ohana/src/opihi/Makefile.Common
===================================================================
--- /trunk/Ohana/src/opihi/Makefile.Common	(revision 11890)
+++ /trunk/Ohana/src/opihi/Makefile.Common	(revision 11891)
@@ -3,9 +3,14 @@
 # .SUFFIXES: .$(ARCH).o
 
-CFLAGS  =       -I$(INC) -I$(DESTINC) $(INCDIRS) -DDATADIR_DEFAULT=$(DATA)
+BASE_CFLAGS   =	$(CFLAGS)
+BASE_CPPFLAGS =	$(CPPFLAGS) -I$(INC) -I$(DESTINC) $(INCDIRS) -D$(ARCH) -DDATADIR_DEFAULT=$(DATA)
+BASE_LDFLAGS  = $(LDFLAGS) -L$(LIB) -L$(DESTLIB) $(LIBDIRS) $(LIBFLAGS)
+
+%.$(ARCH).o : %.c
+	$(CC) $(FULL_CFLAGS) $(FULL_CPPFLAGS) -c $< -o $@
 
 $(BIN)/%.$(ARCH):
 	@if [ ! -d $(BIN) ]; then mkdir -p $(BIN); fi
-	$(CC) -o $@ $^ $(LFLAGS)
+	$(CC) $(FULL_CFLAGS) -o $@ $^ $(FULL_LDFLAGS)
 	@echo "compiled $*"
 	@echo ""
@@ -27,4 +32,14 @@
 
 $(DESTLIB)/%.a: $(LIB)/%.$(ARCH).a
+	@if [ ! -d $(DESTLIB) ]; then mkdir -p $(DESTLIB); fi
+	rm -f $@
+	cp $< $@
+
+$(LIB)/%.$(ARCH).so:
+	@if [ ! -d $(LIB) ]; then mkdir -p $(LIB); fi
+	rm -f $@
+	gcc -shared -Wl,-soname,$*.so -o $@ $^ -lc
+
+$(DESTLIB)/%.so: $(LIB)/%.$(ARCH).so
 	@if [ ! -d $(DESTLIB) ]; then mkdir -p $(DESTLIB); fi
 	rm -f $@
@@ -55,7 +70,4 @@
 	@echo ""
 
-%.$(ARCH).o : %.c
-	$(CC) -o $@ -c $*.c $(CFLAGS)
-
 clean:
 	rm -f $(BIN)/*.$(ARCH)
Index: /trunk/Ohana/src/opihi/cmd.astro/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/cmd.astro/Makefile	(revision 11890)
+++ /trunk/Ohana/src/opihi/cmd.astro/Makefile	(revision 11891)
@@ -1,4 +1,5 @@
+default: libastrocmd
+
 include ../../../Configure
-
 HOME    =       $(ROOT)/src/opihi
 BIN     =       $(HOME)/bin
@@ -6,7 +7,12 @@
 INC     =       $(HOME)/include
 SRC     =       $(HOME)/cmd.astro
+include ../Makefile.Common
+
+# programs may add their own internal requirements here
+FULL_CFLAGS   = $(BASE_CFLAGS) -fPIC
+FULL_CPPFLAGS = $(BASE_CPPFLAGS)
+FULL_LDFLAGS  = $(BASE_LDFLAGS)
 
 # astro user commands ########################
-
 srcs = \
 $(SRC)/init.$(ARCH).o             \
@@ -29,5 +35,4 @@
 $(SRC)/multifit.$(ARCH).o	   \
 $(SRC)/objload.$(ARCH).o	   \
-$(SRC)/outline2.$(ARCH).o	   \
 $(SRC)/outline.$(ARCH).o	   \
 $(SRC)/polar.$(ARCH).o		   \
@@ -62,11 +67,16 @@
 $(INC)/display.h 
 
-libastrocmd: $(DESTLIB)/libastrocmd.a 
+$(srcs): $(incs)
+
+$(LIB)/libastrocmd.$(ARCH).a: $(srcs)
+$(LIB)/libastrocmd.$(ARCH).so: $(srcs)
+
 $(DESTLIB)/libastrocmd.a: $(LIB)/libastrocmd.$(ARCH).a
-$(LIB)/libastrocmd.$(ARCH).a: $(srcs)
-$(srcs): $(incs)
+$(DESTLIB)/libastrocmd.so: $(LIB)/libastrocmd.$(ARCH).so
+
+libastrocmd: $(DESTLIB)/libastrocmd.a $(DESTLIB)/libastrocmd.so
 
 uninstall:
 	rm -f $(DESTLIB)/libastrocmd.a
+	rm -f $(DESTLIB)/libastrocmd.so
 
-include ../Makefile.Common
Index: /trunk/Ohana/src/opihi/cmd.basic/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/cmd.basic/Makefile	(revision 11890)
+++ /trunk/Ohana/src/opihi/cmd.basic/Makefile	(revision 11891)
@@ -1,4 +1,5 @@
+default: libbasiccmd
+
 include ../../../Configure
-
 HOME    =       $(ROOT)/src/opihi
 SRC     =       $(HOME)/cmd.basic
@@ -6,4 +7,10 @@
 LIB     =       $(HOME)/lib
 INC     =       $(HOME)/include
+include ../Makefile.Common
+
+# programs may add their own internal requirements here
+FULL_CFLAGS   = $(BASE_CFLAGS) -fPIC
+FULL_CPPFLAGS = $(BASE_CPPFLAGS)
+FULL_LDFLAGS  = $(BASE_LDFLAGS)
 
 # basic user commands ########################
@@ -54,11 +61,15 @@
 $(INC)/display.h 
 
-libbasiccmd: $(DESTLIB)/libbasiccmd.a 
+$(srcs): $(incs)
+
+$(LIB)/libbasiccmd.$(ARCH).a: $(srcs)
+$(LIB)/libbasiccmd.$(ARCH).so: $(srcs)
+
 $(DESTLIB)/libbasiccmd.a: $(LIB)/libbasiccmd.$(ARCH).a
-$(LIB)/libbasiccmd.$(ARCH).a: $(srcs)
-$(srcs): $(incs)
+$(DESTLIB)/libbasiccmd.so: $(LIB)/libbasiccmd.$(ARCH).so
+
+libbasiccmd: $(DESTLIB)/libbasiccmd.a $(DESTLIB)/libbasiccmd.so
 
 uninstall:
 	rm -f $(DESTLIB)/libbasiccmd.a
-
-include ../Makefile.Common
+	rm -f $(DESTLIB)/libbasiccmd.so
Index: /trunk/Ohana/src/opihi/cmd.data/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/cmd.data/Makefile	(revision 11890)
+++ /trunk/Ohana/src/opihi/cmd.data/Makefile	(revision 11891)
@@ -1,4 +1,5 @@
+default: libdatacmd
+
 include ../../../Configure
-
 HOME    =       $(ROOT)/src/opihi
 SRC     =       $(HOME)/cmd.data
@@ -7,4 +8,10 @@
 INC     =       $(HOME)/include
 DATA    =       $(DESTDATA)/mana
+include ../Makefile.Common
+
+# programs may add their own internal requirements here
+FULL_CFLAGS   = $(BASE_CFLAGS) -fPIC
+FULL_CPPFLAGS = $(BASE_CPPFLAGS)
+FULL_LDFLAGS  = $(BASE_LDFLAGS)
 
 # data user commands ########################
@@ -132,11 +139,15 @@
 $(INC)/display.h 
 
-libdatacmd: $(DESTLIB)/libdatacmd.a 
+$(srcs): $(incs)
+
+$(LIB)/libdatacmd.$(ARCH).a: $(srcs)
+$(LIB)/libdatacmd.$(ARCH).so: $(srcs)
+
 $(DESTLIB)/libdatacmd.a: $(LIB)/libdatacmd.$(ARCH).a
-$(LIB)/libdatacmd.$(ARCH).a: $(srcs)
-$(srcs): $(incs)
+$(DESTLIB)/libdatacmd.so: $(LIB)/libdatacmd.$(ARCH).so
+
+libdatacmd: $(DESTLIB)/libdatacmd.a  $(DESTLIB)/libdatacmd.so
 
 uninstall:
 	rm -f $(DESTLIB)/libdatacmd.a
-
-include ../Makefile.Common
+	rm -f $(DESTLIB)/libdatacmd.so
Index: /trunk/Ohana/src/opihi/dimm/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/dimm/Makefile	(revision 11890)
+++ /trunk/Ohana/src/opihi/dimm/Makefile	(revision 11891)
@@ -1,5 +1,5 @@
-include ../../../Configure
 default: dimm
 
+include ../../../Configure
 HOME    =       $(ROOT)/src/opihi
 BIN     =       $(HOME)/bin
@@ -8,12 +8,14 @@
 SRC     =       $(HOME)/dimm
 DATA    =       $(DESTDATA)/dimm
+include ../Makefile.Common
 
-# link flags 
-LIBS1   =       -ldvo -lkapa -lFITS -lohana $(LIBFLAGS)
-LIBS2   =       -lbasiccmd -ldatacmd -lastrocmd -lshell -ldata -lsbig 
-LFLAGS  =       -L$(LIB) -L$(DESTLIB) $(LIBDIRS) $(LIBS2) $(LIBS1) 
+# programs may add their own internal requirements here
+LIBS1   =       -lbasiccmd -ldatacmd -lastrocmd -lshell -ldata -lsbig
+LIBS2   =       -ldvo -lkapa -lFITS -lohana
+FULL_CFLAGS   = $(BASE_CFLAGS)
+FULL_CPPFLAGS = $(BASE_CPPFLAGS)
+FULL_LDFLAGS  = $(LIBS1) $(LIBS2) $(BASE_LDFLAGS)
 
 # dimm user commands and support functions #####################
-
 funcs = \
 $(SRC)/Camera.$(ARCH).o		\
@@ -63,6 +65,4 @@
 .PHONY: dimm
 
-include ../Makefile.Common
-
 # are these used or replaced?
 # $(SRC)/analysis.$(ARCH).o	  	\
Index: /trunk/Ohana/src/opihi/dvo/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/dvo/Makefile	(revision 11890)
+++ /trunk/Ohana/src/opihi/dvo/Makefile	(revision 11891)
@@ -1,5 +1,5 @@
-include ../../../Configure
 default: dvo
 
+include ../../../Configure
 HOME    =       $(ROOT)/src/opihi
 BIN     =       $(HOME)/bin
@@ -8,12 +8,14 @@
 SRC     =       $(HOME)/dvo
 DATA    =       $(DESTDATA)/dvo
+include ../Makefile.Common
 
-# link flags 
-LIBS1   =       -ldvo -lkapa -lFITS -lohana $(LIBFLAGS)
-LIBS2   =       -lbasiccmd -ldatacmd -lastrocmd -lshell -ldata 
-LFLAGS  =       -L$(LIB) -L$(DESTLIB) $(LIBDIRS) $(LIBS2) $(LIBS1) 
+# programs may add their own internal requirements here
+LIBS1   =       -lbasiccmd -ldatacmd -lastrocmd -lshell -ldata 
+LIBS2   =       -ldvo -lkapa -lFITS -lohana
+FULL_CFLAGS   = $(BASE_CFLAGS)
+FULL_CPPFLAGS = $(BASE_CPPFLAGS)
+FULL_LDFLAGS  = $(LIBS1) $(LIBS2) $(BASE_LDFLAGS)
 
 # dvo user commands and support functions ########################
-
 funcs = \
 $(SRC)/init.$(ARCH).o            	\
@@ -98,6 +100,4 @@
 .PHONY: dvo
 
-include ../Makefile.Common
-
 # deprecated functions: verify & delete
 #$(SRC)/catalog.$(ARCH).o	  	\
Index: /trunk/Ohana/src/opihi/lib.data/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/lib.data/Makefile	(revision 11890)
+++ /trunk/Ohana/src/opihi/lib.data/Makefile	(revision 11891)
@@ -1,4 +1,5 @@
+default: libdata
+
 include ../../../Configure
-
 HOME    =       $(ROOT)/src/opihi
 BIN     =       $(HOME)/bin
@@ -6,4 +7,10 @@
 INC     =       $(HOME)/include
 SDIR    =       $(HOME)/lib.data
+include ../Makefile.Common
+
+# programs may add their own internal requirements here
+FULL_CFLAGS   = $(BASE_CFLAGS) -fPIC
+FULL_CPPFLAGS = $(BASE_CPPFLAGS)
+FULL_LDFLAGS  = $(BASE_LDFLAGS)
 
 # general numerical functions (libdata) #####################
@@ -20,5 +27,4 @@
 $(SDIR)/precess.$(ARCH).o		\
 $(SDIR)/starfuncs.$(ARCH).o		\
-$(SDIR)/powell.$(ARCH).o		\
 $(SDIR)/gaussian.$(ARCH).o		\
 $(SDIR)/graphtools.$(ARCH).o            \
@@ -38,11 +44,15 @@
 $(INC)/display.h 
 
-libdata: $(DESTLIB)/libdata.a
+$(srcs): $(incs)
+
+$(LIB)/libdata.$(ARCH).a: $(srcs)
+$(LIB)/libdata.$(ARCH).so: $(srcs)
+
 $(DESTLIB)/libdata.a: $(LIB)/libdata.$(ARCH).a
-$(LIB)/libdata.$(ARCH).a: $(srcs)
-$(srcs): $(incs)
+$(DESTLIB)/libdata.so: $(LIB)/libdata.$(ARCH).so
+
+libdata: $(DESTLIB)/libdata.a $(DESTLIB)/libdata.so
 
 uninstall:
 	rm -f $(DESTLIB)/libdata.a
-
-include ../Makefile.Common
+	rm -f $(DESTLIB)/libdata.so
Index: /trunk/Ohana/src/opihi/lib.shell/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/lib.shell/Makefile	(revision 11890)
+++ /trunk/Ohana/src/opihi/lib.shell/Makefile	(revision 11891)
@@ -1,4 +1,5 @@
+default: libshell
+
 include ../../../Configure
-
 HOME    =       $(ROOT)/src/opihi
 BIN     =       $(HOME)/bin
@@ -6,4 +7,10 @@
 INC     =       $(HOME)/include
 SDIR    =       $(HOME)/lib.shell
+include ../Makefile.Common
+
+# programs may add their own internal requirements here
+FULL_CFLAGS   = $(BASE_CFLAGS) -fPIC
+FULL_CPPFLAGS = $(BASE_CPPFLAGS)
+FULL_LDFLAGS  = $(BASE_LDFLAGS)
 
 # opihi shell functions (libopihi) ########################
@@ -57,11 +64,15 @@
 $(INC)/display.h 
 
-libshell: $(DESTLIB)/libshell.a 
+$(shell) : $(incs)
+
+$(LIB)/libshell.$(ARCH).a: $(shell)
+$(LIB)/libshell.$(ARCH).so: $(shell)
+
 $(DESTLIB)/libshell.a: $(LIB)/libshell.$(ARCH).a
-$(LIB)/libshell.$(ARCH).a: $(shell)
-$(shell) : $(incs)
+$(DESTLIB)/libshell.so: $(LIB)/libshell.$(ARCH).so
+
+libshell: $(DESTLIB)/libshell.a $(DESTLIB)/libshell.so
 
 uninstall:
 	rm -f $(DESTLIB)/libshell.a
-
-include ../Makefile.Common
+	rm -f $(DESTLIB)/libshell.so
Index: /trunk/Ohana/src/opihi/mana/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/mana/Makefile	(revision 11890)
+++ /trunk/Ohana/src/opihi/mana/Makefile	(revision 11891)
@@ -1,5 +1,5 @@
-include ../../../Configure
 default: mana
 
+include ../../../Configure
 HOME    =       $(ROOT)/src/opihi
 SRC     =       $(HOME)/mana
@@ -8,12 +8,14 @@
 INC     =       $(HOME)/include
 DATA    =       $(DESTDATA)/mana
+include ../Makefile.Common
 
-# link flags 
-LIBS1   =       -ldvo -lkapa -lFITS -lohana $(LIBFLAGS)
-LIBS2   =       -lbasiccmd -ldatacmd -lastrocmd -lshell -ldata 
-LFLAGS  =       -L$(LIB) -L$(DESTLIB) $(LIBDIRS) $(LIBS2) $(LIBS1) 
+# programs may add their own internal requirements here
+LIBS1   =       -lbasiccmd -ldatacmd -lastrocmd -lshell -ldata 
+LIBS2   =       -ldvo -lkapa -lFITS -lohana
+FULL_CFLAGS   = $(BASE_CFLAGS)
+FULL_CPPFLAGS = $(BASE_CPPFLAGS)
+FULL_LDFLAGS  = $(LIBS1) $(LIBS2) $(BASE_LDFLAGS)
 
 # mana user commands and support functions ########################
-
 funcs = \
 $(SRC)/init.$(ARCH).o \
@@ -46,4 +48,2 @@
 
 .PHONY: mana
-
-include ../Makefile.Common
Index: /trunk/Ohana/src/opihi/pantasks/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/pantasks/Makefile	(revision 11890)
+++ /trunk/Ohana/src/opihi/pantasks/Makefile	(revision 11891)
@@ -1,5 +1,5 @@
-include ../../../Configure
 default: pantasks pantasks_client pantasks_server
 
+include ../../../Configure
 HOME    =       $(ROOT)/src/opihi
 SRC     =       $(HOME)/pantasks
@@ -8,9 +8,12 @@
 INC     =       $(HOME)/include
 DATA    =       $(DESTDATA)/pantasks
+include ../Makefile.Common
 
-# link flags 
-LIBS1   =       -ldvo -lkapa -lFITS -lohana $(LIBFLAGS)
-LIBS2   =       -lbasiccmd -ldatacmd -lastrocmd -lshell -ldata 
-LFLAGS  =       -L$(LIB) -L$(DESTLIB) $(LIBDIRS) $(LIBS2) $(LIBS1) 
+# programs may add their own internal requirements here
+LIBS1   =       -lbasiccmd -ldatacmd -lastrocmd -lshell -ldata 
+LIBS2   =       -ldvo -lkapa -lFITS -lohana
+FULL_CFLAGS   = $(BASE_CFLAGS)
+FULL_CPPFLAGS = $(BASE_CPPFLAGS)
+FULL_LDFLAGS  = $(LIBS1) $(LIBS2) $(BASE_LDFLAGS)
 
 # sched user commands and support functions ########################
@@ -117,4 +120,2 @@
 
 .PHONY: pantasks pantasks_client pantasks_server
-
-include ../Makefile.Common
Index: /trunk/Ohana/src/opihi/pclient/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/pclient/Makefile	(revision 11890)
+++ /trunk/Ohana/src/opihi/pclient/Makefile	(revision 11891)
@@ -1,5 +1,5 @@
-include ../../../Configure
 default: pclient
 
+include ../../../Configure
 HOME    =       $(ROOT)/src/opihi
 BIN     =       $(HOME)/bin
@@ -8,12 +8,14 @@
 SDIR    =       $(HOME)/pclient
 DATA    =       $(DESTDATA)/pclient
+include ../Makefile.Common
 
-# link flags 
-LIBS1   =       -ldvo -lkapa -lFITS -lohana $(LIBFLAGS)
-LIBS2   =       -lbasiccmd -lshell -ldata 
-LFLAGS  =       -L$(LIB) -L$(DESTLIB) $(LIBDIRS) $(LIBS2) $(LIBS1) 
+# programs may add their own internal requirements here
+LIBS1         = -lbasiccmd -lshell -ldata 
+LIBS2         = -ldvo -lkapa -lFITS -lohana
+FULL_CFLAGS   = $(BASE_CFLAGS)
+FULL_CPPFLAGS = $(BASE_CPPFLAGS)
+FULL_LDFLAGS  = $(LIBS1) $(LIBS2) $(BASE_LDFLAGS)
 
-# mana user commands and support functions ########################
-
+# pclient user commands and support functions ########################
 funcs = \
 $(SDIR)/init.$(ARCH).o \
@@ -43,4 +45,2 @@
 
 .PHONY: pclient
-
-include ../Makefile.Common
Index: /trunk/Ohana/src/opihi/pcontrol/Makefile
===================================================================
--- /trunk/Ohana/src/opihi/pcontrol/Makefile	(revision 11890)
+++ /trunk/Ohana/src/opihi/pcontrol/Makefile	(revision 11891)
@@ -1,5 +1,5 @@
-include ../../../Configure
 default: pcontrol
 
+include ../../../Configure
 HOME    =       $(ROOT)/src/opihi
 BIN     =       $(HOME)/bin
@@ -8,9 +8,12 @@
 SRC     =       $(HOME)/pcontrol
 DATA    =       $(DESTDATA)/pcontrol
+include ../Makefile.Common
 
-# link flags 
-LIBS1   =       -lkapa -lFITS -lohana $(LIBFLAGS)
-LIBS2   =       -lbasiccmd -lshell -ldata 
-LFLAGS  =       -L$(LIB) -L$(DESTLIB) $(LIBDIRS) $(LIBS2) $(LIBS1) 
+# programs may add their own internal requirements here
+LIBS1         = -lkapa -lFITS -lohana
+LIBS2         = -lbasiccmd -lshell -ldata 
+FULL_CFLAGS   = $(BASE_CFLAGS)
+FULL_CPPFLAGS = $(BASE_CPPFLAGS)
+FULL_LDFLAGS  = $(LIBS1) $(LIBS2) $(BASE_LDFLAGS)
 
 # to build the non-threaded version, remove -lpthread and comment out
@@ -18,5 +21,4 @@
 
 # pcontrol user commands and support functions ########################
-
 funcs = \
 $(SRC)/init.$(ARCH).o \
@@ -73,4 +75,2 @@
 
 .PHONY: pcontrol
-
-include ../Makefile.Common
