I think you need to remove the following lines from your Makefile
SR08ID01IOC43_DBD += quadEMTestApp.dbd
SR08ID01IOC43_DBD += quadEMTestAppVx.dbd
SR08ID01IOC43_DBD += prosilicaApp.dbd
Those “*App.dbd” files are generated by the EPICS build system when building the test applications in quadEM and areaDetector, but you don’t want to include those files
when building other applications.
Mark
Hi everyone...
I am trying to build an IOC to use both QuadEm to support an AH401B picoammeter and a ProSilica camera using AreaDetector, and I’ve run into an issue with my Makefile in my IOCxxApp/src directory.
My make looks like this:
TOP=../..
include $(TOP)/configure/CONFIG
#----------------------------------------
# ADD MACRO DEFINITIONS AFTER THIS LINE
#=============================
#=============================
# Build the IOC application
PROD_IOC = SR08ID01IOC43
# SR08ID01IOC43.dbd will be created and installed
DBD += SR08ID01IOC43.dbd
# SR08ID01IOC43.dbd will be made up from these files:
SR08ID01IOC43_DBD += base.dbd
SR08ID01IOC43_DBD += asyn.dbd
SR08ID01IOC43_DBD += drvIpac.dbd
SR08ID01IOC43_DBD += ipUnidigSupport.dbd
SR08ID01IOC43_DBD += drvAPS_EM.dbd
SR08ID01IOC43_DBD += drvAHxxx.dbd
SR08ID01IOC43_DBD += quadEMTestApp.dbd
SR08ID01IOC43_DBD += drvAsynIPPort.dbd
SR08ID01IOC43_DBD += quadEMTestAppVx.dbd
SR08ID01IOC43_DBD += calcSupport.dbd
SR08ID01IOC43_DBD += asSupport.dbd
SR08ID01IOC43_DBD += busySupport.dbd
SR08ID01IOC43_DBD += sscanSupport.dbd
SR08ID01IOC43_DBD += ADSupport.dbd
SR08ID01IOC43_DBD += NDPluginSupport.dbd
SR08ID01IOC43_DBD += prosilicaApp.dbd
SR08ID01IOC43_DBD += prosilicaSupport.dbd
SR08ID01IOC43_INC += drvQuadEM.h
# SR08ID01IOC43_registerRecordDeviceDriver.cpp derives from SR08ID01IOC43.dbd
SR08ID01IOC43_SRCS += SR08ID01IOC43_registerRecordDeviceDriver.cpp
SR08ID01IOC43_SRCS_vxWorks += SR08ID01IOC43AppVx_registerRecordDeviceDriver.cpp
# Build the main IOC entry point on workstation OSs.
SR08ID01IOC43_SRCS_DEFAULT += SR08ID01IOC43Main.cpp
SR08ID01IOC43_SRCS_vxWorks += -nil-
# Add support from base/src/vxWorks if needed
SR08ID01IOC43_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary
# Add all the support libraries needed by this IOC
# # Finally link to the EPICS Base libraries
SR08ID01IOC43_LIBS += autosave
SR08ID01IOC43_LIBS += quadEM
SR08ID01IOC43_LIBS_vxWorks += Ipac
SR08ID01IOC43_LIBS_vxWorks += ipUnidig
SR08ID01IOC43_LIBS += mca
SR08ID01IOC43_LIBS += seq pv
SR08ID01IOC43_LIBS += ADBase
SR08ID01IOC43_LIBS += prosilicaSrc
SR08ID01IOC43_LIBS += prosilicaApp
SR08ID01IOC43_LIBS += prosilicaSupport
SR08ID01IOC43_LIBS += sscan
SR08ID01IOC43_LIBS += busy
SR08ID01IOC43_LIBS += calc
SR08ID01IOC43_LIBS += asyn
SR08ID01IOC43_LIBS += $(EPICS_BASE_IOC_LIBS)
SR08ID01IOC43_LIBS_vxWorks += $(EPICS_BASE_IOC_LIBS)
#===========================
include $(AREA_DETECTOR)/ADApp/commonDriverMakefile
include $(TOP)/configure/RULES
#----------------------------------------
# ADD RULES AFTER THIS LINE
And my output when I run my make is this:
src]$ make
perl /beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/base/bin/linux-x86/makeMakefile.pl O.linux-x86 ../../..
mkdir O.Common
make -C O.linux-x86 -f ../Makefile TOP=../../.. T_A=linux-x86 install
make[1]: Entering directory `/beamline/perforce/Dev/SBS/3_Beamlines/3_10_SR08ID01_MIT/SR08ID01IOC43/SR08ID01IOC43App/src/O.linux-x86'
perl /beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/base/bin/linux-x86/makeIncludeDbd.pl base.dbd asyn.dbd drvIpac.dbd ipUnidigSupport.dbd drvAPS_EM.dbd
drvAHxxx.dbd quadEMTestApp.dbd drvAsynIPPort.dbd quadEMTestAppVx.dbd calcSupport.dbd asSupport.dbd busySupport.dbd sscanSupport.dbd ADSupport.dbd NDPluginSupport.dbd prosilicaApp.dbd prosilicaSupport.dbd SR08ID01IOC43Include.dbd
echo "../O.Common/SR08ID01IOC43Include.dbd : ../Makefile" >> SR08ID01IOC43.dbd.d
Expanding dbd
Installing created dbd file ../../../dbd/SR08ID01IOC43.dbd
perl /beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/base/bin/linux-x86/registerRecordDeviceDriver.pl ../O.Common/SR08ID01IOC43.dbd SR08ID01IOC43_registerRecordDeviceDriver
/beamline/perforce/Dev/SBS/3_Beamlines/3_10_SR08ID01_MIT/SR08ID01IOC43 > SR08ID01IOC43.tmp
mv SR08ID01IOC43.tmp SR08ID01IOC43_registerRecordDeviceDriver.cpp
/usr/bin/g++ -c -D_POSIX_C_SOURCE=199506L -D_POSIX_THREADS -D_XOPEN_SOURCE=500 -D_X86_ -DUNIX -D_BSD_SOURCE -Dlinux -D_REENTRANT -O3 -Wall
-m32 -MMD -I. -I../O.Common -I. -I.. -I../../../include/os/Linux -I../../../include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/base/include/os/Linux -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/base/include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/seq/include
-I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/asyn/include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/calc/include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/sscan/include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/autosave/include/os/Linux
-I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/autosave/include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/busy/include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/quadEM/include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/ipac/include
-I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/mca/include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/areaDetector/include/os/Linux -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/areaDetector/include SR08ID01IOC43_registerRecordDeviceDriver.cpp
/usr/bin/g++ -c -D_POSIX_C_SOURCE=199506L -D_POSIX_THREADS -D_XOPEN_SOURCE=500 -D_X86_ -DUNIX -D_BSD_SOURCE -Dlinux -D_REENTRANT -O3 -Wall
-m32 -MMD -I. -I../O.Common -I. -I.. -I../../../include/os/Linux -I../../../include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/base/include/os/Linux -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/base/include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/seq/include
-I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/asyn/include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/calc/include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/sscan/include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/autosave/include/os/Linux
-I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/autosave/include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/busy/include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/quadEM/include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/ipac/include
-I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/mca/include -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/areaDetector/include/os/Linux -I/beamline/perforce/Dev/SBS/3_Beamlines/Common/IOC_Support/areaDetector/include ../SR08ID01IOC43Main.cpp
make[1]: *** No rule to make target `../../../lib/linux-x86/libprosilicaSrc.a', needed by `SR08ID01IOC43'. Stop.
make[1]: Leaving directory `/beamline/perforce/Dev/SBS/3_Beamlines/3_10_SR08ID01_MIT/SR08ID01IOC43/SR08ID01IOC43App/src/O.linux-x86'
make: *** [install.linux-x86] Error 2
Any hints or tips would be greatly appreciated.
Thanks....
Dave Reid
Australian Synchrotron
SUPPLIERS: As of 1 January 2013, the Australian Synchrotron Company Ltd has changed its business name. However, the trading name will remain Australian Synchrotron.
Please address all quotations and invoices to: Synchrotron Light Source Australia Pty Ltd (SLSA), ABN: 18 159 468 256