# AUTHOR: Michael Wagner
# CREATED: Aug 19, 1999
# DESCRIPTION: Makefile for the libarmSensor.a library. 

INSTALL_DIR = $(NOMAD_HOME)

CC = g++
CFLAGS = -g
AR = ar
ARFLAGS = r

DEFINES = -DARM_NO_WRIST #                    Comment out when wrist works
DEFINES += -DARM_NO_ELECTRONICS_CONTROLLER  # Commend out when meteorite is connected to controller
DEFINES += -DRED_TEST # Comment out to do normal segmentation
DEFINES += -DNO_JOINT_4 #DNO_JOINT_3 -DNO_JOINT_4 #Coment out when JOINT3 and JOINT4 are available
ARCH = `uname`

INCLUDES = -I$(INSTALL_DIR)/include \
	   -I$(NDDSHOME)/include/unix \
           -I$(NDDSHOME)/include/share \
	   -I/usr/local/ptu-cpi/include \
	   -I/usr/local/pxc/pxc200

LIBS =  -L$(NOMAD_HOME)/lib/$(ARCH) \
	-lFrameGrabber  -lacqHiResDriver \
        -lppm -lDatabaseNdds -lDatabase -lLensController -lTelemetryNdds -lSAS_Config -lMetalDetector -lSpectrometer -lTeleopNdds \
        -L$(NDDSHOME)/lib/$(ARCH) \
        -lndds -lutilsip -lutilsxx -lm -lpthread


MODULE = armSensor

SRCS = armSensor.cpp r3Vector.cpp r3Line.cpp ImageScanner.cpp JointLimit.cpp ElectronicsInterface.cpp MeteoriteArmController.cpp PotLookUpTable.cpp armCamImageScanner.cpp armSensorTelemetryThread.cpp

ARCHIVE = lib$(MODULE).a

all:: $(ARCHIVE) PotLookupTester ArmTestBench InterfaceTest ArmControllerTest

%.o: %.cpp %.h
	$(CC) $(CFLAGS) -c $<  $(INCLUDES) $(DEFINES)

install: all
	cp $(ARCHIVE)               $(INSTALL_DIR)/lib/`uname`/.
	cp $(MODULE).h              $(INSTALL_DIR)/include/.
	cp $(MODULE)Def.h           $(INSTALL_DIR)/include/.
	cp ChrisDefaultInclude.h    $(INSTALL_DIR)/include/.
	cp ElectronicsInterface.h   $(INSTALL_DIR)/include/.
	cp ImageScanner.h           $(INSTALL_DIR)/include/.
	cp JointLimit.h             $(INSTALL_DIR)/include/.
	cp MeteoriteArmController.h $(INSTALL_DIR)/include/.
	cp r3Line.h                 $(INSTALL_DIR)/include/.
	cp r3Vector.h               $(INSTALL_DIR)/include/.
	cp PotLookUpTable.h               $(INSTALL_DIR)/include/.
	cp armSensorTelemetryThread.h	$(INSTALL_DIR)/include/.

$(ARCHIVE): $(SRCS:.cpp=.o)
	$(AR) $(ARFLAGS) $(ARCHIVE) $(SRCS:.cpp=.o)

armCamImageScanner: armCamImageScanner.cpp
	$(CC) $(CFLAGS) $(INCLUDES) armCamImageScanner.cpp -o armCamImageScanner $(LIBS) -DMAIN r3Vector.o ImageScanner.o -DRED_TEST

PotLookupTester: PotLookupTester.cpp PotLookUpTable.o
	$(CC) $(CFLAGS) $(INCLUDES) PotLookupTester.cpp -o PotLookupTester PotLookUpTable.o ElectronicsInterface.o /usr/local/ptu-cpi/linux/obj/linuxser.o -UARM_PUBLISH_TELEMETRY

ArmTestBench: $(SRCS:.cpp=.o) ArmTestBench.cpp ElectronicsInterface.cpp PotLookUpTable.cpp 
	$(CC) $(CFLAGS) $(INCLUDES) -o ArmTestBench ArmTestBench.cpp $(SRCS:.cpp=.o) $(LIBS) -UARM_PUBLISH_TELEMETRY

InterfaceTest: InterfaceTest.cpp ElectronicsInterface.cpp MeteoriteArmController.cpp
	$(CC) $(CFLAGS) $(INCLUDES) -o InterfaceTest InterfaceTest.cpp ElectronicsInterface.cpp MeteoriteArmController.cpp /usr/local/ptu-cpi/linux/obj/linuxser.o \
	r3Vector.o r3Line.o JointLimit.o PotLookUpTable.o $(LIBS) -UARM_PUBLISH_TELEMETRY

ArmControllerTest: ArmControllerTest.cpp ElectronicsInterface.cpp MeteoriteArmController.cpp PotLookUpTable.cpp
	$(CC) $(CFLAGS) $(INCLUDES) -o ArmControllerTest ArmControllerTest.cpp ElectronicsInterface.cpp \
 	MeteoriteArmController.cpp /usr/local/ptu-cpi/linux/obj/linuxser.o r3Vector.o r3Line.o JointLimit.o PotLookUpTable.o \
	$(LIBS) -UARM_PUBLISH_TELEMETRY

clean:
	/bin/rm -f $(SRCS:.cpp=.o) core $(ARCHIVE) 

realclean:
	/bin/rm -f $(SRCS:.cpp=.o) core $(ARCHIVE) armCamImageScanner PotLookupTester ArmTestBench InterfaceTest ArmControllerTest

