diff --git a/src/makeBaseApp/Makefile b/src/makeBaseApp/Makefile
index 064f20a80..dfe7295ac 100644
--- a/src/makeBaseApp/Makefile
+++ b/src/makeBaseApp/Makefile
@@ -1,6 +1,101 @@
TOP=../..
-include $(TOP)/config/CONFIG_BASE
+include $(TOP)/configure/CONFIG
-include $(TOP)/config/RULES_ARCHS
+TEMPLATES_DIR = makeBaseApp
+
+TEMPLATES += top/Makefile
+TEMPLATES += top/configure/RELEASE
+TEMPLATES += top/configure/RULES.Db
+TEMPLATES += top/configure/RULES.ioc
+TEMPLATES += top/configure/RULES.iocBoot
+TEMPLATES += top/configure/makeDbDepends.pl
+TEMPLATES += top/configure/makeIocCdCommands.pl
+TEMPLATES += top/configure/replaceVAR.pl
+
+TEMPLATES += $(TOP)/configure/CONFIG
+TEMPLATES += $(TOP)/configure/CONFIG.CrossCommon
+TEMPLATES += $(TOP)/configure/CONFIG.Host.WIN32
+TEMPLATES += $(TOP)/configure/CONFIG.Host.linux
+TEMPLATES += $(TOP)/configure/CONFIG.Host.linux-x86
+TEMPLATES += $(TOP)/configure/CONFIG.Host.solaris
+TEMPLATES += $(TOP)/configure/CONFIG.Host.solaris-sparc
+TEMPLATES += $(TOP)/configure/CONFIG.Host.sun4-68k
+TEMPLATES += $(TOP)/configure/CONFIG.Host.win32-x86
+TEMPLATES += $(TOP)/configure/CONFIG.Target.UnixCommon
+TEMPLATES += $(TOP)/configure/CONFIG.Target.linux-x86
+TEMPLATES += $(TOP)/configure/CONFIG.Target.mv162
+TEMPLATES += $(TOP)/configure/CONFIG.Target.mv162lc
+TEMPLATES += $(TOP)/configure/CONFIG.Target.mv167
+TEMPLATES += $(TOP)/configure/CONFIG.Target.mv177
+TEMPLATES += $(TOP)/configure/CONFIG.Target.solaris
+TEMPLATES += $(TOP)/configure/CONFIG.Target.solaris-sparc
+TEMPLATES += $(TOP)/configure/CONFIG.Target.sun4-68k
+TEMPLATES += $(TOP)/configure/CONFIG.Target.vxWorks-486
+TEMPLATES += $(TOP)/configure/CONFIG.Target.vxWorks-68040
+TEMPLATES += $(TOP)/configure/CONFIG.Target.vxWorks-68040lc
+TEMPLATES += $(TOP)/configure/CONFIG.Target.vxWorks-68060
+TEMPLATES += $(TOP)/configure/CONFIG.Target.vxWorks-ppc604
+TEMPLATES += $(TOP)/configure/CONFIG.Target.vxWorksCommon
+TEMPLATES += $(TOP)/configure/CONFIG.Target.win32-x86
+TEMPLATES += $(TOP)/configure/CONFIG_BASE_VERSION
+TEMPLATES += $(TOP)/configure/CONFIG_COMMON
+TEMPLATES += $(TOP)/configure/CONFIG_ENV
+TEMPLATES += $(TOP)/configure/CONFIG_EPICS_BASE
+TEMPLATES += $(TOP)/configure/CONFIG_SITE
+TEMPLATES += $(TOP)/configure/CONFIG_SITE.Host.WIN32-x86
+TEMPLATES += $(TOP)/configure/CONFIG_SITE_ENV
+TEMPLATES += $(TOP)/configure/RULES_ARCHS
+TEMPLATES += $(TOP)/configure/RULES_BUILD
+TEMPLATES += $(TOP)/configure/RULES_DIRS
+TEMPLATES += $(TOP)/configure/RULES_TOP
+TEMPLATES += $(TOP)/configure/tools/cp.pl
+TEMPLATES += $(TOP)/configure/tools/findbase.pl
+TEMPLATES += $(TOP)/configure/tools/getrel
+TEMPLATES += $(TOP)/configure/tools/installEpics
+TEMPLATES += $(TOP)/configure/tools/installEpics.pl
+TEMPLATES += $(TOP)/configure/tools/makeMakefile.pl
+TEMPLATES += $(TOP)/configure/tools/mkdir.pl
+TEMPLATES += $(TOP)/configure/tools/mv.pl
+TEMPLATES += $(TOP)/configure/tools/rm.pl
+TEMPLATES += $(TOP)/configure/tools/testmkdir
+
+TEMPLATES += top/exampleApp/Makefile
+TEMPLATES += top/exampleApp/Db/Makefile
+TEMPLATES += top/exampleApp/Db/Makefile.Host
+TEMPLATES += top/exampleApp/Db/dbExample1.db
+TEMPLATES += top/exampleApp/Db/dbExample2.substitutions
+TEMPLATES += top/exampleApp/Db/dbExample2.template
+TEMPLATES += top/exampleApp/src/Makefile
+TEMPLATES += top/exampleApp/src/Makefile.Host
+TEMPLATES += top/exampleApp/src/Makefile.Vx
+TEMPLATES += top/exampleApp/src/caExample.c
+TEMPLATES += top/exampleApp/src/devXxxSoft.c
+TEMPLATES += top/exampleApp/src/exampleInclude.dbd
+TEMPLATES += top/exampleApp/src/sncExample.st
+TEMPLATES += top/exampleApp/src/xxxRecord.c
+TEMPLATES += top/exampleApp/src/xxxRecord.dbd
+TEMPLATES += top/exampleApp/src/base.dbd
+TEMPLATES += top/exampleApp/src/baseLIBOBJS
+
+TEMPLATES += top/simpleApp/Makefile
+TEMPLATES += top/simpleApp/Db/Makefile
+TEMPLATES += top/simpleApp/Db/Makefile.Host
+TEMPLATES += top/simpleApp/src/Makefile
+TEMPLATES += top/simpleApp/src/Makefile.Host
+TEMPLATES += top/simpleApp/src/Makefile.Vx
+
+TEMPLATES += top/simpleBoot/Makefile
+TEMPLATES += top/simpleBoot/nfsCommands
+TEMPLATES += top/simpleBoot/ioc/Makefile
+TEMPLATES += top/simpleBoot/ioc/st.cmd
+
+TEMPLATES += top/exampleBoot/Makefile
+TEMPLATES += top/exampleBoot/nfsCommands
+TEMPLATES += top/exampleBoot/ioc/Makefile
+TEMPLATES += top/exampleBoot/ioc/st.cmd
+
+SCRIPTS += makeBaseApp.pl
+
+include $(TOP)/configure/RULES_BUILD
diff --git a/src/makeBaseApp/Makefile.Host b/src/makeBaseApp/Makefile.Host
deleted file mode 100644
index 5b18415dd..000000000
--- a/src/makeBaseApp/Makefile.Host
+++ /dev/null
@@ -1,62 +0,0 @@
-TOP = ../../..
-include $(TOP)/config/CONFIG_BASE
-
-TEMPLATES_DIR = makeBaseApp
-TEMPLATES += top/Makefile
-TEMPLATES += top/config/CONFIG
-TEMPLATES += top/config/CONFIG_APP
-TEMPLATES += top/config/Makefile
-TEMPLATES += top/config/Makefile.Host
-TEMPLATES += top/config/Makefile.Vx
-TEMPLATES += top/config/RELEASE
-TEMPLATES += top/config/RULES.Db
-TEMPLATES += top/config/RULES.Host
-TEMPLATES += top/config/RULES.Vx
-TEMPLATES += top/config/RULES.ioc
-TEMPLATES += top/config/RULES.iocBoot
-TEMPLATES += top/config/RULES_ARCHS
-TEMPLATES += top/config/RULES_DIRS
-TEMPLATES += top/config/RULES_TOP
-TEMPLATES += top/config/makeDbDepends.pl
-TEMPLATES += top/config/makeIocCdCommands.pl
-TEMPLATES += top/config/makeConfigAppInclude.pl
-TEMPLATES += top/config/replaceVAR.pl
-
-TEMPLATES += top/exampleApp/Makefile
-TEMPLATES += top/exampleApp/Db/Makefile
-TEMPLATES += top/exampleApp/Db/Makefile.Host
-TEMPLATES += top/exampleApp/Db/dbExample1.db
-TEMPLATES += top/exampleApp/Db/dbExample2.substitutions
-TEMPLATES += top/exampleApp/Db/dbExample2.template
-TEMPLATES += top/exampleApp/src/Makefile
-TEMPLATES += top/exampleApp/src/Makefile.Host
-TEMPLATES += top/exampleApp/src/Makefile.Vx
-TEMPLATES += top/exampleApp/src/caExample.c
-TEMPLATES += top/exampleApp/src/devXxxSoft.c
-TEMPLATES += top/exampleApp/src/exampleInclude.dbd
-TEMPLATES += top/exampleApp/src/sncExample.st
-TEMPLATES += top/exampleApp/src/xxxRecord.c
-TEMPLATES += top/exampleApp/src/xxxRecord.dbd
-TEMPLATES += top/exampleApp/src/base.dbd
-TEMPLATES += top/exampleApp/src/baseLIBOBJS
-
-TEMPLATES += top/simpleApp/Makefile
-TEMPLATES += top/simpleApp/Db/Makefile
-TEMPLATES += top/simpleApp/Db/Makefile.Host
-TEMPLATES += top/simpleApp/src/Makefile
-TEMPLATES += top/simpleApp/src/Makefile.Host
-TEMPLATES += top/simpleApp/src/Makefile.Vx
-
-TEMPLATES += top/simpleBoot/Makefile
-TEMPLATES += top/simpleBoot/nfsCommands
-TEMPLATES += top/simpleBoot/ioc/Makefile
-TEMPLATES += top/simpleBoot/ioc/st.cmd
-
-TEMPLATES += top/exampleBoot/Makefile
-TEMPLATES += top/exampleBoot/nfsCommands
-TEMPLATES += top/exampleBoot/ioc/Makefile
-TEMPLATES += top/exampleBoot/ioc/st.cmd
-
-SCRIPTS += makeBaseApp.pl
-
-include $(TOP)/config/RULES.Host
diff --git a/src/makeBaseApp/iocAppBuildSRcontrol.html b/src/makeBaseApp/iocAppBuildSRcontrol.html
deleted file mode 100644
index b8e3eb13d..000000000
--- a/src/makeBaseApp/iocAppBuildSRcontrol.html
+++ /dev/null
@@ -1,2274 +0,0 @@
-
-
-
-
- EPICS: IOC Applications: Building and Source Release Control
-
-
-
-
-
-EPICS IOC Applications
-Building
-and
-Source Release Control
-
-
-
-Marty Kraimer, Janet Anderson , and Ralph Lange
-June 15, 1998
-EPICS Release 3.13.0.beta12
-
-
-
-Changes since beta11
-Between release 3.13.0.beta11 and 3.13.0.beta12 makeBaseApp was changed
-from one very long perl script to a four page perl script plus template
-files. It supports templates in addition to those supplied with EPICS base.
-Other improvements were made including support for capfast. The primary
-developer of the new version of makeBaseApp was Ralph Lange (BESSY). Rozelle
-Wright (LANL) and Thomas Birke (BESSY) contributed to this development.
-In addition no soft links are required so that makeBaseApp works on winXX
-hosts.
-
-
-Quick Start
-If you are new to EPICS or are trying a new release, then follow the instructions
-in section Quick Start. Look at all the files
-that are generated. They give examples of how to manage each of the IOC
-components.
-
-
-
-Index
-
-
-
-
-
-Overview
-Several EPICS Application Source/Release systems are available. Your site
-may have adapted one of them. Consult your EPICS system manager. This manual
-describes procedures that can be used for simple or complicated applications.
-
-
-This document describes how to create and build IOC applications. This
-includes:
-
--
-IOC databases.
-
--
-vxWorks startup files.
-
--
-State Notation Programs.
-
--
-New record types, device support, drivers.
-
--
-Access security configuration files.
-
--
-Other code to be executed in an IOC.
-
--
-Special Host code.
-
-In addition procedures are described for managing large applications. The
-principle features are:
-
--
-All editable files are placed under CVS control.
-
--
-The complete set of operational IOC software can be stored under a single
-operations directory structure.
-
--
-The IOC software is divided into <top> areas. Each <top>
-is maintained separately. Different <top> areas can be on different
-releases of external software such as EPICS base releases.
-
--
-Support such as special record/device/driver support can be shared across
-<top> areas. This is done by having a special <top>
-called share. share is built and made into releases.
-Other <top> areas attach to releases of share.
-
--
-Access security configuration files can be shared across <top>
-areas. This is done by having a special <top> area called ascf.
-Normally this would not be made into releases since it must be easily modified
-by operations. The ascf directory MUST reside in the same directory
-as the <top> areas that use it.
-
--
-Each application developer makes changes in a private copy of one or more
-<top> areas.
-
--
-cvs and gnumake are the only tools users execute to build
-applications.
-
--
-Templates are provided for creating new application directories. EPICS
-base provides two sets of templates: simple and example. Additional templates
-can be created.
-
-
-
-User Prerequisites
-This manual assumes that the reader:
-
--
-Understands the C language
-
--
-Knows how to use a text editor
-
--
-Has at least a superficial knowledge of the make utility
-
-
-
-System Prerequisites
-Before you can generate EPICS IOC applications your host and/or EPICS system
-manager must have done the following:
-
--
-Installed vxWorks and a board support package. Consult the vxWorks documentation
-for details.
-
--
-Installed EPICS base. This can be a specific EPICS release or the master
-EPICS tree.
-
-
-
-Make vs. Gnumake
-EPICS provides an extensive set of make rules. These rules only work with
-the GNU version of make, gnumake, which is supplied by the Free Software
-Foundation. Thus, on most Unix systems, the native make will not work.
-On some systems, e.g. Linux, GNU make may be the default. This manual always
-uses gnumake in the examples.
-
-
-Quick Start
-This section explains how to quickly create an example IOC application
-in a directory <top> and named example.
-
-Check Environment
-Execute the command:
-echo $HOST_ARCH
-This should display your workstation architecture.
-
-Create example Application
-Execute the commands:
-mkdir <top>
-cd <top>
-<base>/bin/<arch>/makeBaseApp.pl -t example example
-<base>/bin/<arch>/makeBaseApp.pl -i -t example example
-where:
-
-<top> - Any directory name you chose.
-
<base> - Full path name to EPICS base.
-
<arch> - Your host architecture.
-
-
For example at ANL/APS the following commands create an application:
-
cd
-mkdir myapp
-cd myapp
-/usr/local/epics/baseR3.13.0.beta12/bin/solaris/makeBaseApp.pl -t example example
-/usr/local/epics/baseR3.13.0.beta12/bin/solaris/makeBaseApp.pl -i -t example example
-WIN95/NT notes: Perl scripts are invoked with the command "perl
-<scriptname>" on win95/NT and
-
Perl scripts are case sensitive. For example to create an application
-on WIN95/NT:
- perl C:\epics\base\bin\win32\makeBaseApp.pl -t example example
-
-
-Inspect Files
-Spend some time looking at the files that appear under <top>.
-Do this BEFORE building.
-
-Build
-In directory <top> execute the command:
-gnumake
-
-
-Inspect Files
-Again look at all the files that appear under <top>.
-
-Boot Parameters
-The next step is to set the IOC boot parameters via the console serial
-port on your IOC. Life is much easier if you find out how to connect the
-serial port to a window on your workstation. See your EPICS system manager
-for details.
-
-The vxWorks boot parameters look something like the following:
-
boot device : xxx
-processor number : 0
-host name : xxx
-file name : <top>/bin/<target_arch>/vxWorks
-inet on ethernet (e) : xxx.xxx.xxx.xxx:<netmask>
-inet on backplane (b):
-host inet (h) : xxx.xxx.xxx.xxx
-gateway inet (g) :
-user (u) : xxx
-ftp password (pw) (blank = use rsh): xxx
-flags (f) : 0x0
-target name (tn) : <hostid for channel access security>
-startup script (s) : <top>/iocBoot/iocexample/st.cmd
-other (o) :
-The actual values for each field are site and IOC dependent. Consult your
-EPICS system manager for help. Two fields that you can change at will are
-the vxWorks boot image and the location of the startup script.
-
-Boot
-You are now ready to boot your IOC. If your boot parameters are defined
-properly, just press the reset button on your IOC. You will find it VERY
-convenient to have the console port of the IOC attached to a scrolling
-window on your workstation.
-
-Test
-See the description of the example given in section Templates
-Supplied with base. Also try some of the vxWorks shell commands described
-in chapter "IOC Test Facilities" of the Application Developer's Guide.
-
-
-Introduction
-
-
-Background
-Before EPICS base release 3.13, APS/ASD used an Application Source Release
-control system called appSR. appSR uses sccs for source file control. Since
-appSR was written several things that impact S/R control have changed.
-
--
-With release 3.13 the method of configuring record/device/driver support
-changed.
-
--
-Both EPICS base and extensions have switched from sccs to cvs.
-
--
-base/config, i.e. definitions and rules for GNU make, has evolved
-so that is now possible to create makefiles that are much simpler, more
-powerful, and extendable.
-
-For the above reasons we decided to redo the APS/ASD IOC Applications S/R
-control system. Our goals were:
-
--
-SCCS will go away.
-
--
-All functionality performed by appSR will be done via cvs and
-GNU make.
-
-A major decision is What Directory Structure should we use. Before
-the original appSR was written a lot of discussion went into this
-topic. There were several meetings between the Application Developers and
-Bob Zieman, who implemented appSR. This directory structure was used to
-implement the entire APS/ASD contol system software. Thus a lot of correct
-decisions were made. The only major problem is that it was not easy to
-share code, mainly record/device/driver support, across <top>
-areas. This resulted in sharing by copying source modules from one <top>
-area to another. When one developer would make changes to a source module,
-the other developers would often not even be aware of the changes. Thus
-over time the source modules evolved in different directions.
-
-Since the overall directory layout appears to be correct, it is kept
-in the new system. A brief description of the APS/ASD environment may help
-explain why the directory layout works.
-
--
-APS accelerator.
-
-
--
-The APS accelerator complex is composed of four major subsystems: Linac,
-PAR (Positron Accumulator Ring), Booster Syncrotron, and Storage Ring.
-Each subsystem is controlled by a separate set of IOCs. Thus it is entirely
-appropriate to have separate <top> areas for each subsystem.
-
--
-Each subsystem can be viewed as a separate set of applications, e.g. RF,
-Magnet Power Supplies, Diagnostics, etc.
-
-
--
-IOC responsibilities.
-
-
--
-A particular application may be spread over multiple IOCs. For example
-the control for storage ring applications is normally spread over many
-IOCs just because of the size of the storage ring.
-
--
-A particular IOC may contain parts of multiple applications. For example
-vacuum and power supplies normally share IOCs.
-
-
--
-Application Developers.
-
-
--
-For the Linac, a single Application Developer has final responsibility
-for all controls applications, i.e. RF, vacuum, Diagnostics, etc.
-
--
-For the par, booster, and sr, Application Developers are assigned application
-areas. For example the same person is responsible for almost all diagnostic
-controls for the par, booster, and storage ring.
-
-
-One other topic to discuss before describing the overall directory structure
-is the idealized Application Development Cycle. It consists of the
-following steps:
-
--
-Define I/O requirements.
-
-
This involves meeting with the user, in this case the engineers who
-are responsible for the application in order to decide the types and number
-of I/O modules needed.
--
-Assemble control hardware and software.
-
-
This includes IOCs, I/O modules, software device/driver support, etc.
-If EPICS software support is not already available, it has to be written
-and tested.
--
-Build databases, sequence programs, etc.
-
-In reality there is overlap between these steps. In addition as new needs
-arise the three steps again have to be performed. However, an application
-developer tends to spend a large part of his/her attention on each step
-before moving on to the next step.
-
-The application structure described in the next section is designed
-to meet these needs.
-
-Overview of Application Source Release Control
-The application directory structure appears as follows:
- <top>/
- config/
- xxxApp/
- src/
- xxxSrc/
- ...
- Db/
- xxxDb/
- ...
- xxxApp/
- ...
- iocBoot/
- iocxxx/
- ...
- bin/
- <host_arch>
- <target_arch>
- ...
-Each <top> area is a separately managed set of applications.
-Separately managed means that each <top> can be using it's
-own release of software obtained from outside the application, e.g. a release
-of EPICS base.
-
-Within a <top> area, multiple xxxApp subdirectories and
-a single iocBoot directory appear. The xxxApp areas are created by application
-developers as needed. The iocBoot directory contains a subdirectory for
-each IOC that belongs to that <top> area. No IOC belongs to
-more than one <top> area. All software components needed by
-IOCs are built in the xxxApp directories. Each IOC is booted from bin/<target_arch>
-(actually from any directory containing a vxWorks and vxWorks.sym
-compatible with the version of vxWorks against which the target was built)
-and uses a startup file from a subdirectory under iocBoot. The only important
-source file in a boot directory is the st.cmd file which is executed
-after vxWorks is started on an IOC. The st.cmd file loads various
-files built in the xxxApp directories.
-
-
Application developers decide what constitutes a <top>.
-For example, at APS, the Linac is completely contained in a single <top>
-area, while the RF is spread over three <top> areas: parrf,
-boosterrf, and srrf. No <top> area, however, contains iocxxx
-directories from multiple subsystems.
-
-
Now lets describe how the application developers use the above structure.
-
-
Under xxxApp are source and database directories. A source directory
-contains source files for building executables and database description
-files. Makefiles specify what to build. These makefiles can specify components
-obtained from outside the <top> area, such as EPICS base. After
-modifing files in this directory the command:
-
gnumake
-will rebuild components that depend on the modified files. (It will be
-seen below that the generated components are actually copied to an install
-directory)
-
-The database directories contain IOC database files and/or template
-and substitution files used to generate database files. If templates are
-used then whenever a template or substitution file is modified the command
-gnumake will recreate the database file(s).
-
-
After changes are made in any xxxApp directory, the affected IOCs can
-be rebooted from the appropriate iocBoot subdirectory. If new components
-are added, it may be necessary to modify st.cmd files.
-
-share
-As mentioned above the one major defect with the old appSR system is that
-there was no easy way to share code across <top> areas. To
-solve this problem a new <top> area called share is
-present. It is structured somewhat differently than other <top>
-areas, but development in it is done just like in any other <top>.
-Releases of share are created. A release contains built and installed
-object modules. Other <top> areas take things from releases
-of share rather then from share itself.
-
-At aps the releases of share, which are dependent on releases
-of EPICS base, are named:
-
baseXXXshareYYY
-where XXX is the EPICS base release and YYY is a release of share
-for that base release. At aps the share releases are stored at
-locations:
- /usr/local/iocapps/iocsys/baseXXXshareYYY
-If it is necessary to obtain a bug fix or enhancement to a single module
-from EPICS base or a share release, the application developer
-has at least two choices. The first is to build a new release of base or
-share. A second choice is to copy the source module to an appropriate
-src directory and build it there. In this case the developer must
-remember to use the version from share after share is
-rebuilt.
-
-Note: Other software packages can be handled like share.
-
-templates
-The makeBaseApp.pl utility creates new application areas. It does this
-by copying and transforming directory trees from a template area. EPICS
-base provides templates for a simple application and for an example application.
-Each site can, however, create their own set of templates.
-
-Tools
-The following tools are used:
-
--
-cvs
-
--
-gnumake - GNU make plus EPICS supplied configuration definitions,
-make rules, and script files.
-
-
-
-Classes of Users
-
-
--
-Application System Manager :
-
--
-The Application System Manager is responsible for the Operations Area.
-
--
-Application Developer :
-
--
-Anyone who tests, modifies, or extends an application's software. If multiple
-developers are working on the same system each should develop in a private
-development area.
-
-
-
-References
-Version Management with CVS for CVS 1.9, Per Cederqvist et al.
-
-GNU Make, Edition .51 for make Version 3.75 Beta, May 1996, Richard
-M. Stallman and Ronald McGrath
-
-
EPICS: Application Developer's Guide R3.13, Marty Kraimer
-
-
-Directory Structure
-
-
-Structure
-
- <top>/
- Makefile
- config/
-* CONFIG
-* CONFIG_APP
-* RELEASE
- RULES.Db
-* RULES.Host
-* RULES.Vx
- RULES.ioc
- RULES.iocBoot
- RULES_ARCHS
- RULES_DIRS
- RULES_TOP
- makeDbDepends.pl
- makeIocCdCommands.pl
- replaceVAR.pl
- xxxApp/ or xxxapp
- src/ or xxxSrc or xxxsrc
- Makefile
-* Makefile.Host
-* Makefile.Vx
-* base.dbd
-* baseLIBOBJS
-* <app>Include.dbd
-* <source code>
-* <state programs>
-* < menu, recordtype, device, driver database defs>
- Db/ or db or xxxDb or xxxdb
- Makefile
-* <record instance files>
-* <record template and substitution files>
- privately managed directories
- iocBoot/ or iocboot
- Makefile
- Makefile.Host
- nfsCommands
- iocxxx/
-* Makefile
-* st.cmd
-** cdCommands
-** dbd/
- <installed database description files>
-** db/
- <installed record instance files>
-** include/
- <installed include files>
-** bin/
- <host_arch>
- <installed Host executables>
- <ioc_arch>
- <installed IOC products>
- ...
-** lib/
-Files marked with an "*" are user created and/or edited. Each such file
-is discussed in this section.
-
-Files marked with "**" are directories created by gnumake. Since gnumake
-uninstall removes all files in these directories, no permanent files
-should be created in these directories.
-
-Directories
-The directories are:
-
--
-config
-
--
-Directory containing configuration files for gnumake.
-
--
-xxxApp or xxxapp
-
--
-Directory containing source files and database files. An arbitrary number
-of xxxApp directories are allowed. Each must have App
-or app appended to the name because Makefile looks for it.
-
-
--
-xxxsrc or xxxSrc
-
--
-Directory containing source files. An arbitrary number of source directories
-can appear under each xxxApp. The names must have the suffix src
-or Src. A source directory is where C code, sequence programs,
-scripts, etc. are created and built.
-
--
-xxxdb or xxxDb
-
--
-Directory containing record instance files. An arbitrary number of Db directories
-can exist under each xxxApp. The name must have the suffix db or
-Db. Each Db directory can contain record instance, template, and
-substitution files or the equivalent CapFast schematics.
-
-
--
-iocBoot or iocboot
-
--
-Directory containing a subdirectory for each IOC.
-
-
--
-iocxxx
-
--
-Directory from which IOC iocxxx is booted. Each must have ioc
-prepended to the name because iocBoot/Makefile looks for it.
-
-
--
-dbd
-
--
-Installed Database Definitions Directory.
-
--
-include
-
--
-Include Directory. The directory in which include files generated from
-menu and record type definitions are installed.
-
--
-bin
-
--
-Bin Directory. This directory contains a subdirectory for the host architecture
-and for each target architectiure. These are the directories in which executables,
-binaries, etc. are installed.
-
--
-lib
-
--
-Library Directory. This directory contains a subdirectory for the host
-architecture and for each target architectiure. These are the directories
-in which libraries are installed.
-
--
-db
-
--
-Installed Databases Directory. The directory into which record instance,
-template and substitutions files are installed.
-
-
-
-Makefiles
-The makefiles are described in section Description
-of Makefiles below.
-
-<top>/config/*
-These files contain definitions included in the various makefiles.
-
--
-CONFIG
-
--
-This is the file in which you add to or modify make variables in EPICS
-base. A useful definition to override is:
-
- CROSS_COMPILER_TARGET_ARCHS =
-
--
-This specifies the vxWorks architecture to build. If your site builds base
-for multiple target architectures but your IOCs only use a single architecture,
-overriding this variables saves build time.
-
--
-If you are using capfast you may want to add the definition:
-
-
-DB_OPT = YES
-
-
--
-CONFIG_APP
-
--
-This file contains definitions for external products such as EPICS base
-and share. You should edit this file if you are using external products
-besides epics_base and share. Follow the
-models already in the file.
-
--
-RELEASE
-
--
-This file specifies the location of external products such as EPICS base.
-The procedures for going to a new release of an external product are described
-later in this chapter. One step in the procedures is to edit this file.
-The config files created by makeBaseApp provide support for the following
-variables:
-
-EPICS_BASE
--
-This variable must be defined.
-
--
-SHARE
-
--
-This variable, which is optional, specifies the location of a release of
-a <top> area containing code that can be shared by other applications.
-
--
-TEMPLATE_TOP
-
--
-This variable specifies the location of the template top area for makeBaseApp.
-
-IMPORTANT: Each of the above variables must be specified with a
-full path name.
--
-RULES.Db
-
--
-This file contains rules for building and installing database files. Databases
-generated from templates and/or CapFast schematics are supported.
-
--
-RULES.Host
-
--
-The template file includes the RULES.Host from base. If you want
-to add rules that apply to all Makefile.Host files then this is
-the place to add the rules.
-
--
-RULES.Vx
-
--
-The template file includes the RULES.Vx from base. If you want
-to add rules that apply to all Makefile.Vx files then this is
-the place to add the rules.
-
--
-RULES.ioc
-
--
-This is a file containing rules for the Makefiles in the directories from
-which IOCs are booted.
-
--
-RULES.iocBoot
-
--
-This is a file containing rules for the Makefiles in the iocBoot directory.
-It should not be necessary to modify this file.
-
--
-RULES_ARCHS
-
--
-This file includes the RULES_ARCHS from base. It is seldom necessary
-to modify this file.
-
--
-RULES_DIRS
-
--
-This file includes the RULES_DIRS from base. It is seldom necessary
-to modify this file.
-
--
-RULES_TOP
-
--
-This file includes RULES_TOP from base. If MASTER_IOCAPPS is defined it
-also runs a utility that creates soft links to the master IOC. This feature
-only works if the host operating system supports soft links.
-
--
-makeIocCdCommands.pl
-
--
-This is a perl script that generates a cdCommands file for use
-by IOCs.
-
--
-makeDbDepends.pl
-
--
-This is a perl script that generates make dependencies from substitutions
-files.
-
--
-replaceVAR.pl
-
--
-This is a perl script that changes VAR(xxx) style macros in CapFast
-generated databases into the $(xxx) notation used in EPICS databases.
-
-
-
-base.dbd and <app>Include.dbd
-NOTE: A version of base.dbd can be obtained from
-<epics_base>/templates/makeBaseApp/top/exampleApp/src.
-These files are used to configure database definitions for the following:
-
--
-menus
-
--
-record types
-
--
-device support
-
--
-driver support
-
--
-breakpoint tables
-
-When gnumake is executed, an expanded file, i.e. a file with all
-include statements expanded, is installed into:
- <top>/dbd/
-with the name specified by DBDNAME in Makefile.Host.
-
-base.dbd contains definitions obtained from the base release.
-It contains definitions like:
-
include "menuGlobal.dbd"
- include "menuConvert.dbd"
- include "aiRecord.dbd"
- #include "aaiRecord.dbd"
- ...
- device(ai,CONSTANT,devAiSoft,"Soft Channel")
- #device(ai,CONSTANT,devAiSoftRaw,"Raw Soft Channel")
- ...
- #driver(drvXy010)
- #driver(drvVxi)
- ...
-Thus it has a definition for all menus, record types, devices, and drivers
-supplied in EPICS base. Some record types and ALL hardware device and driver
-support are proceeded by the comment symbol "#". You are expected to edit
-this file and select the desired support routines, by removing the "#"
-from the desired support.
-
-File <app>Include.dbd, which contains definitions like:
-
include "base.dbd"
- #local menu, record, device, driver, breakpoint definitions
-is the place where you define locally built support.
-
-baseLIBOBJS
-NOTE: A version of baseLIBOBJS can be obtained from
-<epics_base>/templates/makeBaseApp/top/exampleApp/src.
-This file defines all the object modules for record, device, and driver
-support supplied by EPICS. Since the file is intimately related to base.dbd,
-if base.dbd (is, is not) used in a particular xxxApp/src
-directory, then baseLIBOBJS should (be, not be) used in that directory.
-
-baseLIBOBJS contains definitions as follows:
-
#LIBOBJS += $(EPICS_BASE_BIN)/aaiRecord.o
- #LIBOBJS += $(EPICS_BASE_BIN)/aaoRecord.o
- LIBOBJS += $(EPICS_BASE_BIN)/aiRecord.o
- ...
- #
- # Device Support
- #
- #LIBOBJS += $(EPICS_BASE_BIN)/devAaiCamac.o
- ...
- #
- # Driver support ANSI
- #
- #LIBOBJS += $(EPICS_BASE_BIN)/drvAb.o
- ...
-Thus it has a definition for all record, device and driver support supplied
-in EPICS base. Some record types and ALL hardware device and driver support
-are proceeded by the comment symbol "#". You are expected to edit this
-file and select the desired support routines, by removing the '#' from
-the front of the appropriate lines. Makefile.Vx contains rules
-that will combine all support into a single module called xxxSupport.
-
-APOLOGY: It would be nice if this file could be automatically
-generated. This is not possible because there is no naming convention for
-device support source files.
-
-st.cmd
-The vxWorks startup file is described in a later section.
-
-
-makeBaseApp
-makeBaseApp is a perl script that creates application areas. It can create
-the following:
-
--
-<top>/Makefile
-
--
-<top>/config - A subdirectory and associated files
-
--
-<top>/xxxApp - A set of directories and associated files for a new <top>
-level application.
-
--
-<top>/iocBoot - A subdirectory and associated files.
-
--
-<top>/iocBoot/iocxxx - A subdirectory and associated files.
-
-makeBaseApp creates directories and then copies template files with replacements
-into the newly created directories. EPICS base supports two sets of template
-files: simple and example. These are meant for simple applications. Each
-site, however, can provide its own set of template files which may provide
-additional functionality. This section will describe the functionality
-of makeBaseApp itself and the next section will describe details about
-the simple and example templates.
-
-makeBaseApp has the following usage:
-
<base>/bin/<arch>/makeBaseApp.pl -l
-
-<base>/bin/<arch>/makeBaseApp.pl -t type [options] app ...
- create application directories
-<base>/bin/<arch>/makeBaseApp.pl -i -t type [options] ioc ...
- create ioc boot directories
-where
- app Application name (the created directory will have "App" appended to name)
- ioc IOC name (the created directory will have "ioc" prepended to name)
-
- -t type Set the application type (-l for a list of valid types)
- If not specified, type is taken from environment
- If not found in environment, "default" is used
- -T top Set the template top directory (where the application templates are)
- If not specified, top path is taken from config/RELEASE
- If config does not exist, top path is taken from environment
- If not found in environment, the templates from EPICS base are used
- -l List valid application types for this installation
- If this is specified the other options are not used
- -a arch Set the IOC architecture (e.g. mv167)
- If not specified, you will be prompted
- -b base Set the location of EPICS base (full path)
- If not specified, base path is taken from config/RELEASE
- If config does not exist, base path is taken from command
- -d Verbose output (useful for debugging)
-
-Environment Variables:
-EPICS_MBA_DEF_APP_TYPE Application type you want to use as default
-EPICS_MBA_TEMPLATE_TOP Template top directory
-
-
To create a new <top> issue the commands:
- mkdir <top> # If <top> does not exist
- cd <top>
- <base>/bin/<arch>/makeBaseApp -t <apptype> <app> ...
- <base>/bin/<arch>/makeBaseApp -i -t <apptype> <ioc> ...
-makeBaseApp does the following:
-
--
-EPICS_BASE is located
-
-
--
-If the -b option is specified it is used.
-
--
-If <top>/config/RELEASE exists and defines EPICS_BASE
-it is used.
-
--
-It is obtained from the invocation of makeBaseApp. For this to work makeBaseApp
-must be executed via a full path name (including the revision number) to
-the makeBaseApp in the EPICS base release you are using.
-
-
--
-TEMPLATE_TOP is located
-
-
--
-If the -T option is specified it is used.
-
--
-If <top>/config/RELEASE exists and defines TEMPLATE_TOP
-it is used.
-
--
-If EPICS_MBA_TEMPLATE_TOP is defined it is used.
-
--
-It is set equal to <epics_base>/templates/makeBaseApp/top
-
-
--
-If -l is specified the list of application types is listed and
-makeBaseApp terminates.
-
--
-If -i is specified and -a is not then the user is prompted
-for the IOC architecture.
-
--
-The application type is determined.
-
-
--
-If -t is specified it is used.
-
--
-If EPICS_MBA_DEF_APP_TYPE is defined it is used.
-
--
-If template defaultApp exists, the application type is set equal
-to default.
-
--
-If template exampleApp exists, the application type is set equal
-to example.
-
-
--
-If -i is specified Boot is appended to the application
-type, otherwise App is appended.
-
--
-If the application type is not in TEMPLATE_TOP, makeBaseApp issues
-an error and terminates.
-
--
-Two perl subroutines are defined
-
-
--
-ReplaceFilename - This substitutes for the following in names of any file
-taken from the templates.
-
-
--
-_APPNAME_
-
--
-_APPTYPE_
-
-
--
-ReplaceLine - This substitutes for the following in each line of each file
-taken from the templates.
-
-
--
-_USER_
-
--
-_EPICS_BASE_
-
--
-_ARCH_
-
--
-_APPNAME_
-
--
-_APPTYPE_
-
--
-_TEMPLATE_TOP_
-
--
-_IOC_
-
-
-
--
-If the application type directory has a file named Replace.pl,
-it can:
-
-
--
-replace the two perl subroutines
-
--
-add a subroutine ReplaceFilenameHook($file) which is called at
-the end of ReplaceFilename.
-
--
-add a subroutine ReplaceLineHook($line) which is called at the
-end of ReplaceLine.
-
--
-contain code which is run after the command line options are interpreted.
-
-
--
-If Makefile does not exist, it is created.
-
--
-If directory config does not exist, it is created and populated
-with all the config files.
-
--
-If -i is specified
-
-
--
-If directory iocBoot does not exist, it is created and the files
-from the template boot directory are copied into it.
-
--
-For each <ioc> specified on the command line a directory iocBoot/ioc<ioc>
-is created and populated with the files from the template (with ReplaceLine()
-tag replacement).
-
-
--
-If -i is NOT specified
-
-
--
-For each <app> specified on the command line a directory <app>App
-is created and populated with the directory tree from the template (with
-ReplaceLine() tag replacement).
-
-
-
-
-Application Templates Supplied
-with base
-
-
-
-
-EPICS base supplies the following sets of template files
-
--
-exampleApp
-
--
-exampleBoot
-
--
-simpleApp
-
--
-simpleBoot
-
-simpleApp creates an xxxApp with a Db and src directory. Each directory
-contains skeleton makefiles. simpleBoot creates an iocBoot directory and
-iocBoot/iocxxx directories. Each directory contains makefiles. The iocxxx
-directories also contain a skeleton st.cmd file.
-
-exampleApp and exampleBoot create a complete example application. It
-contains the following files.
-
<app>App
- src/
- Makefile
- Makefile.Host
- Makefile.Vx
- caExample.c
- sncExample.st
- xxxRecord.dbd
- xxxRecord.c
- devXxxSoft.c
- <app>Include.dbd
- base.dbd
- baseLIBOBJS
- Db/
- Makefile
- Makefile.Host
- dbExample1.db
- dbExample2.template
- dbExample2.substitutions
-
- iocBoot
- Makefile
- nfsCommands
- ioc<app>
- Makefile
- st.cmd
-
-
-
--
-caExample.c
-
--
-A Host application that interfaces to Channel Access. It is executed from
-a Unix shell by issuing the command:
-
- caExample "pvname"
-It issues a Channel Access get request for the specified process variable
-and prints the value. If you have booted an IOC from the example then try
-the following:
-
--
-On the IOC console type the command:
-
-
dbl
-This produces a list of all the records the IOC contains.
-
-On the host system change to the directory: <top>/bin/<host_arch>/
-
-
-Execute the command:
-
- caExample "pvname"
-where pvname is one of the record names shown by dbl
-
-
-dbExample1.db
-
-
-This is an example of record instances. Each name is proceeded by <userid>,
-which is the userid of the person who executed makeBaseApp. The records
-are:
-
-
--
-<userid>aiExample
-
--
-This is a passive ai (analog input) record which obtains its input from
-record calcExample,
-
--
-<userid>calcExample
-
--
-This is a calc (calculation) record that acts as a counter that continually
-counts from 0 to 9. It is scanned once a second. It also has a forward
-link to aiExample. Since aiExample is passive it will also scan once a
-second.
-
--
-<userid>xxxExample
-
--
-This is a sample record of type xxx, as described below. It is a passive
-record. You can change its VAL field via a Channel Access client or via
-the dbpf IOC command.
-
-
-
-dbExample2.template / dbExample2.substitutions
-
-
-This is another example of record instances. The database is generated
-from a template database, which is instantiated using the entries in the
-substitutions file. Each name is proceeded by <userid>, which
-is the userid of the person who executed makeBaseApp. Each line in the
-substitutions file creates a two record database, whose records are described
-above (aiExample and calcExample).
-
-
-sncExample.st
-
-
-This is a sequencer, i.e. state notation language, example. It prints a
-message on the IOC console every time the VAL field of record <userid>xxxExample
-becomes > 5.0 and also every time it becomes <=5.0..
-
-
-xxxRecord.dbd xxxRecord.c
-
-
-A skeleton record support module. The record support module is the one
-described in the Application Developer's Guide.
-
-
-devXxxSoft.c
-
-
-A device support module for xxxRecord. The device support module provides
-synchronous support for the record support.
-
-
-
-
-st.cmd
-NOTE: The commands dbLoadDatabase, dbExpand, dbLoadRecords, and dbLoadTemplate
-are described in chapter , "Database Definition" of the Application Developer's
-Guide.
-
-This file is the vxWorks startup file. The version created by makeBaseApp
-is:
-
# Example vxWorks startup file
- #Following must be added for many board support packages
- #cd <full path to target bin directory>
- < cdCommands
-
- #< nfsCommands
-
- cd appbin
- ld < iocCore
- ld < xxxLib
- #ld < seq
-
- cd startup
- dbLoadDatabase("../../dbd/xxxApp.dbd")
- dbLoadRecords("../../db/xxx.db","user=USER")
- dbLoadTemplate("../../db/xxx.substitutions")
-
- iocInit
-
- #start sequence programs
- #seq &sncxxx
-
-The cdCommands file defines vxWorks variables so that cd commands
-may be used later in the startup file. Definitions are provided for
-
--
-appbin - A full path name to <top>/bin/<target_arch>
-
--
-startup - A full path name to <top>/iocBoot/iocxxx
-
--
-share - A full path name to share if SHARE is defined
-in <top>/config/RELEASE
-
-The first ld command loads the core EPICS components. File xxxLib
-is installed when gnumake is run in the <top>/xxxApp/src directory.
-It contains the executable for all record, device, and driver support as
-well as any other application specific object modules. If an IOC wants
-to use support generated in a sub-application src directory, this statement
-will have to be changed to coincide with the LIBNAME value.
-
-The dbLoadDatabase command loads the definitions of all menus,
-record types, device support, driver support, and breakpoint tables needed
-in this IOC. These are actually expanded files created by dbExpand and
-installed into dbd. If an application wants to use database definitions
-generated in a sub-application src directory, this statement will have
-to be changed to coincide with the DBDNAME value.
-
-
The command:
-
dbLoadRecords("../../db/xxx.db","user=USER")
-is an example command for loading record instances. One of these commands
-is supplied for each record instance file.
-
-The command:
-
dbLoadTemplate("../../db/xxx.substitutions")
-is an example command for loading record templates. One of these commands
-is supplied for each substitutions file.
-
-The iocInit command initializes the EPICS system.
-
-
The remaining commands in the file show how to load and start sequence
-programs.
-
-
-Switching to a new Release
-The file <top>/config/RELEASE contains definitions for components
-obtained form outside <top>. If you want to link to a new release
-of anything defined in the file do the following:
-cd <top>
-gnumake clean uninstall
-vi <top>/config/RELEASE
-cd <top>
-gnumake
-Note that all definitions in <top>/config/RELEASE must be complete
-path definitions, i.e. relative path names are not permitted. If your site
-keeps releases of base and/or share, the path definitions should contain
-the release number (e.g. EPICS_BASE=/usr/local/epics/baseR3.13.0.beta12).
-
-
-Make
-
-
-Where make can be Executed
-Make can be executed in any subdirectory where a Makefile appears, which
-is almost every subdirectory.
-
--
-<top>
-
--
-The most useful commands at the top level directory are:
-
-
--
-gnumake clean uninstall
-
-
This command removes everything created or installed by make.
--
-gnumake
-
-
This rebuilds and installs everything which is not up to date.
-
NOTE: executing gnumake without arguments is the same as "gnumake install"
--
-gnumake rebuild
-
-
This is the same as
-
gnumake clean install
-NOTE: If you are confused about the state of the generated files, just
-execute "gnumake rebuild ".
-
-gnumake tar
-
-
This command makes a tar image of the entire <top> directory with
-the CVS directories excluded.
-
-
-xxxApp
-
-
-Two useful commands at this level are
-
-
-
-gnumake
-
-or
-
-gnumake rebuild
-
-
-
-
-which is the same as issuing the command in each subdirectory of xxxApp.
-
-
-
-xxxApp/src or xxxApp/xxxSrc
-
-
-Running the command:
-
- gnumake
-
-
-which is the same as executing "gnumake install" builds
-and installs all out of date Host and IOC components described by the files
-Makefile.Host and Makefile.Vx. The builds are performed
-in subdirectories O.<arch>.
-
-
-
-It is possible to build for a single architecture via the command:
-
-
- gnumake <arch>
-
-
-
-For example, if your IOC is an MV167 system, then the directory is O.mv167,
-and the make command is:
-
-
- gnumake mv167
-
-
-
-Another useful command is:
-
-
- gnumake clean
-
-
-
-This removes the host and target architecture directories created by make.
-".<arch>" can be appended to invoke clean for a particular architecture.
-
-
-The command:
-
-
-
-gnumake rebuild
-
-
-
-
-is the same as "gnumake clean install".
-
-
-xxxApp/xxxDb
-
-
-Executing gnumake in this directory generates and installs database instance
-files, template and substitution files plain sources or CapFast schematics.
-
-
-iocBoot
-
-
-Executing
-
- gnumake
-
-
-is the same as issuing "gnumake" in each subdirectory of iocBoot.
-
-
-iocBoot/iocxxx
-
-
-Executing gnumake in this directory creates the cdCommands
-file.
-
-
-
-make targets
-The following is a summary of targets that can be specified for gnumake:
-
--
-<action>
-
--
-<arch>
-
--
-<action>.<arch>
-
--
-<dir>
-
--
-<dir>.<action>
-
--
-<dir>.<arch>
-
--
-<dir>.<action>.<arch>
-
-where:
-
--
-<arch>
-
--
-sun4, solaris, hp700, mv167, etc.
-
-
or
-
host - Builds for host architecture only.
-
or
-
cross - builds for vxWorks architecture(s) only.
--
-<action>
-
--
-clean, inc, install, build, rebuild, buildInstall, uninstall, or tar
-
-
NOTE: uninstall and tar can only be specified at <top>
--
-<dir>
-
--
-subdirectory name
-
-
-
-
-Description of Makefiles
-
-
-<top>/Makefile
-This makefile performs a make in the xxxApp and iocBoot subdirectories.
-In addition it allows the top level make options uninstall and tar described
-in the previous section. There is seldom need to modify this file.
-
-<top>/xxxApp/Makefile
-This makefile just executes make in each *src*, *Src*,
-*db* and *Db* subdirectory.
-
-<top>/xxxApp/src/Makefile.Host
-The following IOC related components can be built:
-
--
-Breakpoint Tables
-
--
-For each breakpoint table add the following definition
-
- BPTS += <table name>.dbd
-
--
-Record Support
-
--
-For each new record type, the following definitions must be added to the
-makefile:
-
-
- RECTYPES += <rectype>Record.h
-
-
--
-and the record support files:
-
-
- <Record>Record.dbd
-
-
--
-must exist.
-
--
-If a menuXXX.dbd file is present, then add the following definition:
-
-
- MENUS += menu<name>.h
-
-
--
-Expanded Database Definition File
-
-Files containing database definition files are expanded by utility
-dbExpand and installed into <top>/dbd. The following variables are available.
- DBDEXPAND += xxxInclude.dbd
- DBDNAME = xxxApp.dbd
- USER_DBDFLAGS += -I <include path>
- USER_DBDFLAGS += -S <macro substitutions>
-
- DBDINSTALL += xxx.dbd
-where:
-
-
-DBDEXPAND - A file containing database definitions.
-
-
-DBDNAME - The name of the file containing expanded definitions
-to be created and installed into <top>/dbd.
-
-
-USER_DBDFLAGS - Flags for dbExpand. Currently only an include
-path and macro substitution are supported.
-
-
DBDINSTALL - Installs the file into <top>/dbd.
-
-
-Makefile.Host has many facilities for building host components..
-Replace <arch_class> in the following by the specific architecture class.
-
-USR_CFLAGS C compiler flags for all systems
-USR_CFLAGS_<arch_class> os-specific C compiler flags
-USR_CFLAGS_DEFAULT C compiler flags for systems with no
- USR_CFLAGS_<arch_class> specified
-
-USR_CXXFLAGS C++ compiler flags for all systems
-USR_CXXFLAGS_<arch_class> os-specific C++ compiler flags
-USR_CXXFLAGS_DEFAULT C++ compiler flags for systems with no
- USR_CXXFLAGS_<arch_class> specified
-
-INC include-files to install for all systems
-INC_<arch_class> os-specific includes go to the
- include/os-directory:
-INC_DEFAULT include-files to install for systems
- with no INC_<arch_class> specified
-
-LIBSRCS source files for building library,
- specified as LIBSRCS += xxx.c yyy.c zzz.c
-LIBSRCS_<arch_class> os-specific library source files
-LIBSRCS_DEFAULT library source files for systems with no
- LIBSRCS_<arch_class> specified
-
-PROD Product names (without execution suffix)
- to build and install (e.g. PROD=myprod)
-PROD_<arch_class> os-specific products to build and install
-PROD_DEFAULT products to build and install for systems
- with no PROD_<arch_class> specified
-
-SRCS Source files needed to build every PROD
- (e.g. SRCS=a.c b.c c.c )
-
-PROD_LIBS libs needed to link every PROD for all systems
-PROD_LIBS_<arch_class> os-specific libs needed to link every PROD
-PROD_LIBS_DEFAULT libs needed to link every PROD for systems with
- no PROD_LIBS_<arch_class> specified
-
-<lib>_DIR Directory to search for the specified lib. (For libs
- in PROD_LIBS, <PROD>_LIBS, <target>_LIBS, and USR_LIBS)
-
-SYS_PROD_LIBS system libs needed to link every PROD for all systems
-SYS_PROD_LIBS_<arch_class> os-specific system libs needed to link every PROD
-SYS_PROD_LIBS_DEFAULT system libs needed to link every PROD for systems with
- no SYS_PROD_LIBS_<arch_class> specified
-
-<prod>_SRCS Source files needed to build a specific PROD
- (e.g. myprod_SRCS=a.c b.c c.c )
-<prod>_SRCS_<arch_class> os specific source files to build a specific PROD
-<prod>_ARCS_DEFAULT source files needed to build a specific PROD for systems
- with no <prod>_SRCS_<arch_class> specified
-
-<prod>_CFLAGS prod specific C compiler flags (e.g. xxxRecord_CFLAGS )
-<prod>_CXXFLAGS prod specific C++ compiler flags
-<prod>_CPPFLAGS prod specific cpp flags
-<prod>_LDFLAGS prod specific ld flags
-<prod>_LIBS prod specific ld libraries (e.g. X11 Xt )
-<prod>_SYS_LIBS prod specific system ld libraries (e.g. m)
-
-SCRIPTS scripts to install
-SCRIPTS_<arch_class> os-specific scripts to install
-SCRIPTS_DEFAULT scripts to install for systems with no
- SCRIPTS_<arch_class> specifieD
-
-SHARED_LIBRARIES Build shared libraries? Must be YES or NO
-SHARED_LIBRARIES_<arch_class> Build os specific shared libraries? Must be YES or NO
-SHARED_LIBRARIES_DEFAULT Build shared libraries for os systems with
- no SHARED_LIBRARIES_<arch_class> specified
-
-SHRLIB_VERSION Shared library version number
-
-USER_VPATH List of directories that gnumake should
- search for files not in current dir.
-
-LIBRARY Name of library to build. The name should
- NOT include a prefix or extension, i.e.
- specify Ca NOT libCa.a
-
-TESTPROD Product names (without execution suffix)
- to build but not install. Built from
- source file having same name.
-
-TESTPROD_SRCS Source files needed to build every TESTPROD
-
-INSTALL_DIR Location of install directory (default $(TOP))
-
-MAN1,MAN2,MAN3... Name of man files to be installed
- into $(INSTALL_DIR)/man/mani directory
-
-DOCS Name of text files to be installed into
- the $(INSTALL_DIR)/doc directory
-
-TEMPLATES_DIR Template directory to be created,
- $(INSTALL_DIR)/templates/$(TEMPLATE_DIR)
-TEMPLATES List of template files to be installed
- into $(TEMPLATE_DIR)
-
-
-USR_CPPFLAGS cpp flags (for all makefile compiles)
-USR_INCLUDES Directories to search for include files
- (e.g. -I$(EPICS_EXTENSIONS_BIN) )
-USR_LDFLAGS linker options (for all makefile links)
-
-USR_LDFLAGS_<arch_class> os specific linker options (for all makefile links)
-
-USR_LIBS load libraries (e.g. -lXt -lX11) (for all makefile links)
-
-USR_LIBS_<arch_class> os specific load libraries (for all makefile links)
-
-YACCOPT yacc options
-LEXOPT lex options
-SNCFLAGS snc options
-E2DB_FLAGS e2db options
-SCH2EDIF_FLAGS sch2edif options
-RANLIBFLAGS ranlib options
-
-<target>_CFLAGS target specific C compiler flags (e.g. xxxRecord_CFLAGS)
-<target>_CXXFLAGS target specific C++ compiler flags
-<target>_CPPFLAGS target specific cpp flags
-<target>_LDFLAGS target specific ld flags
-<target>_LIBS target specific ld libraries (e.g. X11 Xt )
-
-<target>_INCLUDES Directories to search for include files for a
- specific target (e.g. -I$(MOTIF_INC))
-
-HOST_WARN Are compiler warning messages desired
- (YES or NO) (default is NO)
-HOST_OPT Optimization level (default is no optimization)
-
-STATIC_BUILD Is static build desired (YES or NO)
- (default is NO)
-
-CLASSES Names of Java classes to be built and installed
-TESTCLASSES Names of Java classes to be built
-PACKAGE Names of Java package to be installed
-JAR Name of Jar file to be built
-JAR_INPUT Names of files to be included in JAR
-MANIFEST Name of manifest file for JAR
-
-RCS Resource files needed to build every PROD
-<prod>_RCS Resource files needed to build a specific PROD
-<prod>_RCS_<arch_class> os specific resource files to build a specific PROD
-
-
-<top>/xxxApp/src/Makefile.Vx
-The following components can be built:
-
--
-Record Support
-
--
-For each new record type, the following definitions must be added to the
-makefile
-
-
- LIBOBJS += <rectype>Record.o
-
-
--
-and the record support files:
-
-
- <Record>Record.c
-
-
--
-must exist.
-
--
-Device, Driver, other C modules
-
--
-For each such module, add a definition:
-
-
- LIBOBJS += <name>.o
-
-
--
-Each file will be placed in the library specified by LIBNAME.
-
--
-It is also possible to generate object files not placed in LIBNAME via
-the definitions:
-
-
- PROD += <name>.o
- or
- TARGETS += <name>.o
-Both will cause the specified file to be generated, PROD will also install
-the generated file into <top>/bin/<target_arch>.
-
-
--
-LIBNAME
-
--
-A file containing all LIBOBJS is installed into <top>/bin/<arch>
-with the name specified by LIBNAME. If Makefile.Vx appears in
-xxxApp/src, the definition should be:
-
-
- LIBNAME = xxxLib
- LIBNAME_CXX = xxxLib
-
-
--
-The first is for c libraries and the second for c++ libraries.
-
--
-State Notation Programs
-
--
-For each state notation program, add the definition:
-
-
- LIBOBJS += <name>.o
-
-
--
-The state notation programs must be named <name>.st.
-
--
-Scripts, etc.
-
--
-A definition of the form:
-
-
- SCRIPTS += <name>
-
-
--
-results in file <name> being installed from the src directory
-to the <top>/bin/<arch> directory.
-
--
-vxWorks, vxWorks.sym, iocCore, and seq
-
--
-In order to have vxWorks, vxWorks.sym, iocCore, and seq in the bin directory,
-the following must appear:
-
-
- INSTALLS += vxWorks vxWorks.sym iocCore seq
-
-
--
-NOTE: INSTALLS only needs to appear in one application.
-
-
-Other definitions
-USR_CFLAGS C compiler flags
-USR_CXXFLAGS C++ compiler flags
-USR_INCLUDES Include directory (e.g. -I$(EPICS_EXTENSIONS_BIN) )
-USR_LDFLAGS linker options
-
-INC include-files to install
-MAN1,MAN2,... Man files to be installed
-BIN_INSTALLS Files in any directory to install to $(INSTALL_BIN)
-DOCS Text files to install into $(INSTALL_DIR)/doc
-
-
-YACCOPT yacc options
-LEXOPT lex options
-CPPFLAGS cpp options
-SNCFLAGS snc options
-
-<target>_CFLAGS target specific C compiler flags
-<target>_CXXFLAGS target specific C++ compiler flags
-<target>_CPPFLAGS target specific cpp flags
-<target>_SNCFLAGS target specific state notation language flags
-<target>_LDFLAGS target specific ld flags
-
-VX_WARN Compiler warning messages desired (YES or NO) (default NO)
-VX_OPT Optimization level (default is no optimization)
-
-
-INSTALL_DIR Installation directory (defaults to $(TOP))
-
-
-
-<top>/xxxApp/xxxDb/Makefile.Host
-This makefile creates and installs databases and related files.
-
-Databases
-Supported are:
-
--
-Plain databases
-
-
--
-from dct/gdct/editor generated source files (*.db)
-
--
-from CapFast schematics (*.sch)
-
-
--
-Template generated databases
-
-
--
-template database from dct/gdct/editor generated source file (*.template)
-
--
-template database from CapFast schematic (*.sch)
-
--
-substitutions file from editor generated source (*.substitutions)
-
--
-substitutions file generated by a script (e.g. querying a relational database)
-
-
--
-Database optimization using the dbst tool (i.e. removing all fields
-with default values)
-
-For template generated databases either the fully inflated database or
-the template and substitutions files may be installed (so the IOC may load
-the database using dbLoadRecords() or dbLoadTemplate()).
-
-For all these types of databases, the names of the files to install
-have to be specified. Make will figure out how to generate these files:
-
DB += xxx.db
-
-will generate xxx.db depending on which source files exist. If xxx.db is
-template generated, the inflated database will be installed.
- DB += xxx.template xxx.substitutions
-
-will generate and install these files, i.e. the database will be inflated
-when it is loaded by the IOC using dbLoadTemplate().
-
All template files that are used, but not installed (i.e. those not
-specified in DB), must be specified:
- USES_TEMPLATE += yyy.template
- USES_TEMPLATE += $(SHARE)/installDb/zzz.template
-
-If specified with a path (full or relative), the templates will be soft
-linked (UNIX) or copied (WIN) into the O.<arch> directory.
-After the first make run, template dependencies will be generated automatically.
-
-If there is no *.substitutions source for a needed substitutions file,
-but a variable defining a script name (like CREATESUBSTITUTIONS=CreateSubst.pl),
-this script will be called with the prefix of the substitution file name
-to be generated.
-
-
NOTE: If (and only if) there are script generated substitutions files,
-the prefix of any inflated database's name may not equal the prefix of
-the name of any template used within the directory.
-
-
Other definitions:
-
E2DB_FLAGS e2db options
-SCH2EDIF_FLAGS sch2edif options
-
-
-Related Files
-
-
-Expanded Database Definition File
-
-
--
-Files containing database definition files are expanded by utility dbExpand
-and installed into <top>/dbd. The following variables are available.
-
-
-DBDEXPAND += xxxInclude.dbd
-DBDNAME = xxxApp.dbd
-USER_DBDFLAGS += -I <include path>
-USER_DBDFLAGS += -S <macro substitutions>
-
-DBDINSTALL += xxx.dbd
-
-
-
-
--
-where:
-
-
-
-
-DBDEXPAND - A file containing database definitions.
-
-
-DBDNAME - The name of the file containing expanded definitions
-to be created and installed into <top>/dbd.
-
-
-USER_DBDFLAGS - Flags for dbExpand. Currently only an include
-path and macro substitution are supported.
-
-
-DBDINSTALL - Installs the file into <top>/dbd.
-
-
-
-
-
-Breakpoint Tables
-
-
-For each breakpoint table add the following definition
-
- BPTS += <table name>.dbd
-
-
-<top>/iocBoot/Makefile
-This executes make in each subdirectory.
-
-<top>/iocBoot/iocxxx/Makefile
-This makefile has a rule to generate cdCommands. Make sure that the definition:
- ARCH = <arch>
-
-refers to the correct architecture for your IOC processor.
-
-Since cdCommands is generated the user generated and/or modified files
-are independent of location even though cdCommands contains full path names.
-
-
-CVS
-The CVS utility is used to put all user editable files under source/release
-control. This section gives a brief description of the commands normally
-used by application developers. Consult the CVS manual for more details.
-
-CVSROOT
-Your environment variable CVSROOT should point to the CVS repository for
-IOC Applications. The following command displays the location of CVSROOT:
- echo $CVSROOT
-For example, at APS/ASD the command should show:
- /usr/local/iocapps/cvsroot
-At APS all <top> applications are stored under $CVSROOT/iocsys.
-Other sites may use a different convention.
-
-Commands
-This section gives a brief description of the CVS commands. Wherever <filename>
-is shown a list of filenames is allowed. If <filename> is not specified
-then most commands apply to the entire directory and all subdirectories.
-
-A useful option for cvs is:
-
cvs -n <command>
-This will execute the command without making any changes.
-
--
-help
-
--
-Typing
-
- cvs help
-gives overall cvs help.
-
--
-Checkout Entire <top> Area
-
--
-To check out an entire <top> area issue the commands:
-
-cd <anywhere>
-cvs checkout iocsys/<top>
-
--
-iocsys/<top> appears under <anywhere>
-
--
-watch
-
--
-Files (or complete directory trees including and entire <top> area)
-can have a watch placed on them. When a watch is placed on a directory
-cvs creates working copies read only. Users must execute a cvs
-edit command to obtain a read/write file. Facilities are provided to list
-all people editing a file and to be sent an e-mail message whenever someone
-executes the cve edit or commit commands for a watched file. Please read
-the cvs manual for details.
-
--
-edit
-
--
-If you want to edit a file and it is read only because a watch is in effect
-then execute the command:
-
- cvs edit <filename>
-
--
-unedit
-
--
-If you have started editing a file and decide to abandon your changes or
-not make any changes issue the command:
-
- cvs unedit <filename>
-
--
-add
-
--
-The command:
-
- cvs add <filename>
-places a directory or file under CVS control. This command must be given
-for each directory and file to be added to the repository.
--
-remove
-
--
-The command:
-
- cvs rm <filename>
-removes the specified file from the repository. The file is not actually
-deleted but is moved to the "attic". Thus previous versions can still be
-retrieved.
--
-diff
-
--
-The command:
-
- cvs diff <filename>
-compares the working copy of the file with the version that was checked
-out out or updated from the repository.
-
-The diff command has options that allow you to see the differences between
-any two versions committed to the repository.
-
-
-update
-
--
-The command:
-
- cvs update -d -A <filename>
-brings the development area into sync with the latest versions committed
-to the repository. A message is given for each file or directory that is
-modified. A message starting with the letter
- C
-means that a conflict exists. Conflicts must be resolved manually.
-
-The two specified options (add new directories and reset sticky tags)
-should normally be specified.
-
-
-commit
-
--
-The command:
-
-cvs commit <filename>
-commits changes to the repository. You are asked for comments via your
-favorite editor.
--
-status
-
--
-The command:
-
-cvs status <filename>
-Shows the status of the file. The -v option shows all tag information for
-the file.
--
-log
-
--
-The command:
-
-cvs log <filename>
-displays a list of all commits to the specified file..
--
-.cvsignore
-
--
-Any directory can contain a file with the name .cvsignore. It
-contains a list of file and directory names that should be ignored by CVS.
-For example all generated directories and files should be listed in .cvsignore.
-
--
-tags
-
--
-The command:
-
-
-tag <official release name>
-
-
--
-is used by the Application System Manager to tag official application releases.
-
--
-import
-
--
-This command is used to put an existing tree of files into the cvs
-repository. Assume that a developer has created a new directory tree for
-a new <top> application in a directory newapp. It
-can be imported into the repository via the command:
-
-
-
-cvs import -m "Creating" iocsys/newapp newapp start
-
-
-
-
-
-
diff --git a/src/makeBaseApp/top/Makefile b/src/makeBaseApp/top/Makefile
index 5e554a16d..6e11df891 100644
--- a/src/makeBaseApp/top/Makefile
+++ b/src/makeBaseApp/top/Makefile
@@ -1,9 +1,9 @@
#Makefile at top of application tree
TOP = .
-include $(TOP)/config/CONFIG_APP
+include $(TOP)/configure/CONFIG
DIRS += config
DIRS += $(wildcard *App)
DIRS += $(wildcard *app)
DIRS += $(wildcard iocBoot)
DIRS += $(wildcard iocboot)
-include $(TOP)/config/RULES_TOP
+include $(TOP)/configure/RULES_TOP
diff --git a/src/makeBaseApp/top/exampleApp/Makefile b/src/makeBaseApp/top/exampleApp/Makefile
index e26216db6..60f5ad48e 100644
--- a/src/makeBaseApp/top/exampleApp/Makefile
+++ b/src/makeBaseApp/top/exampleApp/Makefile
@@ -1,7 +1,7 @@
TOP = ..
-include $(TOP)/config/CONFIG_APP
+include $(TOP)/configure/CONFIG
DIRS += $(wildcard *src*)
DIRS += $(wildcard *Src*)
DIRS += $(wildcard *db*)
DIRS += $(wildcard *Db*)
-include $(TOP)/config/RULES_DIRS
+include $(TOP)/configure/RULES_DIRS
diff --git a/src/makeBaseApp/top/exampleBoot/ioc/st.cmd b/src/makeBaseApp/top/exampleBoot/ioc/st.cmd
index e9c3cb3d6..3c90f2c34 100644
--- a/src/makeBaseApp/top/exampleBoot/ioc/st.cmd
+++ b/src/makeBaseApp/top/exampleBoot/ioc/st.cmd
@@ -8,8 +8,6 @@
#< ../nfsCommands
cd appbin
-ld < iocCore
-ld < seq
ld < exampleLib
cd startup
diff --git a/src/makeBaseApp/top/simpleApp/src/Makefile b/src/makeBaseApp/top/simpleApp/src/Makefile
index 0380f4bf8..6536ab853 100644
--- a/src/makeBaseApp/top/simpleApp/src/Makefile
+++ b/src/makeBaseApp/top/simpleApp/src/Makefile
@@ -1,3 +1,36 @@
TOP=../..
-include $(TOP)/config/CONFIG_APP
-include $(TOP)/config/RULES_ARCHS
+include $(TOP)/configure/CONFIG
+#----------------------------------------
+# ADD MACRO DEFINITIONS AFTER THIS LINE
+
+#USR_CFLAGS +=
+PROD_LIBS += ca
+PROD_LIBS += Db
+PROD_LIBS += Com
+PROD_LIBS += Osi
+ca_DIR = $(EPICS_BASE_LIB)
+Db_DIR = $(EPICS_BASE_LIB)
+Com_DIR = $(EPICS_BASE_LIB)
+Osi_DIR = $(EPICS_BASE_LIB)
+
+#RECTYPES += xxxRecord.h
+#DBDEXPAND = exampleInclude.dbd
+#DBDNAME = exampleApp.dbd
+
+#LIBOBJS +=
+
+#choose either
+
+#LIBOBJS += $(EPICS_BASE_BIN)/registerRecordDeviceDriver.o
+
+# or
+#EXPANDED_DBD = exampleApp.dbd
+#LIBOBJS += registerRecordDeviceDriver.o
+#end choices
+
+
+include $(TOP)/configure/RULES_BUILD
+include $(TOP)/config/RULES.registerRecordDeviceDriver
+#----------------------------------------
+# ADD RULES AFTER THIS LINE
+
diff --git a/src/makeBaseApp/top/simpleApp/src/Makefile.Host b/src/makeBaseApp/top/simpleApp/src/Makefile.Host
deleted file mode 100644
index 5e3de7084..000000000
--- a/src/makeBaseApp/top/simpleApp/src/Makefile.Host
+++ /dev/null
@@ -1,18 +0,0 @@
-# Makefile.Host
-TOP = ../../..
-include $(TOP)/config/CONFIG_APP
-#----------------------------------------
-# ADD MACRO DEFINITIONS AFTER THIS LINE
-
-#USR_CFLAGS +=
-PROD_LIBS += ca
-PROD_LIBS += Db
-PROD_LIBS += Com
-ca_DIR = $(EPICS_BASE_LIB)
-Db_DIR = $(EPICS_BASE_LIB)
-Com_DIR = $(EPICS_BASE_LIB)
-
-
-include $(TOP)/config/RULES.Host
-#----------------------------------------
-# ADD RULES AFTER THIS LINE
diff --git a/src/makeBaseApp/top/simpleApp/src/Makefile.Vx b/src/makeBaseApp/top/simpleApp/src/Makefile.Vx
deleted file mode 100644
index 47b379665..000000000
--- a/src/makeBaseApp/top/simpleApp/src/Makefile.Vx
+++ /dev/null
@@ -1,13 +0,0 @@
-# Makefile.Vx
-TOP = ../../..
-include $(TOP)/config/CONFIG_APP
-#----------------------------------------
-# ADD MACRO DEFINITIONS AFTER THIS LINE
-
-
-#Note that the command line that builds the
-#library $(LIBNAME) may be HUGE (>3kB)
-#
-include $(TOP)/config/RULES.Vx
-#----------------------------------------
-# ADD RULES AFTER THIS LINE
diff --git a/src/makeBaseApp/top/simpleBoot/ioc/st.cmd b/src/makeBaseApp/top/simpleBoot/ioc/st.cmd
index 3c0144dde..5e9017794 100644
--- a/src/makeBaseApp/top/simpleBoot/ioc/st.cmd
+++ b/src/makeBaseApp/top/simpleBoot/ioc/st.cmd
@@ -7,8 +7,6 @@
#< ../nfsCommands
cd appbin
-ld < iocCore
-ld < seq
#ld < _APPNAME_Lib
cd startup