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  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  2018  2019  <20202021  2022  2023  2024  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  <20202021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: Best practice for compiling helper support library via EPICS build system
From: "Wlodek, Jakub via Tech-talk" <tech-talk at aps.anl.gov>
To: "tech-talk at aps.anl.gov" <tech-talk at aps.anl.gov>
Date: Mon, 23 Nov 2020 20:45:19 +0000
Hi all,

I had a question regarding best practices for building a helper support library for EPICS applications as a part of the EPICS build system.
At the moment I have the following (seemingly working) structure, omitting some boilerplate that doesn't affect this question:

A Top level makefile that lists directories and their dependencies:
DIRS := $(DIRS) configure
DIRS := $(DIRS) uvcSupport
DIRS := $(DIRS) uvcSupport/libuvc
DIRS := $(DIRS) uvcApp

uvcSupport_DEPEND_DIRS += uvcSupport/libuvc
uvcApp_DEPEND_DIRS += uvcSupport

A *Support directory who's Makefile installs the appropriate header files and libraries:
SRC_DIRS += ../libuvc

INC += libuvc/libuvc.h
INC += libuvc/libuvc_config.h
INC += libuvc/libuvc_internal.h
INC += utlist.h

ifeq (linux-x86_64, $(findstring linux-x86_64, $(T_A)))
LIB_INSTALLS_Linux += ../libuvc/O.$(EPICS_HOST_ARCH)/libuvc.a
LIB_INSTALLS_Linux += ../libuvc/O.$(EPICS_HOST_ARCH)/libuvc.so
endif

And a directory containing modified source and header files designed to build with EPICS
for the helper library along with a Makefile to build them, located in the *Support dir:
LIBRARY = uvc
uvc_SRCS += ctrl.c
uvc_SRCS += ctrl-gen.c
uvc_SRCS += device.c
uvc_SRCS += diag.c
uvc_SRCS += frame.c
uvc_SRCS += frame-mjpeg.c
uvc_SRCS += init.c
uvc_SRCS += misc.c
uvc_SRCS += stream.c


uvc_LIBS += jpeg
uvc_SYS_LIBS += usb-1.0
This seems to build everything correctly, at least from the top level, however, I noticed that if I only run `make` from the *Support directory I get an error.
Ideally I'd like to be able to `make` the Support directory independently so some helper non-IOC programs can be built without building the entire IOC lib and
executable.

How would I go about doing this, or is the current solution the recommended "best practice"?
I currently have this sitting on a development branch here: https://github.com/areaDetector/ADUVC/tree/libuvc-epics-build

Thanks,
Jakub

Replies:
Re: Best practice for compiling helper support library via EPICS build system Mark Rivers via Tech-talk

Navigate by Date:
Prev: New releases of dac128V, ip330, ipUnidig, modbus, mca, and quadEM Mark Rivers via Tech-talk
Next: Re: Best practice for compiling helper support library via EPICS build system Mark Rivers via Tech-talk
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  <20202021  2022  2023  2024 
Navigate by Thread:
Prev: New releases of dac128V, ip330, ipUnidig, modbus, mca, and quadEM Mark Rivers via Tech-talk
Next: Re: Best practice for compiling helper support library via EPICS build system Mark Rivers via Tech-talk
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  <20202021  2022  2023  2024 
ANJ, 23 Nov 2020 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·