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

Subject: Re: User Created File Types: FILE TYPE += ABC [EPICS R3-14-12]
From: Bruce Hill <[email protected]>
To: Andrew Johnson <[email protected]>
Cc: "[email protected]" <[email protected]>
Date: Fri, 2 Nov 2012 23:11:17 -0700
We've done something like this in the photon controls group at SLAC.

We wanted to be able to build db files in the iocBoot/ioc-instance-name
directories.    In addition, we added RULES.archive and RULES.autosave
so we could create custom db, archive and autosave files
for each ioc instance.    That way we can create new ioc instances
where all the ioc specific files are located in the new ioc instance directory.

To do this, we moved everything in base's RULES.ioc after the line
that includes RULES_DIRS into a new file, RULES.ioc-targets and
replaced it with a single line:
include $(CONFIG)/RULES.ioc-targets

This allows traditional ioc's to build as before.

To build db files from the iocBoot/ioc-instance-name directory,
we change the last line in it's Makefile from:
include $(TOP)/configure/RULES.ioc
to:
include $(TOP)/configure/RULES
include $(TOP)/configure/RULES.ioc-targets

Now when you run make in the ioc instance directory, your
Makefile can have DB += lines or other build targets like
the app build directories, and those targets get built in
O.Common or O.$(ARCH) as appropriate, and installed as
they would be from the app build directories.

As to installing the st.cmd or envPaths files, we haven't done
that exactly, but we did create a RULES.copy file that
supports installing a set of files to a single directory.
We've mostly used it to install protocol files.

It's used by adding this line to the end of your Makefile:
include $(TOP)/configure/RULES.copy

Then, above that in the area for build targets, you set
COPY_SUBDIR = name_of_destination_dir
COPY_FILES += name_of_file1
COPY_FILES += name_of_file2
...

The files are installed to $(INSTALL_LOCATION)/$(COPY_SUBDIR).

I've attached copies of these RULES files for
anyone who's interested.

While you can use them by putting a copy of each in your base/configure
directory and each IOC's $(TOP)/configure directory, the RULES files we
put in our $(TOP)/configure typically look like this:
% cat configure/RULES.ioc-targets
# RULES.ioc-targets
include $(EPICS_BASE)/configure/RULES.ioc-targets

Regards,
- Bruce

P.S.   I just realized in re-reading this that there may be a flaw in our approach,
in that the envPaths file is generated in O.$(EPICS_HOST_ARCH).
That hasn't mattered here, as we've only used this for soft IOC's running
on the same platform as our build, but more work may be needed to
allow using this for cross compilation.

P.P.S.  I also tried setting INSTALL_LOCATION w/ RULES.copy and
RULES.ioc-targets to see if I could install st.cmd and envPaths.
Some things worked, others didn't, so again
more work may be needed to make it general purpose.
Be careful what you set COPY_SUBDIR to as the clean target will run
"rm -rf $(INSTALL_LOCATION)/$(COPY_SUBDIR)" where
INSTALL_LOCATION defaults to TOP if you don't set it.
Thus, setting COPY_SUBDIR to "." can delete your ioc directories
out from under you if you don't set INSTALL_LOCATION. :0(


On 11/02/2012 11:38 AM, Andrew Johnson wrote:
Hi Guys,

The fact that both Ernest and Ralph want to be able to install files in an
IOC-specific directory tells me that the build system needs to be able to do
something like this, but it's not clear what the requirements are or where the
files should go.  The install path ioc/<name>  is an obvious target location,
but whatever we come up with will need to support the current way of building
IOCs as well.

Janet has taken a look at Ernest's original request and says it's not going to
work without making build system changes, so I think we/you should agree on
what we want to achieve before we fiddle with the current system too much.

IIRC Gemini has been using a build system that installs st.cmd files among
others for quite a long time, and I hope someone from there will pipe up with
what your requirements are or how your current application builds work so we
can consider them as well.

In the mean-time, it is possible for any application to override the build
rules in Base (it actually overrides the setting of the CONFIG variable that
gnumake uses to find the files) without having to make any changes to Base
itself or without having to have a private copy of those rules.  You just set
the RULES variable in your RELEASE file to point to a top area that contains a
configure directory with your local version of the files CONFIG, RULES,
RULES_DIRS, RULES_TOP and RULES.ioc.

Hoping for some collaboration here, although I know you're all busy.

- Andrew

On 2012-11-01 Williams Jr., Ernest L. wrote:
________________________________________
From: [email protected] [[email protected]] On
  Behalf Of Ralph Lange [[email protected]] Sent: Thursday, November 01,
  2012 8:12 AM
To: EPICS Tech Talk
Subject: Re: User Created File Types:  FILE TYPE += ABC [EPICS R3-14-12]

Hi Ernest,

the main issue behind this:
In the traditional EPICS build system, IOC startup files (actually
  everything under iocBoot) are considered source files. Other than for
  libraries, databases etc., these sources are not compiled in any way, and
  they do not create any products that are installed. Without an
  installation step, $(INSTALL_LOCATION) does not apply. ====
ELW
====
=================================================================
I think this is actually wrong and should be addressed.
They are indeed products built in the IOC area:
(1) envPaths or for vxWorks "cdCommands"
(2) The st.cmd is simply an ASCII text file; like a very simple database
  needing no MACRO expansion. In other words the st.cmd needs to be simply
  installed.

Bottom line: Anything that is loaded by an IOC should be an installable set
  of libraries, files, etc...

Not having this of course, breaks symmetry. :(

Although, I know it has always been this way.  My INSTALLATION_TOP has
  always been right along side my APP. Now, I really want to push the
  products to a different location.
===================================================================





For our HZB/BESSY developments, we are creating the startup files
  programmatically in an ...App directory, so we changed our rules to treat
  .../iocBoot as an installation directory (much like lib, bin, ...), and
  install the created startup scripts there. In this setting, there is an
  installation step for these files, and $(INSTALL_LOCATION) works as
  expected. ======
ELW
======
===============================================================
I recommend that this become part of the EPICS main distribution for the
  reasons I stated above. This would everyone creating their own solution.
In this case, for backward compatability can we leave "iocBoot" in tact and
  create such as "ioc" ?
  ================================================================


Trying to select the relevant configuration parts....


Our CONFIG contains:

INSTALL_BOOT := $(INSTALL_LOCATION)/iocBoot
UNINSTALL_DIRS += $(INSTALL_BOOT)


The ...App Makefile uses this by setting:

IOCS = $( /* database call to get ioc names */ )
STCMD_INSTALLS = $(IOCS:%=$(INSTALL_BOOT)/ioc%/st.cmd)

build: $(STCMD_INSTALLS)

$(STCMD_INSTALLS): $(INSTALL_BOOT)/ioc%/st.cmd: $(COMMON_DIR)/st.cmd.%
         @echo "Installing $@"
         @$(CP) $<  st.cmd
         @$(INSTALL) -d -m 644 st.cmd $(@D)
         @$(RM) st.cmd

$(COMMON_DIR)/st.cmd.%: ../%.st.cmd
         @$(CP) $<  $@


Hope this shows the general direction...
=================================================
=====
ELW
=====
==================================================
Thanks, this is the direction we would like to go in.
Just be nice to get this into EPICS BASE as well.
Everything loaded on the IOC is a product. :)
==================================================


Thanks again.

Cheers,
Ernest





Cheers,
~Ralph


On 30.10.2012 16:51, Ernest L. Williams Jr. wrote:
Hi Janet,

How is it going?

For IOC Application deployment; I would like to take advantage of the
  $(INSTALL LOCATION). The only problem is that IOC Startup files do not get
  installed along with other products such as databases, libraries, etc...

So, I tried to do something like the following:

In my  $IOC_APP_TOP/iocBoot/<iocName>

Create CONFIG_STARTUP:
============ CONFIG_STARTUP ========================
FILE_TYPE +=  STARTUP
INSTALL_EDL = $(INSTALL_LOCATION)/ioc/vioc-b34-cd39
=====================================================

Add to Makefile:

========== Makefile =====================================
TOP = ../..
include $(TOP)/configure/CONFIG
# =====================================================
# Config for installing IOC startup related files:
# =====================================================
CFG +=  CONFIG_STARTUP

ARCH = linuxRT-x86
TARGETS = envPaths
INSTALL_STARTUP += envPaths rtPrioritySetup.cmd st.cmd
include $(TOP)/configure/RULES
include $(TOP)/configure/RULES.ioc
# =====================================================


The above does not work.

[ernesto@cdlx01 vioc-b34-cd39]$ make
/afs/slac/g/lcls/epics/base/base-R3-14-12/configure/RULES_DIRS:72: ***
  target file `clean' has both : and :: entries.  Stop.


Can you recommend a way to achieve this in the context of the EPICS
  Make/Build system?

Cheers,
Ernest


- Andrew

--
Bruce Hill
Member Technical Staff
SLAC National Accelerator Laboratory

# Make rules to copy files into a specific subdirectory in the
# INSTALL_LOCATION.  Useful for files that are relevant to a
# particular version of an IOC but aren't built or modified during the
# make process.  Examples might be EDM files, ASYN protocol files,
# autosave definition files, IOC startup files, etc.

# Author: Jason Tiller

# Do nothing if the caller hasn't set the required variables.
files_set=$(if $(COPY_FILES),1,0)
subdir_set=$(if $(COPY_SUBDIR),1,0)
ifeq ($(files_set)$(subdir_set),11)

# Display how this makefile was called.
$(info RULES.copy: '$(MAKECMDGOALS)')

# For the standard development build, the 'INSTALL_LOCATION' is just
# the current directory.  For some directory structures, they only
# want to be copied if the INSTALL_LOCATION is different from the
# package's TOP directory.  An IOC's iocBoot directory is an example -
# because it hangs off the TOP directory, installing to itself would
# make no sense and would actually be destructive when 'make clean' is
# called.  In this case, only when the INSTALL_LOCATION is different
# do we want to do anything.

# This makefile is configured by three make variables that should be
# set before this file is included:

# COPY_ONLY_IF_NON_LOCAL
#    Define this if you only want the install/clean operation to occur
#    IF the installation directory is different from the IOC's <top>
#    source directory.

# COPY_SUBDIR
#    Set this to the target directory where your files should be
#    copied.  This is relative to INSTALL_LOCATION.

# COPY_FILES
#    Set this to the list of files, space-separated, that you want to
#    have copied into COPY_SUBDIR.

# Add 'include RULES.copy' to bottom of Makefile in the source
# directory after setting the 'COPY_{SUBDIR,FILES}' variables and
# optionally setting the 'COPY_ONLY_...' flag.

INSTALL_DIR   := $(INSTALL_LOCATION)/$(COPY_SUBDIR)
INSTALL_FILES := $(addprefix $(INSTALL_DIR)/,$(notdir $(COPY_FILES)))

all: install

rebuild: clean install

INSTALL = $(PERL) $(TOOLS)/installEpics.pl

# If the source makefile doesn't set this, we'll always perform the
# copy/clean operation, regardless of installation directory.
ifndef COPY_ONLY_IF_NON_LOCAL

install: $(INSTALL_FILES)

buildInstall: $(INSTALL_FILES)

$(INSTALL_FILES): $(COPY_FILES)
	@echo "RULES.copy: Installing $(?F) -> $(INSTALL_DIR)"
	@$(INSTALL) -d -m 644 $? $(INSTALL_DIR)

clean:
	@echo RULES.copy: Cleaning $(INSTALL_DIR)
	rm -rf $(INSTALL_DIR)

else

# If the flag is set, then we look at the install location.
ifeq ($(patsubst $(TOP),,$(INSTALL_LOCATION)),)

# We're installing locally, so don't try to copy or respond to clean
# requests because we might overwrite/delete something important.

install:

else

# The flag was set, but we're not installing locally, so perform the
# complete operations.

install: $(INSTALL_FILES)

buildInstall: $(INSTALL_FILES)

$(INSTALL_FILES): $(COPY_FILES)
	@echo "RULES.copy: Installing $(?F) -> $(INSTALL_DIR)"
	@$(INSTALL) -d -m 644 $? $(INSTALL_DIR)

clean:
	@echo RULES.copy: Cleaning $(INSTALL_DIR)
	rm -rf $(INSTALL_DIR)

# endif the flag was set and the install directory is different.
endif

# endif the flag wasn't set
endif

# endif both configuration variables weren't set
endif
#*************************************************************************
# Copyright (c) 2002 The University of Chicago, as Operator of Argonne
#     National Laboratory.
# Copyright (c) 2002 The Regents of the University of California, as
#     Operator of Los Alamos National Laboratory.
# EPICS BASE Versions 3.13.7
# and higher are distributed subject to a Software License Agreement found
# in file LICENSE that is included with this distribution. 
#*************************************************************************
#RULES.ioc-targets
# This file contains targets needed in IOC instance directories

build$(DIVIDER)$(ARCH) build: buildInstall
install$(DIVIDER)$(ARCH) install: buildInstall
$(ARCH): buildInstall

ifeq ($(filter $(ARCH),$(BUILD_ARCHS)),$(ARCH))
buildInstall$(DIVIDER)$(ARCH) buildInstall: $(TARGETS)

clean$(DIVIDER)$(ARCH) clean: ioc-targets_clean

else 
buildInstall$(DIVIDER)$(ARCH) buildInstall:
clean$(DIVIDER)$(ARCH) clean:
endif

ioc-targets_clean:
	$(RM) cdCommands envPaths dllPath.bat

cdCommands envPaths dllPath.bat: $(wildcard $(TOP)/configure/RELEASE*) \
	$(TOP)/configure/CONFIG $(INSTALL_LOCATION_BIN)/$(ARCH)
ifeq ($(IOCS_APPL_TOP),)
	$(PERL) $(TOOLS)/convertRelease.pl -a $(ARCH) $@
else
	$(PERL) $(TOOLS)/convertRelease.pl -a $(ARCH) -t $(IOCS_APPL_TOP) $@
endif


realclean: ioc-targets_clean


####################################################
# RULES for building and installing archive files

# Display how this makefile was called
#$(info RULES.archive: '$(MAKECMDGOALS)')

########################################################
# NOTE: The rules for generating archive files from
# %.substitutions files shouldn't be needed any more.
# If you think you need them, please see Bruce Hill, bhill,
# so we can discuss.

####################################################
# Where to find and install files for archive

vpath %.archive       $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(ARCHIVE))
vpath %.sub-arch	  $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(ARCHIVE)) $(COMMON_DIR)
#vpath %.substitutions $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(ARCHIVE)) $(COMMON_DIR)
vpath %.template      $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(ARCHIVE)) $(COMMON_DIR)
vpath %.tpl-arch      $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(ARCHIVE)) $(COMMON_DIR)

INSTALL_ARCHIVE = $(INSTALL_LOCATION)/archive

####################################################
# archive Flags (-I path)

INSTALL_ARCHIVEFLAGS = -I $(INSTALL_ARCHIVE)
RELEASE_ARCHIVEFLAGS = $(patsubst %/dbd,%/archive, $(RELEASE_DBDFLAGS))
ARCHIVEFLAGS  = $($*_ARCHIVEFLAGS) $(USR_ARCHIVEFLAGS) -I. -I.. $(GENERIC_SRC_INCLUDES) $(INSTALL_ARCHIVEFLAGS) $(RELEASE_ARCHIVEFLAGS)
ARCHIVEFLAGS += -I$(COMMON_DIR)

####################################################
# Build targets

INSTALL_ARCHIVES += $(addprefix $(INSTALL_ARCHIVE)/,$(notdir $(ARCHIVE)))

build:	$(INSTALL_ARCHIVES)

rebuild:        clean install

buildInstall:	$(INSTALL_ARCHIVES)

realclean: clean

clean: archive_clean

archive_clean:
	@$(RM) $(COMMONS)
	@$(RM) $(TARGETS)
	@echo "Cleaning"

####################################################
# Build and install Rules

#$(COMMON_DIR)/%.archive: %.substitutions
#	@echo "Inflating archive file from $<"
#	@$(RM) $@
#	$(MSI) $(ARCHIVEFLAGS) -S$< > msi.tmp
#	$(MV) msi.tmp $@

$(COMMON_DIR)/%.archive: %.sub-arch
	@echo "Inflating archive file from $<"
	@$(RM) $@
	$(MSI) $(ARCHIVEFLAGS) -S$< > msi.tmp
	$(MV) msi.tmp $@

INSTALL = $(PERL) $(TOOLS)/installEpics.pl

$(INSTALL_ARCHIVE)/%: $(COMMON_DIR)/%
	@echo "Installing archive file $@"
	@$(INSTALL) -d -m 644 $< $(@D)

$(INSTALL_ARCHIVE)/%.archive:	%.archive  
	@echo "Installing archive file $@"
	@$(INSTALL) -d -m 644 $< $(@D)

#.PRECIOUS: $(COMMON_DIR)/%.archive

#$(INSTALL_ARCHIVE)/%.substitutions: %.substitutions
#	@echo "Installing archive substitutions file $@"
#	@$(INSTALL) -d -m 644 $< $(@D)

$(INSTALL_ARCHIVE)/%.sub-arch: %.sub-arch
	@echo "Installing archive substitutions file $@"
	@$(INSTALL) -d -m 644 $< $(@D)

#.PRECIOUS: $(COMMON_DIR)/%.substitutions

$(INSTALL_ARCHIVE)/%.template: %.template
	@echo "Installing archive template file $@"
	@$(INSTALL) -d -m 644 $< $(@D)

$(INSTALL_ARCHIVE)/%.tpl-arch: %.tpl-arch
	@echo "Installing archive template file $@"
	@$(INSTALL) -d -m 644 $< $(@D)

#.PRECIOUS: $(COMMON_DIR)/%.template

####################################################
# RULES for building and installing autosave files

# Display how this makefile was called
#$(info RULES.autosave: '$(MAKECMDGOALS)')

########################################################
# NOTE: The rules for generating autosave files from
# %.substitutions files shouldn't be needed any more.
# If you think you need them, please see Bruce Hill, bhill,
# so we can discuss.

####################################################
# Where to find and install files for autosave

vpath %.req           $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(REQ))
vpath %.sub-req       $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(REQ)) $(COMMON_DIR)
#vpath %.substitutions $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(REQ)) $(COMMON_DIR)
vpath %.template      $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(REQ)) $(COMMON_DIR)
vpath %.tpl-req       $(USR_VPATH) $(GENERIC_SRC_DIRS) $(dir $(REQ)) $(COMMON_DIR)

INSTALL_AUTOSAVE = $(INSTALL_LOCATION)/autosave

####################################################
# Autosave Flags (-I path)

INSTALL_AUTOSAVEFLAGS = -I $(INSTALL_AUTOSAVE)
RELEASE_AUTOSAVEFLAGS = $(patsubst %/dbd,%/autosave, $(RELEASE_DBDFLAGS))
AUTOSAVEFLAGS  = $($*_AUTOSAVEFLAGS) $(USR_AUTOSAVEFLAGS) -I. -I.. $(GENERIC_SRC_INCLUDES) $(INSTALL_AUTOSAVEFLAGS) $(RELEASE_AUTOSAVEFLAGS)
AUTOSAVEFLAGS += -I$(COMMON_DIR)

####################################################
# Build targets

INSTALL_REQS += $(addprefix $(INSTALL_AUTOSAVE)/,$(notdir $(REQ)))

build:	$(INSTALL_REQS)

rebuild:        clean install

buildInstall:	$(INSTALL_REQS)

realclean: clean

clean: autosave_clean

autosave_clean:
	@$(RM) $(COMMONS)
	@$(RM) $(TARGETS)
	@echo "Cleaning"

####################################################
# Build and install Rules

#$(COMMON_DIR)/%.req: %.substitutions
#	@echo "Inflating autosave request from $<"
#	@$(RM) $@
#	$(MSI) $(AUTOSAVEFLAGS) -S$< > msi.tmp
#	$(MV) msi.tmp $@

$(COMMON_DIR)/%.req: %.sub-req
	@echo "Inflating autosave request from $<"
	@$(RM) $@
	$(MSI) $(AUTOSAVEFLAGS) -S$< > msi.tmp
	$(MV) msi.tmp $@

INSTALL = $(PERL) $(TOOLS)/installEpics.pl

$(INSTALL_AUTOSAVE)/%: $(COMMON_DIR)/%
	@echo "Installing autosave file $@"
	@$(INSTALL) -d -m 644 $< $(@D)

$(INSTALL_AUTOSAVE)/%.req:	%.req  
	@echo "Installing autosave file $@"
	@$(INSTALL) -d -m 644 $< $(@D)

$(INSTALL_AUTOSAVE)/%.sub-req:	%.sub-req  
	@echo "Installing autosave file $@"
	@$(INSTALL) -d -m 644 $< $(@D)

#.PRECIOUS: $(COMMON_DIR)/%.req

#$(INSTALL_AUTOSAVE)/%.substitutions: %.substitutions
#	@echo "Installing autosave substitutions file $@"
#	@$(INSTALL) -d -m 644 $< $(@D)

$(INSTALL_AUTOSAVE)/%.sub-req: %.sub-req
	@echo "Installing autosave substitutions file $@"
	@$(INSTALL) -d -m 644 $< $(@D)

#.PRECIOUS: $(COMMON_DIR)/%.substitutions

$(INSTALL_AUTOSAVE)/%.template: %.template
	@echo "Installing autosave template file $@"
	@$(INSTALL) -d -m 644 $< $(@D)

$(INSTALL_AUTOSAVE)/%.tpl-req: %.tpl-req
	@echo "Installing autosave template file $@"
	@$(INSTALL) -d -m 644 $< $(@D)

#.PRECIOUS: $(COMMON_DIR)/%.template

#*************************************************************************
# Copyright (c) 2002 The University of Chicago, as Operator of Argonne
#     National Laboratory.
# Copyright (c) 2002 The Regents of the University of California, as
#     Operator of Los Alamos National Laboratory.
# EPICS BASE Versions 3.13.7
# and higher are distributed subject to a Software License Agreement found
# in file LICENSE that is included with this distribution. 
#*************************************************************************
#RULES.ioc
include $(CONFIG)/RULES_DIRS
include $(CONFIG)/RULES.ioc-targets

########################################################
# NOTE: The following rules shouldn't be needed any more.
# If you think you need them, please see Bruce Hill, bhill,
# so we can discuss.

## PCDS additions to install archive and autosave files
#
## Inflate the IOC archive file, if any
#$(INSTALL_ARCHIVE)/%.archive: %.substitutions
#	@echo "Inflating ioc archive file from $<"
#	@$(RM) $@
#	$(MSI) $(ARCHIVEFLAGS) -S$< > msi.tmp
#	$(MV) msi.tmp $@
#
#$(INSTALL_ARCHIVE)/%.archive: %.sub-archive
#	@echo "Inflating ioc archive file from $<"
#	@$(RM) $@
#	$(MSI) $(ARCHIVEFLAGS) -S$< > msi.tmp
#	$(MV) msi.tmp $@
#
#$(INSTALL_ARCHIVE)/%.archive: %.sub-arch
#	@echo "Inflating ioc archive file from $<"
#	@$(RM) $@
#	$(MSI) $(ARCHIVEFLAGS) -S$< > msi.tmp
#	$(MV) msi.tmp $@
#
## Inflate the IOC autosave file, if any
#$(INSTALL_AUTOSAVE)/%.req: %.substitutions
#	@echo "Inflating ioc autosave file from $<"
#	@$(RM) $@
#	$(MSI) $(AUTOSAVEFLAGS) -S$< > msi.tmp
#	$(MV) msi.tmp $@
#
#$(INSTALL_AUTOSAVE)/%.req: %.sub-req
#	@echo "Inflating ioc autosave file from $<"
#	@$(RM) $@
#	$(MSI) $(AUTOSAVEFLAGS) -S$< > msi.tmp
#	$(MV) msi.tmp $@
#

Replies:
RE: User Created File Types: FILE TYPE += ABC [EPICS R3-14-12] nick.rees
References:
User Created File Types: FILE TYPE += ABC [EPICS R3-14-12] Ernest L. Williams Jr.
Re: User Created File Types: FILE TYPE += ABC [EPICS R3-14-12] Ralph Lange
RE: User Created File Types: FILE TYPE += ABC [EPICS R3-14-12] Williams Jr., Ernest L.
Re: User Created File Types: FILE TYPE += ABC [EPICS R3-14-12] Andrew Johnson

Navigate by Date:
Prev: Please down the post. \ if possible Kwon, Sung I
Next: RE: User Created File Types: FILE TYPE += ABC [EPICS R3-14-12] nick.rees
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: User Created File Types: FILE TYPE += ABC [EPICS R3-14-12] Andrew Johnson
Next: RE: User Created File Types: FILE TYPE += ABC [EPICS R3-14-12] nick.rees
Index: 1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  <20122013  2014  2015  2016  2017  2018  2019  2020  2021  2022  2023  2024 
ANJ, 18 Nov 2013 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·