#
# Makefile for camera control program
#

COREOBJS = dsm.o calcstats.o info.o gps.o serial.o util.o sqmclient.o sock.o
COREINCS = -I.
CORELIBS = -lm

default:
	@echo " Choose an architecture/configuration: "
	@echo "----------------------------------------------------"
	@echo "                                                    "
	@echo "Full-feature builds:                                "
	@echo "linux           Linux 32-bit                        "
	@echo "linux-static    Linux 32-bit (to run on embedded/SBC)"
	@echo "macosx          MacOS X 32-bit                      "
	@echo "solaris         Solaris 32-bit                      "
	@echo "win32           Windows 32-bit                      "
	@echo "                                                    "
	@echo "Misc:                                               "
	@echo "clean           delete *.o, etc..                   "
	@echo "----------------------------------------------------"
	@echo "Type 'make <arch>' to build for an architecture listed above."

linux:
	$(MAKE) all \
	"CC  = cc" \
	"CXX = c++" \
	"CFLAGS   = -Wall -m32 -g $(COREINCS)" \
	"CXXFLAGS = -Wall -m32 -g $(COREINCS)" \
	"COPTO = -o" \
	"LFLAGS = $(MOSTLIBS) -lrt -lm"

linux-static:
	$(MAKE) all \
	"CC  = cc" \
	"CXX = c++" \
	"CFLAGS   = -Wall -m32 -g $(COREINCS)" \
	"CXXFLAGS = -Wall -m32 -g $(COREINCS)" \
	"COPTO = -o" \
	"LFLAGS = -static $(MOSTLIBS) -lrt -lm"

macosx:
	$(MAKE) all \
	"CC  = cc" \
	"CXX = c++" \
	"CFLAGS   = -Wall -g $(COREINCS)" \
	"CXXFLAGS = -Wall -g $(COREINCS)" \
	"COPTO = -o" \
	"LFLAGS = $(MOSTFWRK)"

solaris:
	$(MAKE) all \
	"CC  = cc" \
	"CXX = CC" \
	"CFLAGS   = -v -g $(COREINCS)" \
	"CXXFLAGS = -v -g $(COREINCS)" \
	"COPTO = -o" \
	"LFLAGS = $(MINLIBS) -lrt -lm"

win32:
	$(MAKE) dsmgpswin32 \
	"CC  = CL" \
	"CXX = CL" \
	"CFLAGS   = /nologo /O2  -DWIN32 $(COREINCS)" \
	"CXXFLAGS = /nologo /O2 /TP -DWIN32 $(COREINCS)" \
	"COPTO = /Fo" \
	"LD = LINK" \
	"LFLAGS = ws2_32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib comctl32.lib"

.c.o :
	$(CC) $(CFLAGS) -c $< $(COPTO)$@

.cpp.o :
	$(CXX) $(CXXFLAGS) -c $< $(COPTO)$@

.cxx.o :
	$(CXX) $(CXXFLAGS) -c $< $(COPTO)$@

all: dsmgps

dsmgps : $(COREOBJS) main.o
	$(CC) $(CFLAGS) -o dsmgps $(COREOBJS) main.o $(LFLAGS)

dsmgpswin32 : $(COREOBJS) main.o
	$(LD) $(COREOBJS) main.o /OUT:dsmgps.exe $(LFLAGS)

clean :
	rm -f *.o *.obj dsmgps dsmgps.exe dsmgpsgui.exe

distrib:
	@echo "Building /tmp/dsmgps`date '+%m%d%Y'`.tar.gz"
	rm -f /tmp/dsmgps`date '+%m%d%Y'`.tar
	rm -f /tmp/dsmgps`date '+%m%d%Y'`.tar.gz
	(cd ..; \
	tar -cf /tmp/dsmgps`date '+%m%d%Y'`.tar \
	dsmgps/Makefile \
	dsmgps/*.[ch] \
	dsmgps/cfitsio \
	dsmgps/fli/*.* \
	dsmgps/msvc \
	dsmgps/sbig \
	dsmgps/yr; \
	)
	gzip /tmp/dsmgps`date '+%m%d%Y'`.tar
	@echo "Distribution created."

