Skip to content
Snippets Groups Projects
Code owners
Assign users and groups as approvers for specific file changes. Learn more.
Makefile 12.69 KiB
TOP=../..

include $(TOP)/configure/CONFIG
#----------------------------------------
#  ADD MACRO DEFINITIONS AFTER THIS LINE
#=============================

# For Kate Feng's implementation of devScaler.c, which uses Till
# Straumann's basicIoOps.h to bridge any mismatch between endianness
# of Joerger scaler hardware and endianness of processor.
#USR_CFLAGS += -DHAS_IOOPS_H

#=============================
# build an ioc application

PROD_IOC = xxx

# Note that the order in which .dbd files and libraries are added to a list
# variable is important.  For .dbd files, things must be defined before they
# are referenced by a later .dbd file.  For libraries, things must be referenced
# before they are searched for; otherwise they won't be included.

# Custom stuff in development

##################################################################
# First, define xxx_Common_DBD and xxx_Common_LIBS from the modules
# defined in RELEASE
##################################################################
DBD += xxx_Common.dbd
xxx_Common_DBD += base.dbd

#ifdef TDS3000
#	xxx_Common_DBD += devTDS3000.dbd
#	xxx_Common_LIBS := devTDS3000 $(xxx_Common_LIBS)
#endif

#ifdef CAPUTLOG
#	xxx_Common_DBD += caPutLog.dbd
#	xxx_Common_LIBS := caPutLog $(xxx_Common_LIBS)
#endif

ifdef CAPUTRECORDER
	xxx_Common_DBD += caputRecorder.dbd
	xxx_Common_LIBS := caputRecorder $(xxx_Common_LIBS)
endif

ifdef SNCSEQ
	ifeq (seq-2-1, $(findstring seq-2-1, $(SNCSEQ)))
		xxx_Common_DBD += devSequencer.dbd
		xxx_Common_LIBS := seqDev seq pv $(xxx_Common_LIBS)
	else ifeq (seq-2.1, $(findstring seq-2.1, $(SNCSEQ)))
		xxx_Common_DBD += devSequencer.dbd
		xxx_Common_LIBS := seqDev seq pv $(xxx_Common_LIBS)
	else
		# seq 2.2.
		xxx_Common_LIBS := seq pv $(xxx_Common_LIBS)
	endif
endif

ifdef ASYN
	xxx_Common_DBD += asyn.dbd drvAsynSerialPort.dbd
	xxx_Common_DBD += drvAsynIPPort.dbd drvVxi11.dbd devGpib.dbd
	xxx_Common_LIBS := asyn $(xxx_Common_LIBS)
endif

ifdef STD
	xxx_Common_DBD += stdSupport.dbd
	xxx_Common_LIBS := std $(xxx_Common_LIBS)
endif
ifdef CALC
	xxx_Common_DBD += calcSupport.dbd
	xxx_Common_LIBS := calc $(xxx_Common_LIBS)
endif

ifdef BUSY
	xxx_Common_DBD += busySupport.dbd
	xxx_Common_LIBS := busy $(xxx_Common_LIBS)
endif

ifdef SSCAN
	xxx_Common_DBD += sscanSupport.dbd
	xxx_Common_LIBS := sscan $(xxx_Common_LIBS)
	ifdef SNCSEQ
		xxx_Common_DBD += sscanProgressSupport.dbd
		xxx_Common_LIBS := scanProgress $(xxx_Common_LIBS)
	endif
endif

ifdef AUTOSAVE
	xxx_Common_DBD += asSupport.dbd
	xxx_Common_LIBS := autosave $(xxx_Common_LIBS)
endif

ifdef OPTICS
	xxx_Common_DBD += opticsSupport.dbd
	xxx_Common_LIBS := optics $(xxx_Common_LIBS)
endif

ifdef MCA
	xxx_Common_DBD += mcaSupport.dbd
	xxx_Common_LIBS := mca $(xxx_Common_LIBS)
endif

ifdef IP
	xxx_Common_DBD += ipSupport.dbd
	xxx_Common_LIBS := ip $(xxx_Common_LIBS)
endif

ifdef MODBUS
	xxx_Common_DBD += modbusSupport.dbd
	xxx_Common_LIBS := modbus $(xxx_Common_LIBS)
endif

ifdef MOTOR
	xxx_Common_DBD += motorSupport.dbd devAcsMotor.dbd devAerotech.dbd
	xxx_Common_DBD += devAttocube.dbd devFaulhaberMotor.dbd devImsMotor.dbd
	xxx_Common_DBD += devKohzuMotor.dbd devMclennanMotor.dbd devMicos.dbd
	xxx_Common_DBD += devMicroMo.dbd devNewFocus.dbd devNewport.dbd
  ifdef SNCSEQ
	xxx_Common_DBD += devAerotechSeq.dbd devNewportSeq.dbd
  endif
	xxx_Common_DBD += devOriel.dbd devPC6K.dbd devPIJena.dbd devPIMotor.dbd
	xxx_Common_DBD += devSPiiPlus.dbd devSmartMotorMotor.dbd devSoftMotor.dbd
	xxx_Common_DBD += devThorLabs.dbd motorSimSupport.dbd

	xxx_Common_LIBS := motor $(xxx_Common_LIBS)
	xxx_Common_LIBS := Acs acsTech80 Aerotech Attocube Faulhaber Ims KohzuMotor $(xxx_Common_LIBS)
	xxx_Common_LIBS := Mclennan Micos MicroMo NewFocus Newport Oriel PI PIJena $(xxx_Common_LIBS)
	xxx_Common_LIBS := Parker SmartMotor ThorLabs softMotor motorSimSupport $(xxx_Common_LIBS)
endif

ifdef STREAM
	xxx_Common_DBD += stream.dbd streamSynApps.dbd
	xxx_Common_LIBS := stream streamSynApps $(xxx_Common_LIBS)
endif

ifdef DEVIOCSTATS
	xxx_Common_DBD += devIocStats.dbd iocAdmin.dbd
	xxx_Common_LIBS := devIocStats $(xxx_Common_LIBS)
endif

ifdef ETHERIP
	xxx_Common_DBD += ether_ip.dbd
	xxx_Common_LIBS := ether_ip $(xxx_Common_LIBS)
endif

ifdef ALIVE
	xxx_Common_DBD += aliveSupport.dbd
	xxx_Common_LIBS := alive $(xxx_Common_LIBS)
endif

ifdef DELAYGEN
	xxx_Common_DBD += delaygenSupport.dbd
	xxx_Common_LIBS := delaygen $(xxx_Common_LIBS)
endif

ifdef VAC
	xxx_Common_DBD += vacSupport.dbd
	xxx_Common_LIBS := vac $(xxx_Common_LIBS)
endif

#ifdef FLY
#	xxx_Common_DBD += flySupport.dbd
#	xxx_Common_LIBS := fly $(xxx_Common_LIBS)
#endif

xxx_Common_LIBS := $(xxx_Common_LIBS) $(EPICS_BASE_IOC_LIBS)

##################################################################


ifeq (win32-x86,$(findstring win32-x86, $(T_A)))

	DBD  += iocxxxWin32.dbd
	iocxxxWin32_DBD += xxx_Common.dbd

	ifdef MCA
		# If your host supports libpcap and libnet and you want to build
		# Canberra network support uncomment the following lines
		#iocxxxWin32_DBD += mcaCanberraSupport.dbd
		#xxx_LIBS_WIN32 += mcaCanberra
		#xxx_LIBS_WIN32 += wpcap Packet
	endif

	ifdef DXP
		# If you want to build parallel port or USB interfaces to Saturn and/or
		# xMAP DXP, then uncomment the following lines
		iocxxxWin32_DBD += dxpSupport.dbd
		xxx_LIBS_WIN32 += dxp handel
		xxx_LIBS_WIN32 += DLPORTIO PlxApi
		xxx_SYS_LIBS_WIN32 += setupapi
	endif

	ifdef AREA_DETECTOR
		# areaDetector provides a Makefile for things it needs and supplies
		PROD_NAME = AD
		-include $(ADCORE)/ADApp/commonDriverMakefile
		iocxxxWin32_DBD += ADSupport.dbd NDPluginSupport.dbd
		xxx_LIBS_WIN32 += $(AD_LIBS)
		ifdef ADEXAMPLE
			# To add the simDetector uncomment the following lines
			iocxxxLinux_DBD += simDetectorSupport.dbd
			xxx_LIBS_WIN32 += simDetector
		endif
	endif
endif

ifeq (windows-x64,$(findstring windows-x64, $(T_A)))
	DBD  += iocxxxWin64.dbd
	iocxxxWin64_DBD += xxx_Common.dbd

	ifdef MCA
		# If your host supports libpcap and libnet and you want to build Canberra network
		# support uncomment the following line
		iocxxxWin64_DBD += mcaCanberraSupport.dbd
		xxx_LIBS_WIN32 += mcaCanberra
		xxx_LIBS_WIN32 += wpcap Packet
	endif

	ifdef AREA_DETECTOR
		# areaDetector provides a Makefile for things it needs and supplies
		PROD_NAME = AD
		-include $(ADCORE)/ADApp/commonDriverMakefile
		iocxxxWin64_DBD += ADSupport.dbd NDPluginSupport.dbd
		xxx_LIBS_WIN32 += $(AD_LIBS)
		# To add the simDetector uncomment the following lines
		iocxxxLinux_DBD += simDetectorSupport.dbd
		xxx_LIBS_WIN32 += simDetector
	endif
endif

ifeq ($(EPICS_HOST_ARCH), cygwin-x86)
	DBD  += iocxxxCygwin.dbd
	iocxxxCygwin_DBD += xxx_Common.dbd

	ifdef DXP
		# If you want to build parallel port or USB interfaces to Saturn and/or
		# xMAP DXP,then uncomment the following lines
		#iocxxxCygwin_DBD += dxpSupport.dbd
		#xxx_LIBS_cygwin32 += dxp handel
		#xxx_SYS_LIBS_cygwin32 += DLPORTIO PlxApi setupapi
	endif

	xxx_SYS_LIBS_cygwin32 += $(CYGWIN_RPC_LIB)

endif

ifeq (vxWorks,$(findstring vxWorks, $(T_A)))
	DBD  += iocxxxVX.dbd
	iocxxxVX_DBD += xxx_Common.dbd

	ifdef ALLEN_BRADLEY
		xxx_LIBS_vxWorks += allenBradley
	endif

	ifdef QUADEM
		iocxxxVX_DBD += drvAHxxx.dbd
		iocxxxVX_DBD += drvAPS_EM.dbd
		xxx_LIBS_vxWorks += quadEM
	endif

	ifdef AREA_DETECTOR
		# areaDetector provides a Makefile for things it needs and supplies
		PROD_NAME = AD
		-include $(ADCORE)/ADApp/commonDriverMakefile
		iocxxxVX_DBD += ADSupport.dbd NDPluginSupport.dbd
		xxx_LIBS_vxWorks += $(AD_LIBS)
		# To add the simDetector uncomment the following lines
		iocxxxVX_DBD += simDetectorSupport.dbd
		xxx_LIBS_vxWorks += simDetector
	endif

	ifdef VME
		iocxxxVX_DBD += vmeVXSupport.dbd
		xxx_LIBS_vxWorks += vme
	endif

	ifdef STD
		iocxxxVX_DBD += stdVXSupport.dbd
	endif

	ifdef IP
		iocxxxVX_DBD += ipVXSupport.dbd
	endif

	ifdef MCA
		iocxxxVX_DBD += SIS38XXSupport.dbd
		iocxxxVX_DBD += mcaCanberraSupport.dbd
		xxx_LIBS_vxWorks += SIS38XX
		xxx_LIBS_vxWorks += mcaCanberra
	endif

	ifdef IPUNIDIG
		iocxxxVX_DBD += ipUnidigSupport.dbd
		xxx_LIBS_vxWorks += ipUnidig
	endif

	ifdef DAC128V
		iocxxxVX_DBD += dac128VSupport.dbd
		xxx_LIBS_vxWorks += dac128V
	endif

	ifdef IP330
		iocxxxVX_DBD += ip330Support.dbd
		xxx_LIBS_vxWorks += ip330
	endif

	ifdef CAMAC
		iocxxxVX_DBD += camacSupport.dbd
		iocxxxVX_DBD += devCamacSupport.dbd
		xxx_LIBS_vxWorks += camac devCamac
	endif

	ifdef ALLEN_BRADLEY
		iocxxxVX_DBD += allenBradley.dbd
	endif

	ifdef LOVE
		iocxxxVX_DBD += devLove.dbd
		xxx_LIBS_vxWorks += love
	endif

	ifdef IPAC
		iocxxxVX_DBD += tyGSOctal.dbd
		iocxxxVX_DBD += drvIpac.dbd
		xxx_LIBS_vxWorks += TyGSOctal Ipac
	endif

	ifdef ASYN
		iocxxxVX_DBD += drvGsIP488.dbd
	endif

	ifdef SOFTGLUE
		iocxxxVX_DBD += softGlueSupport.dbd
		xxx_LIBS_vxWorks += softGlue
	endif

	ifdef MOTOR
		iocxxxVX_DBD += devDeltaTau.dbd
		iocxxxVX_DBD += devOms.dbd
		xxx_LIBS_vxWorks += oms DeltaTau
	endif

#	ifdef FLY
#		iocxxxVX_DBD += flyVXSupport.dbd
#		xxx_LIBS_vxWorks += fly
#	endif

endif

ifneq (,$(findstring linux, $(T_A)))
	DBD  += iocxxxLinux.dbd
	iocxxxLinux_DBD += xxx_Common.dbd

ifeq ($(HAVE_HDF5), YES)
ifeq ($(HAVE_SZIP), YES)

	ifdef QUADEM
		iocxxxLinux_DBD += drvAHxxx.dbd
		xxx_LIBS_Linux += quadEM
	endif

	ifdef AREA_DETECTOR
		# areaDetector provides a Makefile for things it needs and supplies
		PROD_NAME = AD
		-include $(ADCORE)/ADApp/commonDriverMakefile
		iocxxxLinux_DBD += ADSupport.dbd NDPluginSupport.dbd
		xxx_LIBS_Linux += $(AD_LIBS)
		# To add the simDetector uncomment the following lines
		iocxxxLinux_DBD += simDetectorSupport.dbd
		xxx_LIBS_Linux += simDetector
	endif

	ifdef DXP
		# If your host supports parallel port or USB interfaces to Saturn DXP, set
		# LINUX_USB_INSTALLED to YES in <synApps>/configure/CONFIG_SITE.
		ifeq ($(LINUX_USB_INSTALLED), YES)
			iocxxxLinux_DBD += dxpSupport.dbd
			xxx_LIBS_Linux  += dxp handel
			xxx_SYS_LIBS_Linux += usb
		endif
	endif

endif
endif

	ifdef MCA
		# If your host supports libpcap and libnet and you want to build Canberra network
		# support, set LINUX_NET_INSTALLED to YES in <synApps>/configure/CONFIG_SITE.
		ifeq ($(LINUX_NET_INSTALLED), YES)
			iocxxxLinux_DBD += mcaCanberraSupport.dbd
			xxx_LIBS_Linux += mcaCanberra
			xxx_SYS_LIBS_Linux += net pcap
		endif
	endif

	ifdef IPAC
		iocxxxLinux_DBD += drvIpac.dbd
		xxx_LIBS_Linux += Ipac
	endif

	ifdef SOFTGLUE
		iocxxxLinux_DBD += softGlueSupport.dbd
		xxx_LIBS_Linux += softGlue
	endif
endif

ifeq ($(OS_CLASS), Darwin)
	DBD  += iocxxxDarwin.dbd
	iocxxxDarwin_DBD += xxx_Common.dbd
endif



# <name>_registerRecordDeviceDriver.cpp will be created from <name>.dbd
xxx_SRCS_vxWorks  += iocxxxVX_registerRecordDeviceDriver.cpp
xxx_SRCS_Linux    += iocxxxLinux_registerRecordDeviceDriver.cpp     xxxMain.cpp
ifeq (win32-x86,$(findstring win32-x86, $(T_A)))
	xxx_SRCS_WIN32    += iocxxxWin32_registerRecordDeviceDriver.cpp     xxxMain.cpp
endif
ifeq (windows-x64,$(findstring windows-x64, $(T_A)))
	xxx_SRCS_WIN32    += iocxxxWin64_registerRecordDeviceDriver.cpp     xxxMain.cpp
endif
xxx_SRCS_cygwin32 += iocxxxCygwin_registerRecordDeviceDriver.cpp    xxxMain.cpp
xxx_SRCS_solaris  += iocxxx_solaris_registerRecordDeviceDriver.cpp  xxxMain.cpp
xxx_SRCS_Darwin   += iocxxxDarwin_registerRecordDeviceDriver.cpp    xxxMain.cpp



#The following adds support from base/src/vxWorks
xxx_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary

xxx_LIBS_vxWorks  += $(xxx_Common_LIBS)
xxx_LIBS_Linux    += $(xxx_Common_LIBS)
xxx_LIBS_solaris  += $(xxx_Common_LIBS)
xxx_LIBS_cygwin32 += $(xxx_Common_LIBS)
xxx_LIBS_WIN32    += $(xxx_Common_LIBS)
xxx_LIBS_Darwin   += $(xxx_Common_LIBS)

# Here's how to print out all gnumake variables
#$(foreach v, $(.VARIABLES), $(info $(v) = $($(v))))
# print out just one variable
#$(info SUPPORT = $(SUPPORT))

#===========================

include $(TOP)/configure/RULES
#----------------------------------------
#  ADD RULES AFTER THIS LINE

$(COMMON_DIR)/iocxxxWin32Include.dbd: $(COMMON_DIR)/xxx_Common.dbd
$(COMMON_DIR)/iocxxxWin64Include.dbd: $(COMMON_DIR)/xxx_Common.dbd
$(COMMON_DIR)/iocxxxCygwinInclude.dbd: $(COMMON_DIR)/xxx_Common.dbd
$(COMMON_DIR)/iocxxxVXInclude.dbd: $(COMMON_DIR)/xxx_Common.dbd
$(COMMON_DIR)/iocxxxLinuxInclude.dbd: $(COMMON_DIR)/xxx_Common.dbd
$(COMMON_DIR)/iocxxxDarwinInclude.dbd: $(COMMON_DIR)/xxx_Common.dbd

$(COMMON_DIR)/iocxxxWin32.dbd: $(COMMON_DIR)/xxx_Common.dbd
$(COMMON_DIR)/iocxxxWin64.dbd: $(COMMON_DIR)/xxx_Common.dbd
$(COMMON_DIR)/iocxxxCygwin.dbd: $(COMMON_DIR)/xxx_Common.dbd
$(COMMON_DIR)/iocxxxVX.dbd: $(COMMON_DIR)/xxx_Common.dbd
$(COMMON_DIR)/iocxxxLinux.dbd: $(COMMON_DIR)/xxx_Common.dbd
$(COMMON_DIR)/iocxxxDarwin.dbd: $(COMMON_DIR)/xxx_Common.dbd

iocxxxWin32.dbd$(DEP): $(COMMON_DIR)/xxx_Common.dbd
iocxxxWin64.dbd$(DEP): $(COMMON_DIR)/xxx_Common.dbd
iocxxxCygwin.dbd$(DEP): $(COMMON_DIR)/xxx_Common.dbd
iocxxxVX.dbd$(DEP): $(COMMON_DIR)/xxx_Common.dbd
iocxxxLinux.dbd$(DEP): $(COMMON_DIR)/xxx_Common.dbd
iocxxxDarwin.dbd$(DEP): $(COMMON_DIR)/xxx_Common.dbd