EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  <20082009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024  Index 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  <20082009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Re: R3.14.10-RC2 Build Problem
From: Janet Anderson <[email protected]>
To: Andrew Johnson <[email protected]>
Cc: [email protected]
Date: Tue, 28 Oct 2008 11:35:02 -0500
How to specify Makefile definitions which restrict builds to specific target architectures is described in Chapter 2, Section 4.3.7 of the R3.14.9 Application Developers Guide.

Janet



Andrew Johnson wrote:
Hi Jens,

On Monday 27 October 2008 13:24:21 Jens Eden wrote:
  
in Epics versions before R3.14.10-RC2, it was possible to build
for a specific target arch only.

e.g.

    
make vxWorks-68040
      
would create dirs O.Common and O.vxWorks-68040 only in R3.14.9,
In R3.14.10-RC2 the host arch will be built too and you end up with
O.Common, O.vxWorks-68040 and O.linux-x86.
This is a problem, because not all apps are supposed to compile with
the host arch.
    
Janet has managed to fix this for the final release, but I would actually 
recommend that you fix the Makefile in those apps and not have to use that 
technique at all.

There are a number of variables that allow you to restrict the architectures 
that your code is compiled for, and if you get these right the problem 
vanishes.  For example, instead of
    LIBRARY = app
if you say
    LIBRARY_vxWorks = app
then that library will only be compiled for vxWorks targets.  You'll still get 
an O.linux-x86 directory, but it will be empty.

Here's an example Makefile from drvIpac/tyGSOctal, which creates a library 
libTyGSOctal.a on vxWorks and RTEMS, and uses a different C source file for 
each OS.  On other OSs it does nothing:

  
# Makefile
TOP = ..
include $(TOP)/configure/CONFIG

DBD += tyGSOctal.dbd

LIBSRCS_vxWorks += tyGSOctal.c
LIBSRCS_RTEMS += tyGSOctal_RTEMS.c

LIBRARY_IOC_vxWorks = TyGSOctal
LIBRARY_IOC_RTEMS = TyGSOctal
TyGSOctal_LIBS += Ipac

include $(TOP)/configure/RULES
    
The only thing the build system doesn't provide is the ability to restrict 
builds to a specific target architecture rather than an OS class.  It's not 
hard to do that yourself in the Makefile if you really need it though; I can 
explain how on request.

- Andrew
  


References:
R3.14.10-RC2 Build Problem Jens Eden
Re: R3.14.10-RC2 Build Problem Andrew Johnson

Navigate by Date:
Prev: Problem with LabVIEW Shared Memory Interface to EPICS IOC Brand, Holger
Next: function-name collision in edm/calcPv and epics/libCom/calc Thomas Birke
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  <20082009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: R3.14.10-RC2 Build Problem Andrew Johnson
Next: R3.14.10 Andrew Johnson
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  <20082009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 02 Sep 2010 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·