Experimental Physics and Industrial Control System
Mike,
Here is one way I have done it. Define myApp_Common_LIBS, then myApp_ARCH_LIBS, then combine them for each architecture with _Common_LIBS last.
CARSApp_Common_LIBS += CARS
CARSApp_Common_LIBS += mca
CARSApp_Common_LIBS += calc
CARSApp_Common_LIBS += sscan
CARSApp_Common_LIBS += autosave
CARSApp_Common_LIBS += optics
CARSApp_Common_LIBS += vme
CARSApp_Common_LIBS += std
CARSApp_Common_LIBS += love
CARSApp_Common_LIBS += ip
CARSApp_Common_LIBS += brukerCCD marCCD roperCCD
CARSApp_Common_LIBS += Acs Ims Mclennan Newport Faulhaber Parker softMotor motorSimSupport motor
CARSApp_Common_LIBS += asyn
CARSApp_Common_LIBS += seq pv
CARSApp_Common_LIBS += $(EPICS_BASE_IOC_LIBS)
CARSApp_vxWorks_LIBS += allenBradley
CARSApp_vxWorks_LIBS += mcaSIS
CARSApp_vxWorks_LIBS += mcaCanberra
CARSApp_vxWorks_LIBS += ip330
CARSApp_vxWorks_LIBS += ipUnidig
CARSApp_vxWorks_LIBS += dac128V
CARSApp_vxWorks_LIBS += quadEM
CARSApp_vxWorks_LIBS += camac devCamac
CARSApp_vxWorks_LIBS += dxp handelSrc
CARSApp_vxWorks_LIBS += oms
CARSApp_vxWorks_LIBS += TyGSOctal Ipac
CARSApp_vxWorks_LIBS += vxStats
#The following adds support from base/src/vxWorks
CARSApp_OBJS_vxWorks += $(EPICS_BASE_BIN)/vxComLibrary
CARSApp_Linux_LIBS += dxp handelSrc
CARSApp_Linux_LIBS += mcaCanberra
CARSApp_cygwin32_LIBS += dxp handelSrc
CARSApp_WIN32_LIBS += dxp handelSrc
CARSApp_LIBS_DEFAULT = $(CARSApp_Common_LIBS)
CARSApp_LIBS_vxWorks = $(CARSApp_vxWorks_LIBS) $(CARSApp_Common_LIBS)
CARSApp_LIBS_Linux = $(CARSApp_Linux_LIBS) $(CARSApp_Common_LIBS)
CARSApp_LIBS_cygwin32 = $(CARSApp_cygwin32_LIBS) $(CARSApp_Common_LIBS)
CARSApp_LIBS_WIN32 = $(CARSApp_WIN32_LIBS) $(CARSApp_Common_LIBS)
CARSApp_SYS_LIBS_Linux += net pcap
CARSApp_SYS_LIBS_cygwin32 += rpc DLPORTIO
CARSApp_LIBS_WIN32 += DLPORTIO
________________________________
From: Walters, M (Malcolm) [mailto:[email protected]]
Sent: Thu 4/27/2006 5:33 AM
To: [email protected]
Subject: Problem resolving symbols during build.
I have a small problem resolving symbols when trying to build an ioc for
multiple architectures under R3.14.7. I am building an ioc under both
VxWorks and Linux.
Since the VxWorks version uses a real hardware I only want to link
certain libraries for one architecture i.e.
BL06I-MO-IOC-02_LIBS_vxWorks += drvIK320
BL06I-MO-IOC-02_LIBS_vxWorks += oms
However on linking, various symbols are left undefined. These all come
from the EPICS_BASE_IOC_LIBS. Although I have
BL06I-MO-IOC-02_LIBS += $(EPICS_BASE_IOC_LIBS)
at the end of my Makefile this ends up before the libraries above. The
reason for this is that the architecture specific terms are always
appended to the main ones. e.g.
ifneq ($(strip $(USR_LIBS_$(OS_CLASS))),)
USR_LIBS += $(subst -nil-,,$(USR_LIBS_$(OS_CLASS)))
else
ifdef USR_LIBS_DEFAULT
USR_LIBS += $(USR_LIBS_DEFAULT)
endif
endif
As a workaround I can include the base libraries for each architecture
individually i.e.
BL06I-MO-IOC-02_LIBS_vxWorks += $(EPICS_BASE_IOC_LIBS)
BL06I-MO-IOC-02_LIBS_Linux += $(EPICS_BASE_IOC_LIBS)
Is there a better way of doing this?
Malcolm
Malcolm Walters
01235 778557
Diamond Light Source Ltd.
Rutherford Appleton Laboratory,
Chilton, Didcot, Oxfordshire OX11 0QX
[email protected]
- Navigate by Date:
- Prev:
Problem resolving symbols during build. Walters, M (Malcolm)
- Next:
Sequencer intro needed ! Emmanuel Mayssat
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
<2006>
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
- Navigate by Thread:
- Prev:
Problem resolving symbols during build. Walters, M (Malcolm)
- Next:
Sequencer intro needed ! Emmanuel Mayssat
- Index:
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
<2006>
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024