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: Andrew Johnson <[email protected]>
To: [email protected]
Date: Mon, 27 Oct 2008 14:23:47 -0500
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
-- 
Talk is cheap. Show me the code. -- Linus Torvalds

Replies:
Re: R3.14.10-RC2 Build Problem Janet Anderson
References:
R3.14.10-RC2 Build Problem Jens Eden

Navigate by Date:
Prev: R3.14.10-RC2 Build Problem Jens Eden
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 
Navigate by Thread:
Prev: R3.14.10-RC2 Build Problem Jens Eden
Next: Re: R3.14.10-RC2 Build Problem Janet Anderson
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 ·