# rules for makepp for the "common" output build directories

# Some projects (the libraries) will use a pre-built copy instead of rebuilding
# from source if PREBUILT is defined.  Set PREBUILT to the directory where the
# pre-built copy exists; if a relative path is used, it is relative to the build
# directory (for example, mpp2/common/Debug/prebuilt if PREBUILT=prebuilt)
#
# Optionally, include this variable on the command line as follows:
#
# makepp PREBUILT=prebuilt top
#
# Or define as an environment variable
#
#PREBUILT=prebuilt
ifdef PREBUILT
perl { use File::Spec; $pbdir = File::Spec->rel2abs( $makefile->expand_variable('PREBUILT') ); print "** WARNING: Using prebuilt executables from $pbdir **\n" }
else
perl { print "** NOTE: Configured for full build from sources **\n" }
endif
# TOPLIBDIRS is the list of lib projects that should be built for "top" target
# (the released libraries)
TOPLIBDIRS= \
SMACIdl \
SMACFramework \
EventLib \
CryptoLib \
GPSListenerLib \
jsoncpp \
PayloadInterfaceLib \
PPPHostLib \
SV3RemotingLib

# TOPEXEDIRS is the list of executable projects that should be built for "top"
# target (released executables)
TOPEXEDIRS= \
ConnectionManager \
DataRecorder \
DemoSensor \
EventManager \
GPSListener \
GPSPlayback \
Logger \
LogListener \
LuaWrapper \
PayloadInterface \
PayloadManager \
PPPHost \
SeabirdGPCTD \
ServerExec \
SimpleSBDQueue \
timelimit2 \
VirtualRelay

#EncryptedStartup \
#OneTimeCommand \

# TOPRESULTS is the list of targets that are built for "top" (released
# targets)
TOPRESULTS := $(TOPLIBDIRS) $(TOPEXEDIRS)

# ALLLIBDIRS is the list of lib projects that should be built for "all" target
# (and which are cleaned by the "clean" target)
ALLLIBDIRS= \
$(TOPLIBDIRS)

# ALLEXEDIRS is the list of executable projects that should be built for "all"
# target (and which are cleaned by the "clean" target)
ALLEXEDIRS= \
$(TOPEXEDIRS)

# ALLRESULTS is the list of targets that are built for "all" and cleaned
# by "clean"
ALLRESULTS := lib$(ALLLIBDIRS).so $(ALLEXEDIRS)

# Expands dependencies so that the directory relies on the library name if used
$(phony $(foreach)) : lib$(foreach).so : foreach $(ALLLIBDIRS)

# the "all" is the default target and it makes all of the typical outputs
# (some test projects etc. can be omitted)
$(phony all): $(ALLRESULTS)

# the "top" is the target for released items (some test projects etc. can be omitted)
$(phony top): $(TOPRESULTS)

# the "cleanall" target implies "clean" but also cleans all of the "all"
# targets recursively
$(phony cleanall): clean $(TOP)/$(ALLLIBDIRS)/$(BUILDDIR)/cleanall $(TOP)/$(ALLEXEDIRS)/$(BUILDDIR)/cleanall

# the "clean" target removes build items for the "all" projects
$(phony clean):
	rm -f $(ALLRESULTS)

###################################################
################# SMACIdl Library ################# 
###################################################

SMACIDLMODULES := allDynSK allSK

ifdef PREBUILT
libSMACIdl.so: $(PREBUILT)/libSMACIdl.so
	cp -p $(PREBUILT)/libSMACIdl.so .
else
libSMACIdl.so: $(TOP)/SMACIdl/$(BUILDDIR)/$(SMACIDLMODULES).o
	$(LINKER) $(LFLAGSLIB) -o $(output) $(inputs)
#	$(LINKER) $(LFLAGSLIB) -o $(output) $(inputs) $(CORBALFLAGS)
endif

#########################################################
################# SMACFramework Library ################# 
#########################################################

SMACFRAMEWORKMODULES := \
LqrSMACAddressableMessageServiceBase \
LqrSMACAsynchronousProcessExecutor \
LqrSMACBackgroundThread \
LqrSMACBase64 \
LqrSMACBasicCmdOutputFormatter \
LqrSMACBooleanParser \
LqrSMACByteArray \
LqrSMACByteStream \
LqrSMACCmdLineParser \
LqrSMACCmdOutputFormatterAlias \
LqrSMACCmdOutputFormatterCF \
LqrSMACCmdOutputFormatter \
LqrSMACCmdOutputFormatter_TimestampValue \
LqrSMACCSVSample \
LqrSMACCSVSampleFileSet \
LqrSMACDetermineFileExtension \
LqrSMACDomainSocket \
LqrSMACDummyLogger \
LqrSMACEscapeStr \
LqrSMACException \
LqrSMACFileSet \
LqrSMACFileSetLogger \
LqrSMACFileSetLoggerSettings \
LqrSMACFileSetSettings \
LqrSMACFilterLogger \
LqrSMACFindFile \
LqrSMACFletcherSum \
LqrSMACGeodetic \
LqrSMACGetCmdInfo \
LqrSMACGetErrorDescription \
LqrSMACIdl \
LqrSMACIFileSetSettings \
LqrSMACIObjectBroker \
LqrSMACLatLon \
LqrSMACLatLon_Component \
LqrSMACLineMachine \
LqrSMACLoadSaveBoostXml \
LqrSMACLogger \
LqrSMACLogger_Locked \
LqrSMACMonotonic \
LqrSMACObjectBroker \
LqrSMACParserFormatter-ConfigItem \
LqrSMACParserFormatter-ConfigStream \
LqrSMACParserFormatter \
LqrSMACParserFormatter-interfaces \
LqrSMACPayloadDescription \
LqrSMACPayloadDescriptionList \
LqrSMACPipes \
LqrSMACPOpen2 \
LqrSMACPrintfBuffer \
LqrSMACProcessTree \
LqrSMACPseudoTerminalMaster \
LqrSMACQueue \
LqrSMACQueueWorkerBase \
LqrSMACReaderWriter \
LqrSMACSemaphore \
LqrSMACSerialListener \
LqrSMACSerialListenerSettings \
LqrSMACSerialPort \
LqrSMACSerialPortSettings \
LqrSMACSharedMemory \
LqrSMACStdOutLogger \
LqrSMACStdOutLoggerSettings \
LqrSMACSubseaStation \
LqrSMACSubseaStationCollection \
LqrSMACSysLogger \
LqrSMACTempFile \
LqrSMACTimeCounter \
LqrSMACTimer \
LqrSMACTimeRange \
LqrSMACTZTools \
LqrSMACUptime \
LqrSMACWaitableThreadSafeQueue \
LqrSMACXmlCmdOutputFormatter \
LqrSMACXmlDOM \
nsextend \
pugixml

SMACFRAMEWORKDEP := SMACIdl

ifdef PREBUILT
libSMACFramework.so: $(PREBUILT)/libSMACFramework.so lib$(SMACFRAMEWORKDEP).so
	cp -p $(PREBUILT)/libSMACFramework.so .
else
libSMACFramework.so: $(TOP)/SMACFramework/$(BUILDDIR)/$(SMACFRAMEWORKMODULES).o lib$(SMACFRAMEWORKDEP).so
	$(LINKER) $(LFLAGSLIB) -o $(output) $(TOP)/SMACFramework/$(BUILDDIR)/$(SMACFRAMEWORKMODULES).o

#	$(LINKER) $(LFLAGSLIB) -o $(output) $(TOP)/SMACFramework/$(BUILDDIR)/$(SMACFRAMEWORKMODULES).o -L. -l$(SMACFRAMEWORKDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(UTILFLAGS) $(LFLAGSSTD)
endif

####################################################
################# EventLib Library ################# 
####################################################

EVENTLIBMODULES := \
AlarmMessage \
AlarmReporter \
AlarmReporterSettings \
AlarmSettings \
AsynchronousCommandInvoker \
ChannelRequestEvent \
ChannelStateEvent \
DataSetEvent \
EPVFormatConfig \
EventBase \
EventPropertyValue \
EventSettings \
EventTransceiver \
EventTransceiver_Settings \
EventType \
FCCMessageEvent \
GPSSampleEvent \
PayloadManagerClient \
PayloadManagerClientSettings \
PayloadRegistrationEvent \
SBDPacketEvent \
SBDStatisticsEvent \
SendCommandCompleteEvent \
SensorControllerBaseCmdID \
SensorControllerExceptions \
SensorControllerLoadFileParsingContext \
SensorProgram \
SensorProgramSettings \
SensorProgramSettings_Version \
StringEvent \
TelemetryEventBase \
TelemetrySettingsChangedEvent

EVENTLIBGENMODULES := \
EventLibIDLDynSK \
EventLibIDLSK

ifdef PREBUILT
libEventLib.so: $(PREBUILT)/libEventLib.so
	cp -p $(PREBUILT)/libEventLib.so .
else
libEventLib.so: $(TOP)/EventLib/$(BUILDDIR)/$(EVENTLIBMODULES).o $(TOP)/EventLib/$(BUILDDIR)/$(EVENTLIBGENMODULES).o
	$(LINKER) $(LFLAGSLIB) -o $(output) $(TOP)/EventLib/$(BUILDDIR)/$(EVENTLIBMODULES).o $(TOP)/EventLib/$(BUILDDIR)/$(EVENTLIBGENMODULES).o
endif

###################################################
################# ADCP Executable ################# 
###################################################

ADCPMODULES := \
ADCPcomm \
ADCPEns \
ADCPEvent \
ADCPExportFormat \
ADCPmanager \
ADCPmath \
ADCPreceiver \
ADCPSensor \
ADCPSensorSettings \
VelRef

ADCPDEP := \
EventLib \
SV3RemotingLib \
jsoncpp \
SMACFramework \
SMACIdl

ADCP: $(TOP)/ADCP/$(BUILDDIR)/$(ADCPMODULES).o lib$(ADCPDEP).so
	$(LINKER) -o $(output) $(TOP)/ADCP/$(BUILDDIR)/$(ADCPMODULES).o -L. -l$(ADCPDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

#########################################################
################# Aquatracka Executable ################# 
#########################################################

AQMODULES := \
AquatCalibrationSettings \
AquatCommand \
AquatConcentrationCommand \
AquatController \
AquatControllerSettings \
AquatExceptions \
AquatGetconfigCommand \
AquatHeaderCommand \
AquatHeaderEvent \
AquatNonVerboseCommand \
AquatOutputCommand \
AquatPauseCommand \
AquatPowerCommand \
AquatProgram \
AquatProgramSettings \
AquatResumeCommand \
AquatSampleEvent \
AquatSelectExport \
AquatSetCalibRefCommand \
AquatSetCalibSerialCommand \
AquatSetCalibSigCommand \
AquatSetCalibTempCommand \
AquatStartCommand \
AquatStopCommand \
AquatTemperatureCommand \
AquatVerboseCommand \
AquatVersionCommand \
ExportCommand \
GPSSample \
LoopTest \
SelectCommand \
main

AQDEP := \
EventLib \
SV3RemotingLib \
jsoncpp \
SMACFramework \
SMACIdl

Aquatracka: $(TOP)/Aquatracka/$(BUILDDIR)/$(AQMODULES).o lib$(AQDEP).so
	$(LINKER) -o $(output) $(TOP)/Aquatracka/$(BUILDDIR)/$(AQMODULES).o -L. -l$(AQDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

###########################################################
################# BenthosModem Executable ################# 
###########################################################

BENTHMODULES := \
BenthosModemCommSM \
BenthosModemCommSMWithEvents \
BenthosModemController \
BenthosModemControllerSettings \
BenthosModemDataParser \
BenthosModemExceptions \
BenthosModemProgram \
BenthosModemProgramSettings \
BenthosModemRangeTelemetryEvent \
BenthosModemStrings \
main

BENTHDEP := \
EventLib \
SV3RemotingLib \
jsoncpp \
SMACFramework \
SMACIdl

BenthosModem: $(TOP)/BenthosModem/$(BUILDDIR)/$(BENTHMODULES).o lib$(BENTHDEP).so
	$(LINKER) -o $(output) $(TOP)/BenthosModem/$(BUILDDIR)/$(BENTHMODULES).o -L. -l$(BENTHDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

###################################################
################# busy Executable ################# 
###################################################

BUSYMODULES := \
main \
LqrSMACBackgroundThread \
LqrSMACByteStream \
LqrSMACCmdLineParser \
LqrSMACDomainSocket \
LqrSMACGetErrorDescription \
LqrSMACMonotonic \
LqrSMACPipes \
LqrSMACPOpen2 \
LqrSMACReaderWriter \
LqrSMACSemaphore \
LqrSMACTimeCounter \
LqrSMACUptime \
IPCConnect \
ProcInfo \
ProcInfoSet

busy: $(TOP)/busy/$(BUILDDIR)/$(BUSYMODULES).o
	$(LINKER) -o $(output) $(TOP)/busy/$(BUILDDIR)/$(BUSYMODULES).o -L. $(BOOSTLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

################################################################
################# ConnectionManager Executable ################# 
################################################################

CONNMGRMODULES := \
ConnectionManagerChannel \
ConnectionManagerChannelSettings \
ConnectionManagerProgram \
ConnectionManagerProgramSettings \
ConnectionManagerRUDICS \
main

CONNMGRDEP := \
PayloadInterfaceLib \
PPPHostLib \
EventLib \
SV3RemotingLib \
jsoncpp \
SMACFramework \
SMACIdl

ConnectionManager: $(TOP)/ConnectionManager/$(BUILDDIR)/$(CONNMGRMODULES).o lib$(CONNMGRDEP).so
	$(LINKER) -o $(output) $(TOP)/ConnectionManager/$(BUILDDIR)/$(CONNMGRMODULES).o -L. -l$(CONNMGRDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

#####################################################
################# CryptoLib Library ################# 
#####################################################

CRYPTOLIBMODULES := \
CryptoProcessor

ifdef PREBUILT
libCryptoLib.so: $(PREBUILT)/libCryptoLib.so
	cp -p $(PREBUILT)/libCryptoLib.so .
else
libCryptoLib.so: $(TOP)/CryptoLib/$(BUILDDIR)/$(CRYPTOLIBMODULES).o
	$(LINKER) $(LFLAGSLIB) -o $(output) $(TOP)/CryptoLib/$(BUILDDIR)/$(CRYPTOLIBMODULES).o
endif

###########################################################
################# DataRecorder Executable ################# 
###########################################################

DATARECMODULES := \
DataRecorder \
DataRecorderHandler \
DataRecorderSettings \
main

DATARECDEP := \
PayloadInterfaceLib \
EventLib \
SV3RemotingLib \
jsoncpp \
SMACFramework \
SMACIdl

DataRecorder: $(TOP)/DataRecorder/$(BUILDDIR)/$(DATARECMODULES).o lib$(DATARECDEP).so
	$(LINKER) -o $(output) $(TOP)/DataRecorder/$(BUILDDIR)/$(DATARECMODULES).o -L. -l$(DATARECDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

#########################################################
################# DemoSensor Exectuable ################# 
#########################################################

DEMOSENSORMODULES := \
DemoSensor \
DemoSensorSettings \
main

DEMOSENSORDEP := \
EventLib \
SV3RemotingLib \
jsoncpp \
SMACFramework \
SMACIdl

DemoSensor: $(TOP)/DemoSensor/$(BUILDDIR)/$(DEMOSENSORMODULES).o lib$(DEMOSENSORDEP).so
	$(LINKER) -o $(output) $(TOP)/DemoSensor/$(BUILDDIR)/$(DEMOSENSORMODULES).o -L. -l$(DEMOSENSORDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

###############################################################
################# EncryptedStartup Executable ################# 
###############################################################

ENCSTARTMODULES := \
EncryptedPayloadController \
EncryptedStartupSettings \
main \
LqrSMACBackgroundThread \
LqrSMACByteArray \
LqrSMACByteStream \
LqrSMACCmdLineParser \
LqrSMACDomainSocket \
LqrSMACDummyLogger \
LqrSMACException \
LqrSMACGetErrorDescription \
LqrSMACLoadSaveBoostXml \
LqrSMACLogger \
LqrSMACLogger_Locked \
LqrSMACPipes \
LqrSMACPOpen2 \
LqrSMACPrintfBuffer \
LqrSMACQueue \
LqrSMACReaderWriter \
LqrSMACSemaphore \
LqrSMACSerialPort \
LqrSMACSerialPortSettings \
LqrSMACStdOutLogger \
LqrSMACStdOutLoggerSettings \
LqrSMACTimeCounter \
LqrSMACUptime \
nsextend \
CRC16 \
DoThrow \
FCCMessage_CommHeaderMessageGeneric \
FCCMessage_Utilities \
FCCMessage \
HDLCParser \
HDLCPort \
LatLon_Components \
LatLon \
PayloadMessage_Header \
PayloadMessage \
PayloadPortSlave_ThreadSafeMap \
PayloadPortSlave \
PayloadProtocol

EncryptedStartup: $(TOP)/EncryptedStartup/$(BUILDDIR)/$(ENCSTARTMODULES).o
	$(LINKER) -o $(output) $(TOP)/EncryptedStartup/$(BUILDDIR)/$(ENCSTARTMODULES).o -L. $(BOOSTLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

###########################################################
################# EventManager Executable ################# 
###########################################################

EVENTMANAGERMODULES := \
EventManager \
EventManagerImpl \
EventManagerSettings

EVENTMANAGERDEP := \
EventLib \
SV3RemotingLib \
jsoncpp \
SMACFramework \
SMACIdl

EventManager: $(TOP)/EventManager/$(BUILDDIR)/$(EVENTMANAGERMODULES).o lib$(EVENTMANAGERDEP).so
	$(LINKER) -o $(output) $(TOP)/EventManager/$(BUILDDIR)/$(EVENTMANAGERMODULES).o -L. -l$(EVENTMANAGERDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

##########################################################
################# GPSListener Executable ################# 
##########################################################

GPSLISTENEREMODULES := \
main

GPSLISTENEREDEP := \
GPSListenerLib \
EventLib \
SV3RemotingLib \
jsoncpp \
SMACFramework \
SMACIdl

GPSListener: $(TOP)/GPSListener/$(BUILDDIR)/$(GPSLISTENEREMODULES).o lib$(GPSLISTENEREDEP).so
	$(LINKER) -o $(output) $(TOP)/GPSListener/$(BUILDDIR)/$(GPSLISTENEREMODULES).o -L. -l$(GPSLISTENEREDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

##########################################################
################# GPSListenerLib Library ################# 
##########################################################

GPSLISTENERLIBMODULES := \
AwaitPPS \
GPSEventSource \
GPSEventSource_Simulation \
GPSListenerPersistentSettings \
GPSListenerProgram \
GPSListenerSettings \
GPSListenerTestProgram \
NMEAParser

GPSLISTENERLIBDEP := \
EventLib \
SV3RemotingLib \
jsoncpp \
SMACFramework \
SMACIdl

ifdef PREBUILT
libGPSListenerLib.so: $(PREBUILT)/libGPSListenerLib.so lib$(GPSLISTENERLIBDEP).so
	cp -p $(PREBUILT)/libGPSListenerLib.so .
else
libGPSListenerLib.so: $(TOP)/GPSListenerLib/$(BUILDDIR)/$(GPSLISTENERLIBMODULES).o lib$(GPSLISTENERLIBDEP).so
	$(LINKER) $(LFLAGSLIB) -o $(output) $(TOP)/GPSListenerLib/$(BUILDDIR)/$(GPSLISTENERLIBMODULES).o

#	$(LINKER) $(LFLAGSLIB) -o $(output) $(TOP)/GPSListenerLib/$(BUILDDIR)/$(GPSLISTENERLIBMODULES).o -L. -l$(GPSLISTENERLIBDEP) $(BOOSTLFLAGS)

endif

##########################################################
################# GPSPlayback Executable ################# 
##########################################################

GPSPBMODULES := \
main

GPSPBDEP := \
GPSListenerLib \
EventLib \
SV3RemotingLib \
jsoncpp \
SMACFramework \
SMACIdl

GPSPlayback: $(TOP)/GPSPlayback/$(BUILDDIR)/$(GPSPBMODULES).o lib$(GPSPBDEP).so
	$(LINKER) -o $(output) $(TOP)/GPSPlayback/$(BUILDDIR)/$(GPSPBMODULES).o -L. -l$(GPSPBDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

####################################################
################# jsoncpp Library ##################
####################################################

JSONCPPMODULES := \
json_reader \
json_value \
json_writer

ifdef PREBUILT
libjsoncpp.so: $(PREBUILT)/libjsoncpp.so
	cp -p $(PREBUILT)/libjsoncpp.so .
else
libjsoncpp.so: $(TOP)/jsoncpp/$(BUILDDIR)/$(JSONCPPMODULES).o
	$(LINKER) $(LFLAGSLIB) -o $(output) $(TOP)/jsoncpp/$(BUILDDIR)/$(JSONCPPMODULES).o
endif

#####################################################
################# Logger Executable ################# 
#####################################################

LOGGERMODULES := \
ArgumentParser \
main

LOGGERDEP := \
SMACFramework \
SMACIdl

Logger: $(TOP)/Logger/$(BUILDDIR)/$(LOGGERMODULES).o lib$(LOGGERDEP).so
	$(LINKER) -o $(output) $(TOP)/Logger/$(BUILDDIR)/$(LOGGERMODULES).o -L. -l$(LOGGERDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

##########################################################
################# LogListener Executable ################# 
##########################################################

LOGLISTENERMODULES := \
LogListenerProgram \
LogListenerProgramSettings \
main

LOGLISTENERDEP := \
EventLib \
SV3RemotingLib \
jsoncpp \
SMACFramework \
SMACIdl

LogListener: $(TOP)/LogListener/$(BUILDDIR)/$(LOGLISTENERMODULES).o lib$(LOGLISTENERDEP).so
	$(LINKER) -o $(output) $(TOP)/LogListener/$(BUILDDIR)/$(LOGLISTENERMODULES).o -L. -l$(LOGLISTENERDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

#########################################################
################# LuaWrapper Executable ################# 
#########################################################

LWMODULES := \
LWAsynchScriptContextLua \
LWCloseLuaInternalCmd \
LWController \
LWControllerLua \
LWControllerSettings \
LWForwardAnyEventReceivedInternalCmd \
LWForwardLocationInternalCmd \
LWForwardSerialDataInternalCmd \
LWForwardTimeoutInternalCmd \
LWInvokeCmd \
LWInvokeLuaInternalCmd \
LWListCmd \
LWLoadLuaCmd \
LWOpenLuaInternalCmd \
LWProgram \
LWProgramSettings \
LWSerialPortLua \
LWSetTraceOptionsInternalCmd \
LWTimerLua \
LWUnloadLuaCmd \
LqrSMACLuaEventConversion \
LqrSMACLuaInstance \
main

LWDEP := \
EventLib \
SV3RemotingLib \
jsoncpp \
SMACFramework \
SMACIdl

LuaWrapper: $(TOP)/LuaWrapper/$(BUILDDIR)/$(LWMODULES).o lib$(LWDEP).so
	$(LINKER) -o $(output) $(TOP)/LuaWrapper/$(BUILDDIR)/$(LWMODULES).o -L. -l$(LWDEP) -l$(LUALIBS) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

#############################################################
################# OneTimeCommand Executable ################# 
#############################################################

ONETIMECOMMANDMODULES := \
OneTimeCommandController \
OneTimeCommandSettings \
main \
LqrSMACByteArray \
LqrSMACDummyLogger \
LqrSMACException \
LqrSMACGetErrorDescription \
LqrSMACLoadSaveBoostXml \
LqrSMACLogger_Locked \
LqrSMACLogger \
LqrSMACPipes \
LqrSMACPOpen2 \
LqrSMACPrintfBuffer \
LqrSMACQueue \
LqrSMACReaderWriter \
LqrSMACSemaphore \
LqrSMACSerialPort \
LqrSMACSerialPortSettings \
LqrSMACSharedMemory \
LqrSMACStdOutLogger \
LqrSMACStdOutLoggerSettings \
LqrSMACTimeCounter \
LqrSMACUptime \
nsextend \
CRC16 \
DoThrow \
FCCMessage_CommHeaderMessageGeneric \
FCCMessage_Utilities \
FCCMessage \
HDLCParser \
HDLCPort \
LatLon_Components \
LatLon \
PayloadMessage_Header \
PayloadMessage \
PayloadPortSlave_ThreadSafeMap \
PayloadPortSlave \
PayloadProtocol

OneTimeCommand: $(TOP)/OneTimeCommand/$(BUILDDIR)/$(ONETIMECOMMANDMODULES).o
	$(LINKER) -o $(output) $(TOP)/OneTimeCommand/$(BUILDDIR)/$(ONETIMECOMMANDMODULES).o -L. $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

###############################################################
################# PayloadInterface Executable ################# 
###############################################################

PAYLOADINTERFACEMODULES := \
PayloadInterface

PAYLOADINTERFACEDEP := \
PayloadInterfaceLib \
EventLib \
SMACFramework \
SMACIdl \
SV3RemotingLib \
jsoncpp

PayloadInterface: $(TOP)/PayloadInterface/$(BUILDDIR)/$(PAYLOADINTERFACEMODULES).o lib$(PAYLOADINTERFACEDEP).so
	$(LINKER) -o $(output) $(TOP)/PayloadInterface/$(BUILDDIR)/$(PAYLOADINTERFACEMODULES).o -L. -l$(PAYLOADINTERFACEDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

###############################################################
################# PayloadInterfaceLib Library ################# 
###############################################################

PAYLOADINTERFACELIBMODULES := \
AddressedPacketEvent \
AlarmSubsystem \
CommonSendCommand \
CRC16 \
DoThrow \
FCCMessage_CommHeaderMessageGeneric \
FCCMessage \
FCCMessage_Utilities \
HDLCParser \
HDLCPort \
LatLon_Components \
LatLon \
LocalTransactionCounter \
md5 \
MD5-2 \
PayloadAddressableMessageService \
PayloadAddressableMessageServiceSettings \
PayloadInterfaceController_Config \
PayloadInterfaceController \
PayloadInterfaceSettings \
PayloadMessage \
PayloadMessage_Header \
PayloadPortSlave \
PayloadPortSlave_ThreadSafeMap \
PayloadProtocol \
ProxySC \
ProxySCDictionary \
ProxySC_TransactionInfo \
SCLookup \
StorageController_Config \
StorageController \
StorageController_FileState \
SV3NetChannel \
SV3NetInterface \
SV3NetInterface_PollingLoop \
SV3NetInterface_RegistrationLoop \
SV3NetInterfaceSettings \
SV3RemoteController \
TelemetryBuffer \
TelemetryFieldLibrary \
TelemetryFieldList \
TelemetryPublisher \
TelemetryPublisherKey \
TelemetryReport \
TelemetryReportKey \
TelemetryReportParameters \
TelemetrySubsystem

PAYLOADINTERFACELIBDEP := \
SMACIdl \
SMACFramework \
EventLib \
SV3RemotingLib \
jsoncpp

ifdef PREBUILT
libPayloadInterfaceLib.so: $(PREBUILT)/libPayloadInterfaceLib.so lib$(PAYLOADINTERFACELIBDEP).so
	cp -p $(PREBUILT)/libPayloadInterfaceLib.so .
else
libPayloadInterfaceLib.so: $(TOP)/PayloadInterfaceLib/$(BUILDDIR)/$(PAYLOADINTERFACELIBMODULES).o lib$(PAYLOADINTERFACELIBDEP).so
	$(LINKER) $(LFLAGSLIB) -o $(output) $(TOP)/PayloadInterfaceLib/$(BUILDDIR)/$(PAYLOADINTERFACELIBMODULES).o
endif

#############################################################
################# PayloadManager Executable ################# 
#############################################################

PAYLOADMANAGERMODULES := \
main \
PayloadManager \
PayloadManagerSettings

PAYLOADMANAGERDEP := \
EventLib \
SV3RemotingLib \
jsoncpp \
SMACFramework \
SMACIdl

PayloadManager: $(TOP)/PayloadManager/$(BUILDDIR)/$(PAYLOADMANAGERMODULES).o lib$(PAYLOADMANAGERDEP).so
	$(LINKER) -o $(output) $(TOP)/PayloadManager/$(BUILDDIR)/$(PAYLOADMANAGERMODULES).o -L. -l$(PAYLOADMANAGERDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

######################################################
################# PPPHost Executable ################# 
######################################################

PPPHOSTMODULES := \
PPPHostProgram \
PPPHostProgramSettings \
main

PPPHOSTDEP := \
PayloadInterfaceLib  \
PPPHostLib \
EventLib \
SV3RemotingLib \
jsoncpp \
SMACFramework \
SMACIdl

PPPHost: $(TOP)/PPPHost/$(BUILDDIR)/$(PPPHOSTMODULES).o lib$(PPPHOSTDEP).so
	$(LINKER) -o $(output) $(TOP)/PPPHost/$(BUILDDIR)/$(PPPHOSTMODULES).o -L. -l$(PPPHOSTDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

######################################################
################# PPPHostLib Library ################# 
######################################################

PPPHOSTLIBMODULES := \
PPPHost \
PPPHostSettings \
SBDModem \
SBDModemSettings \
SCPExecutor \
SCPExecutorSettings

ifdef PREBUILT
libPPPHostLib.so: $(PREBUILT)/libPPPHostLib.so
	cp -p $(PREBUILT)/libPPPHostLib.so .
else
libPPPHostLib.so: $(TOP)/PPPHostLib/$(BUILDDIR)/$(PPPHOSTLIBMODULES).o
	$(LINKER) $(LFLAGSLIB) -o $(output) $(TOP)/PPPHostLib/$(BUILDDIR)/$(PPPHOSTLIBMODULES).o
endif

###########################################################
################# SeabirdGPCTD Executable ################# 
###########################################################

SEABIRDGPCTDMODULES := \
main \
SBGPCTDController \
SBGPCTDControllerPersistSettings \
SBGPCTDControllerSettings \
SBGPCTDProgram \
SBGPCTDProgramSettings \
SBGPCTDSampleEvent \
SBGPCTDSensor \
SBGPCTDSensorSettings \
SBGPCTDSensor_ConfigData \
SBGPCTDSensor_HardwareData \
SBGPCTDSensor_Header \
SBGPCTDSensor_Sample

SEABIRDGPCTDLIBDEP := \
SMACFramework \
EventLib \
SMACIdl \
SV3RemotingLib \
jsoncpp

SeabirdGPCTD: $(TOP)/SeabirdGPCTD/$(BUILDDIR)/$(SEABIRDGPCTDMODULES).o lib$(SEABIRDGPCTDLIBDEP).so
	$(LINKER) -o $(output) $(TOP)/SeabirdGPCTD/$(BUILDDIR)/$(SEABIRDGPCTDMODULES).o -L. -l$(SEABIRDGPCTDLIBDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

#########################################################
################# ServerExec Executable ################# 
#########################################################

SERVEREXECEMODULES := \
main \
ServerExec \
ServerExecSettings

SERVEREXECEDEP := \
EventLib \
SV3RemotingLib \
jsoncpp \
PayloadInterfaceLib \
SMACFramework \
SMACIdl \
SV3RemotingLib \
jsoncpp

ServerExec: $(TOP)/ServerExec/$(BUILDDIR)/$(SERVEREXECEMODULES).o lib$(SERVEREXECEDEP).so
	$(LINKER) -o $(output) $(TOP)/ServerExec/$(BUILDDIR)/$(SERVEREXECEMODULES).o -L. -l$(SERVEREXECEDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

#############################################################
################# SimpleSBDQueue Executable #################
#############################################################

SIMPLESBDQUEUEMODULES := \
main \
SSQCommunicator \
SSQCommunicatorSettings \
SSQController \
SSQControllerSettings \
SSQEnqueueCmd \
SSQProgram \
SSQProgramSettings \
SSQStartCmd \
SSQStopCmd

SIMPLESBDQUEUEDEP := \
PPPHostLib \
EventLib \
SV3RemotingLib \
jsoncpp \
SMACFramework \
SMACIdl

SimpleSBDQueue: $(TOP)/SimpleSBDQueue/$(BUILDDIR)/$(SIMPLESBDQUEUEMODULES).o lib$(SIMPLESBDQUEUEDEP).so
        $(LINKER) -o $(output) $(TOP)/SimpleSBDQueue/$(BUILDDIR)/$(SIMPLESBDQUEUEMODULES).o -L. -l$(SIMPLESBDQUEUEDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)


##########################################################
################# SV3RemotingLib Library ################# 
##########################################################

SV3REMOTINGLIBMODULES := \
CurlUtils \
RegulusREST

SV3REMOTINGLIBDEP := jsoncpp SMACFramework SMACIdl

ifdef PREBUILT
libSV3RemotingLib.so: $(PREBUILT)/libSV3RemotingLib.so lib$(SV3REMOTINGLIBDEP).so
	cp -p $(PREBUILT)/libSV3RemotingLib.so .
else
libSV3RemotingLib.so: $(TOP)/SV3RemotingLib/$(BUILDDIR)/$(SV3REMOTINGLIBMODULES).o lib$(SV3REMOTINGLIBDEP).so
	$(LINKER) $(LFLAGSLIB) -o $(output) $(TOP)/SV3RemotingLib/$(BUILDDIR)/$(SV3REMOTINGLIBMODULES).o
endif

#############################################################
################# SonardyneModem Executable #################
#############################################################

SONARDYNEMODEMMODULES := \
main

SONARDYNEMODEMDEP := \
EventLib \
SV3RemotingLib \
jsoncpp \
SMACFramework \
SMACIdl

SonardyneModem: $(TOP)/SonardyneModem/$(BUILDDIR)/$(SONARDYNEMODEMMODULES).o lib$(SONARDYNEMODEMDEP).so
        $(LINKER) -o $(output) $(TOP)/SonardyneModem/$(BUILDDIR)/$(SONARDYNEMODEMMODULES).o -L. -l$(SONARDYNEMODEMDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

#################################################################
################# SonardyneSimulator Executable ################# 
#################################################################

SONARDYNESIMULATORMODULES := \
main

SONARDYNESIMULATORDEP := \
SMACFramework \
SMACIdl

SonardyneSimulator: $(TOP)/SonardyneSimulator/$(BUILDDIR)/$(SONARDYNESIMULATORMODULES).o lib$(SONARDYNESIMULATORDEP).so
	$(LINKER) -o $(output) $(TOP)/SonardyneSimulator/$(BUILDDIR)/$(SONARDYNESIMULATORMODULES).o -L. -l$(SONARDYNESIMULATORDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

###########################################################
################# TelnetSerial Executable #################
###########################################################

TELNETSERIALMODULES := \
main

TELNETSERIALDEP := \
SMACFramework \
SMACIdl

TelnetSerial: $(TOP)/TelnetSerial/$(BUILDDIR)/$(TELNETSERIALMODULES).o lib$(TELNETSERIALDEP).so
        $(LINKER) -o $(output) $(TOP)/TelnetSerial/$(BUILDDIR)/$(TELNETSERIALMODULES).o -L. -l$(TELNETSERIALDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)


#########################################################
################# timelimit2 Executable ################# 
#########################################################

TL2MODULES := \
main \
LqrSMACAsynchronousProcessExecutor \
LqrSMACGetErrorDescription \
LqrSMACLoadSaveBoostXml \
LqrSMACLogger \
LqrSMACPipes \
LqrSMACPrintfBuffer \
LqrSMACProcessTree \
LqrSMACSemaphore \
LqrSMACStdOutLogger \
LqrSMACStdOutLoggerSettings \
LqrSMACUptime \
nsextend

timelimit2: $(TOP)/timelimit2/$(BUILDDIR)/$(TL2MODULES).o
	$(LINKER) -o $(output) $(TOP)/timelimit2/$(BUILDDIR)/$(TL2MODULES).o -L. $(BOOSTLFLAGS) $(UTILFLAGS) $(LFLAGSSTD)

###########################################################
################# VirtualRelay Executable ################# 
###########################################################

VIRTUALRELAYMODULES := \
VirtualRelayController \
VirtualRelayControllerSettings \
VirtualRelayCryptoProcessor \
VirtualRelayMessage \
VirtualRelayMessageManager \
VirtualRelayMessageManagerSettings \
VirtualRelayProgram \
VirtualRelayProgramSettings \
main

VIRTUALRELAYDEP := \
CryptoLib \
PayloadInterfaceLib \
EventLib \
SMACFramework \
SMACIdl \
SV3RemotingLib \
jsoncpp

VirtualRelay: $(TOP)/VirtualRelay/$(BUILDDIR)/$(VIRTUALRELAYMODULES).o lib$(VIRTUALRELAYDEP).so
	$(LINKER) -o $(output) $(TOP)/VirtualRelay/$(BUILDDIR)/$(VIRTUALRELAYMODULES).o -L. -l$(VIRTUALRELAYDEP) $(BOOSTLFLAGS) $(CORBALFLAGS) $(CURLLFLAGS) -l$(CRYPTOLIBS) $(UTILFLAGS) $(LFLAGSSTD)

###############
# End of File #
###############
