Installation Instructions

EPICS base

Release 3.14.6

NOTE: Parts of this document are likely to be out of date.

What is EPICS base?

The Experimental Physics and Industrial Control Systems (EPICS)
is an extensible set of software components and tools with which application
developers can create a control system. This control system can be used
to control accelerators, detectors, telescopes, or other scientific experimental
equipment. EPICS base is the set of core software, i.e. the components
of EPICS without which EPICS would not function. EPICS base allows an arbitrary
number of target systems, IOCs (input/output controllers), and host systems,
OPIs (operator interfaces) of various types.

What is new in this release?

This version of EPICS base contains significant changes and
offers major improvements in functionality over previous versions. Please
check the RELEASE_NOTES file in the distribution for description of changes
and release migration details.

Copyright

Please review the COPYRIGHT* files included in the distribution
for legal terms of usage.

Supported platforms

Currently this version of EPICS base has been built on the
following hosts for the following targets. If you are trying to build EPICS
base on a different host or for a different target machine you must get
the proper host/target cross compiler and header files and you will have
to create and add the appropriate new configure files to the base/configure/os/directory.
You can start by copying existing configuration files in the configure/os
directory and then make changes for your new platforms.

Supported compilers

This version of EPICS base has been built and tested using
the host vendor's C and C++ compilers as well as the GNU gcc and g++ compilers.
The GNU cross-compilers have been used for all cross-compiled targets.
You may need the host vendor's C++ compiler in your search path to do EPICS
builds. Check definitions of ACC and CCC in base/configure/os/CONFIG.<host>.<host>
or the definitions for GCC and G++ if ANSI=GCC and CPLUSPLUS=GCC are specified
in CONFIG_SITE.

Software requirements

GNU makeYou must use GNU make, gnumake, for any EPICS builds. Set your
path so that a gnumake version 3.78.1 or later is available.

PerlYou must have perl version 5.0 or later installed. The configure files
do not specify the perl full pathname. You need the perl executable
in your search path.

Unzip and tar (Winzip on WIN32 systems)You must have tools available to unzip and untar the EPICS base distribution
file.

Tornado 2
You must have Tornado 2 installed if any of your target systems are
vxWorks systems. Tornado 2 provides the cross-compiler and header
files needed to build for these target systems. The full path location
to Tornado 2 should be specified in the base/configure/RELEASE or
base/configure/RELEASE.<hostarch>
file. You will also need one or more board support packages. Consult the
vxWorks documentation for details.

Optional GNU compiler requirement for solaris-sparc and win32-x86
hostsIf you have state notation language source files (*.st files) which
require c preprocessing before conversion to c source, gcc must be
in your path.

Host system storage requirements

The GNU zipped tar file is approximately 1.4 MB in size. The
unzipped untarred distribution source tree is approximately 6 MB. The build
created files for each host take approximately 40 MB and the build created
files for each target take approximately 10 MB.

Building EPICS base (Unix and Win32)

Files in the base/startup directory have been provided to help
set required path and other environment variables .

EPICS_HOST_ARCH
Before you can build or use EPICS R3.14, the environment variable EPICS_HOST_ARCH
must be defined. A perl script EpicsHostArch.pl in the base/startup directory
has been provided to help set EPICS_HOST_ARCH. You should have EPICS_HOST_ARCH
set to your host operating system followed by a dash and then your host
architecture, e.g. solaris-sparc. If you are not using the OS vendor's
c/c++ compiler for host
builds, you will need another dash followed by the alternate compiler
name (e.g. "-gnu" for GNU c/c++ compilers on a solaris host or "-borland"
for Borland c/c++ compilers on a WIN32 host). See configure/CONFIG_SITE
for a list of supported EPICS_HOST_ARCH values.

PERLLIB
On WIN32, some versions of Perl require that the environment
variable PERLLIB be set to <perl directory location>.

PATH
As already mentioned, you must have the perl executable and you may
need C and C++ compilers in your search path. For building base you also
must have echo in your search path. For Unix host builds you also need
touch, cpp, cp, rm, mv, and mkdir in your search path and /bin/chmod must
exist. On some Unix systems you may also need ar and ranlib in your path,
and the c compiler may require ld in your path. On solaris systems you
need uname in your path.

LD_LIBRARY_PATH
It is no longer necessary to have LD_LIBRARY_PATH include
EPICS directories on Unix type system. R3.14 shared libraries
and executables will contain the full path name to libraries
they require. However, if you move the EPICS directories
from their build-time location then in order for libraries
to be found at runtime LD_LIBRARY_PATH must include the full
pathname to $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH) when
invoking executables. Building shared libraries is now the
default setting for all Unix type hosts. NOTE: You will still
need LD_LIBRARY_PATH for R3.13 extension shared libraries
even if the R3.13 extensions are built with R3.14 base.

Win32 PATH
On WIN32 systems, building shared libraries is the default setting
and you will need to add fullpathname to $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH)
to your path. Building shared libraries is determined by the value of the
macro SHARED_LIBRARIES in CONFIG_SITE (either YES or NO).

Do site-specific build configuration

Site configurationTo configure EPICS, you may want to modify the default definitions
in the following files:

Host configurationTo configure each host system, you may override the default definitions
by adding a new file with override definitions into the configure/os directory.
The new file should have the same name as the distribution file to be overridden
except with CONFIG in the name changed to CONFIG_SITE.

Target configurationTo configure each target system, you may override the default definitions
by adding a new file with override definitions into the configure/os directory.
The new file should have the same name as the distribution file to be overridden
except with CONFIG in the name replaced by CONFIG_SITE.

R3.13 compatibility configurationTo configure EPICS base for building with R3.13 extensions and ioc
applications , you must modify the default definitions in the base/config/CONFIG_SITE*
files to agree with definitions you made in base/configure and base/configure/os
files.

Build EPICS base

After configuring the build you should be able to build EPICS
base by issuing the following commands in the distribution's root directory
(base)

gnumake clean uninstallgnumake

The command "gnumake clean uninstall" will remove all files and directories
generated by a previous build. The command "gnumake" will build and install
everything for the configured host and targets.
It is recommended that you do a "gnumake clean uninstall" at the root
directory of an EPICS directory structure before each complete rebuild
to ensure that all components will be rebuilt.

Multiple host platforms

You can build using a single EPICS directory structure on multiple
host systems and for multiple cross target systems. The intermediate and
binary files generated by the build will be created in separate subdirectories
and installed into the appropriate separate host/target install directories.
EPICS executables and perl scripts are installed into the $(INSTALL_LOCATION)/bin/<arch>
directories. Libraries are installed into $(INSTALL_LOCATION)/lib/<arch>.
The default definition for $(INSTALL_LOCATION) is $(TOP)
which is the root directory in the distribution directory structure, base.
Created object files are stored in O.<arch> source subdirectories, This
allows objects for multiple cross target architectures to be maintained
at the same time. To build EPICS base for a specific host/target combination
you must have the proper host/target c/c++ cross compiler and target header
files and the base/configure/os directory must have the appropriate configure
files.

Example application and extension

A perl tool, makeBaseApp.pl is included in the distribution
file. This script will create a sample application that can be built and
then executed to try out this release of base. Also, a perl script, makeBaseExt.pl,
is included in the distribution file. This script will create a sample
extension that can be built and executed. The makeBaseApp.pl and makeBaseExt.pl
scripts are installed into the install location bin/<hostarch> directory
during the base build.

Instructions for building and executing the 3.14 example application can be
found in the section "Example Application" of Chapter 2, "Getting Started", in
the "IOC Application Developer's Guide" for this release. The "Example IOC
Application" section briefly explains how to create and build an example
application in a user created <top> directory. It also explains how to
run the example application on a vxWorks ioc or a host system and run an
example channel access client on the host system.