Add new functionality
This commit is contained in:
@@ -23,7 +23,6 @@ $startdir=cwd();
|
||||
$startdir=~s'^/tmp_mnt'';
|
||||
|
||||
Cleanup (1, "Shouldn't run in Home Directory") if (GetHome() eq $startdir);
|
||||
print "I hope that '$startdir' is NOT your home directory\n";
|
||||
|
||||
|
||||
# look for options
|
||||
@@ -50,14 +49,11 @@ else
|
||||
|
||||
Cleanup (1,"Cannot find EPICS base, use full path or '-b'") unless $epics_base;
|
||||
|
||||
print "Found EPICS base: $epics_base\n";
|
||||
|
||||
unless (-f 'Makefile')
|
||||
{
|
||||
print "Creating Makefile\n";
|
||||
|
||||
open OUT, ">Makefile" or die "Cannot open Makefile";
|
||||
print OUT "#\tMakefile generated by makeBaseApp.pl\n";
|
||||
print OUT "#Makefile generated by makeBaseApp.pl\n";
|
||||
print OUT "TOP = .\n";
|
||||
print OUT "include \$(TOP)/config/CONFIG_APP\n";
|
||||
print OUT "DIRS += \$(wildcard *App)\n";
|
||||
@@ -71,47 +67,61 @@ unless (-d 'config')
|
||||
mkdir 'config', 0777;
|
||||
chdir 'config' or die "Cannot create config directory";
|
||||
|
||||
print "Creating files in 'config'\n";
|
||||
|
||||
open OUT, ">CONFIG" or die "Cannot create CONFIG";
|
||||
print OUT "#\tCONFIG\n";
|
||||
print OUT "# Add any changes to make rules here\n";
|
||||
print OUT "#CROSS_COMPILER_TARGET_ARCHS = mv167\n";
|
||||
print OUT '#CONFIG',"\n";
|
||||
print OUT '# Add any changes to make rules here',"\n";
|
||||
print OUT '#CROSS_COMPILER_TARGET_ARCHS = mv167',"\n";
|
||||
close OUT;
|
||||
|
||||
open OUT, ">CONFIG_APP" or die "Cannot create CONFIG_APP";
|
||||
print OUT "#\tCONFIG_APP DO NOT EDIT THIS FILE\n";
|
||||
print OUT "include \$(TOP)/config/RELEASE\n";
|
||||
print OUT "ifdef SHARE\n";
|
||||
print OUT "include $(SHARE)/config/CONFIG_APP\n";
|
||||
print OUT "else\n";
|
||||
print OUT "ifndef T_A\n";
|
||||
print OUT "T_A = \$(HOST_ARCH)\n";
|
||||
print OUT "endif #ifndef T_A\n";
|
||||
print OUT "include \$(EPICS_BASE)/config/CONFIG\n";
|
||||
print OUT "ifdef MASTER_IOCAPPS\n";
|
||||
print OUT "USR_INCLUDES += -I\$(MASTER_IOCAPPS)/include\n";
|
||||
print OUT "MASTER_IOCAPPS_BIN = \$(MASTER_IOCAPPS)/bin/\$(T_A)\n";
|
||||
print OUT "endif #ifdef MASTER_IOCAPPS\n";
|
||||
print OUT "include \$(TOP)/config/CONFIG\n";
|
||||
print OUT "endif #ifdef SHARE\n";
|
||||
print OUT '#CONFIG_APP ',"\n";
|
||||
|
||||
print OUT 'include $(TOP)/config/RELEASE',"\n";
|
||||
print OUT 'ifndef T_A',"\n";
|
||||
print OUT 'T_A = $(HOST_ARCH)',"\n";
|
||||
print OUT 'endif',"\n";
|
||||
print OUT 'include $(EPICS_BASE)/config/CONFIG',"\n";
|
||||
print OUT ' ',"\n";
|
||||
print OUT '#Other share areas can be added similar to following',"\n";
|
||||
print OUT '#ifdef <share_top>',"\n";
|
||||
print OUT '#USR_INCLUDES += -I$(<share_top>)/include',"\n";
|
||||
print OUT '#<share_top>BIN = $(<share_top>)/bin/$(T_A)',"\n";
|
||||
print OUT '#endif',"\n";
|
||||
print OUT ' ',"\n";
|
||||
print OUT 'ifdef SHARE',"\n";
|
||||
print OUT 'USR_INCLUDES += -I$(SHARE)/include',"\n";
|
||||
print OUT 'SHARE_BIN = $(SHARE)/bin/$(T_A)',"\n";
|
||||
print OUT 'endif',"\n";
|
||||
print OUT 'ifdef HIDEOS',"\n";
|
||||
print OUT 'USR_INCLUDES += -I$(HIDEOS)/include',"\n";
|
||||
print OUT 'HIDEOS_ARCH = $(subst mv,vx,$(T_A))',"\n";
|
||||
print OUT 'HIDEOS_LIB=$(HIDEOS)/lib/$(HIDEOS_ARCH)',"\n";
|
||||
print OUT 'HIDEOS_APPS=$(HIDEOS)/usrapps/$(HIDEOS_ARCH)',"\n";
|
||||
print OUT 'endif',"\n";
|
||||
print OUT 'ifdef EPICSHIDEOS',"\n";
|
||||
print OUT 'USR_INCLUDES += -I$(EPICSHIDEOS)/include',"\n";
|
||||
print OUT 'EPICSHIDEOS_BIN=$(EPICSHIDEOS)/bin/$(T_A)',"\n";
|
||||
print OUT 'endif',"\n";
|
||||
print OUT 'ifdef MASTER_IOCAPPS',"\n";
|
||||
print OUT 'USR_INCLUDES += -I$(MASTER_IOCAPPS)/include',"\n";
|
||||
print OUT 'MASTER_IOCAPPS_BIN = $(MASTER_IOCAPPS)/bin/$(T_A)',"\n";
|
||||
print OUT 'endif',"\n";
|
||||
print OUT 'include $(TOP)/config/CONFIG',"\n";
|
||||
|
||||
close OUT;
|
||||
|
||||
open OUT, ">RELEASE" or die "Cannot create RELEASE";
|
||||
print OUT "#\tRELEASE Location of external products\n";
|
||||
print OUT "#RELEASE Location of external products\n";
|
||||
print OUT "EPICS_BASE=$epics_base\n";
|
||||
print OUT "#SHARE=\n";
|
||||
print OUT "#HIDEOS=\n";
|
||||
print OUT "#EPICSHIDEOS=\n";
|
||||
print OUT "#MASTER_IOCAPPS=\n";
|
||||
close OUT;
|
||||
|
||||
open OUT, ">RULES.Vx" or die "Cannot create RULES.Vx";
|
||||
print OUT "#\tRULES.Vx\n";
|
||||
print OUT "include \$(EPICS_BASE)/config/RULES.Vx\n";
|
||||
print OUT "inc:: \$\(INSTALL_INCREC\)\n";
|
||||
close OUT;
|
||||
|
||||
open OUT, ">RULES_TOP" or die "Cannot create RULES_TOP";
|
||||
print OUT "#\tRULES_TOP\n";
|
||||
print OUT "#RULES_TOP\n";
|
||||
print OUT "include \$(EPICS_BASE)/config/RULES_TOP\n";
|
||||
print OUT "\n";
|
||||
print OUT "ifdef MASTER_IOCAPPS\n";
|
||||
@@ -126,7 +136,7 @@ unless (-d 'config')
|
||||
print OUT 'for DIR in bin lib dbd include man ; do \\';
|
||||
print OUT "\n";
|
||||
print OUT "\t";
|
||||
print OUT '$(SHARE)/config/makeSoftLinks $(MASTER_IOCAPPS) $${DIR} ;\\';
|
||||
print OUT '$(TOP)/config/makeSoftLinks $(MASTER_IOCAPPS) $${DIR} ;\\';
|
||||
print OUT "\n";
|
||||
print OUT "\t";
|
||||
print OUT 'done; fi';
|
||||
@@ -136,15 +146,86 @@ unless (-d 'config')
|
||||
print OUT "endif\n";
|
||||
close OUT;
|
||||
|
||||
open OUT, ">RULES.iocBoot" or die "Cannot create RULES.iocBoot";
|
||||
print OUT '#RULES.iocBoot', "\n";
|
||||
print OUT 'DIRS += $(wildcard ioc*)', "\n";
|
||||
print OUT 'DIRS += $(wildcard as*)', "\n";
|
||||
print OUT 'include $(EPICS_BASE)/config/RULES_DIRS', "\n";
|
||||
print OUT 'ifeq ($(findstring nfsCommands,$(wildcard *)),nfsCommands)', "\n";
|
||||
print OUT "buildInstall:: nfs.cmd\n";
|
||||
print OUT "\n";
|
||||
print OUT 'nfs.cmd: nfsCommands', "\n";
|
||||
print OUT "\t",'@echo "Creating $@"', "\n";
|
||||
print OUT "\t",'@$(RM) $@', "\n";
|
||||
print OUT "\t",'@cat $< >> $@', "\n";
|
||||
print OUT "\t",'@echo cd \"`\pwd`\" >> $@', "\n";
|
||||
print OUT "\n";
|
||||
print OUT 'clean::', "\n";
|
||||
print OUT "\t",'@$(RM) nfs.cmd', "\n";
|
||||
print OUT 'endif', "\n";
|
||||
close OUT;
|
||||
|
||||
|
||||
# Simple config files that just include the BASE version:
|
||||
foreach $file ( 'RULES.Db', 'RULES.Host', 'RULES.ioc',
|
||||
foreach $file ( 'RULES.Db', 'RULES.Host', 'RULES.ioc', 'RULES.Vx' ,
|
||||
'RULES_ARCHS', 'RULES_DIRS')
|
||||
{
|
||||
open OUT, ">$file" or die "Cannot create $file";
|
||||
print OUT "#\t$file\n";
|
||||
print OUT "#$file\n";
|
||||
print OUT "include \$(EPICS_BASE)/config/$file\n";
|
||||
if ( ($file eq "RULES.Host") || ($file eq "RULES.Vx") ) {
|
||||
print OUT "inc:: \$(INSTALL_INCREC)\n";
|
||||
}
|
||||
close OUT;
|
||||
}
|
||||
|
||||
open OUT, ">makeSoftLinks" or die "Cannot createmakeSoftLinks";
|
||||
print OUT '#!/bin/sh',"\n";
|
||||
print OUT '#makeSoftLinks',"\n";
|
||||
print OUT '#This shell program makes soft links to everything in MASTER_IOCAPPS/bin/*',"\n";
|
||||
print OUT '#set -xv',"\n";
|
||||
print OUT '',"\n";
|
||||
print OUT 'SAVEDIR=$PWD',"\n";
|
||||
print OUT 'Cleanup() {',"\n";
|
||||
print OUT ' cd $SAVEDIR',"\n";
|
||||
print OUT ' rtncode=$1',"\n";
|
||||
print OUT ' shift 1',"\n";
|
||||
print OUT ' for MESSAGE',"\n";
|
||||
print OUT ' do',"\n";
|
||||
print OUT ' echo "$MESSAGE"',"\n";
|
||||
print OUT ' done',"\n";
|
||||
print OUT ' exit $rtncode',"\n";
|
||||
print OUT '}',"\n";
|
||||
print OUT 'USAGE="Usage: makeSoftLinks MASTER_IOCAPPS dir"',"\n";
|
||||
print OUT '',"\n";
|
||||
print OUT 'if [ $# != 2 ]; then Cleanup 1 "Illegal number args" "$USAGE"; fi;',"\n";
|
||||
print OUT 'MASTER_IOCAPPS=$1',"\n";
|
||||
print OUT 'DIR=$2',"\n";
|
||||
print OUT '',"\n";
|
||||
print OUT 'if [ ! -d ${MASTER_IOCAPPS}/${DIR} ] ; then Cleanup 0 ; fi',"\n";
|
||||
print OUT '',"\n";
|
||||
print OUT 'FROM=${MASTER_IOCAPPS}/${DIR}',"\n";
|
||||
print OUT 'if [ -z "`ls ${FROM}`" ] ; then Cleanup 0 ; fi',"\n";
|
||||
print OUT 'if [ ! -d ${DIR} ] ; then',"\n";
|
||||
print OUT ' echo "mkdir ${DIR}"',"\n";
|
||||
print OUT ' mkdir ${DIR}',"\n";
|
||||
print OUT 'fi',"\n";
|
||||
print OUT 'cd ${DIR}',"\n";
|
||||
print OUT 'for FILE in `ls ${FROM}`',"\n";
|
||||
print OUT 'do',"\n";
|
||||
print OUT ' if [ -d ${FROM}/${FILE} ] ; then',"\n";
|
||||
print OUT ' $0 ${MASTER_IOCAPPS}/${DIR} ${FILE}',"\n";
|
||||
print OUT ' elif [ -f ${FROM}/${FILE} ] ; then',"\n";
|
||||
print OUT ' if [ ! -f "${FILE}" ]; then',"\n";
|
||||
print OUT ' ln -s ${MASTER_IOCAPPS}/${DIR}/${FILE} ${FILE}',"\n";
|
||||
print OUT ' fi',"\n";
|
||||
print OUT ' else',"\n";
|
||||
print OUT ' echo "${MASTER_IOCAPPS}/${DIR}/${FILE} Illegal."',"\n";
|
||||
print OUT ' fi',"\n";
|
||||
print OUT 'done',"\n";
|
||||
print OUT 'Cleanup 0',"\n";
|
||||
close OUT;
|
||||
|
||||
chdir $startdir or die 'cannot return to start directory';
|
||||
}
|
||||
|
||||
@@ -152,8 +233,6 @@ unless (-d 'config')
|
||||
#
|
||||
foreach $app ( @apps )
|
||||
{
|
||||
print "Creating Application '$app'\n";
|
||||
print "with example\n" if $example;
|
||||
|
||||
if (-d "${app}App")
|
||||
{
|
||||
@@ -167,7 +246,8 @@ foreach $app ( @apps )
|
||||
open OUT, ">Makefile" or die "Cannot open Makefile";
|
||||
print OUT "TOP = ..\n";
|
||||
print OUT "include \$(TOP)/config/CONFIG_APP\n";
|
||||
print OUT "DIRS += \$(wildcard *src*)\n";
|
||||
print OUT "DIRS += \$(wildcard src)\n";
|
||||
print OUT "DIRS += \$(wildcard *Src*)\n";
|
||||
print OUT "DIRS += \$(wildcard *Db*)\n";
|
||||
print OUT "include \$(TOP)/config/RULES_DIRS\n";
|
||||
close OUT;
|
||||
@@ -177,7 +257,21 @@ foreach $app ( @apps )
|
||||
print OUT "TOP = ../..\n";
|
||||
print OUT "include \$(TOP)/config/CONFIG_APP\n";
|
||||
print OUT "\n";
|
||||
print OUT "#following creates xxx.db from xxx.template and xxx.substitutions\n";
|
||||
print OUT "#DBFROMTEMPLATE += xxx.db\n";
|
||||
print OUT "\n";
|
||||
print OUT "#Following creates xxxi.db from xxx.template and xxxi.substitutions\n";
|
||||
print OUT "#INDDBFROMTEMPLATE += xxxi.db\n";
|
||||
print OUT "\n";
|
||||
print OUT "#Following taken care of by local rules\n";
|
||||
print OUT "#PROD += yyy.db\n";
|
||||
print OUT "\n";
|
||||
print OUT "\n";
|
||||
print OUT "include \$(TOP)/config/RULES.Db\n";
|
||||
print OUT "\n";
|
||||
print OUT "#yyy.db: <dependicies for yyy.db\n";
|
||||
print OUT "#\t<rules to create yyy.db\n";
|
||||
print OUT "\n";
|
||||
close OUT;
|
||||
|
||||
if ($example)
|
||||
@@ -895,12 +989,21 @@ ss ss1
|
||||
unless (-d 'iocBoot')
|
||||
{
|
||||
mkdir iocBoot, 0777;
|
||||
open OUT, ">iocBoot/Makefile" or die "Cannot open iocBoot/Makefile";
|
||||
open OUT, ">iocBoot/Makefile"
|
||||
or die "Cannot open iocBoot/Makefile";
|
||||
print OUT "TOP = ..\n";
|
||||
print OUT "include \$(TOP)/config/CONFIG_APP\n";
|
||||
print OUT "DIRS += \$(wildcard *ioc* )\n";
|
||||
print OUT "include \$(TOP)/config/RULES_DIRS\n";
|
||||
print OUT "include \$(TOP)/config/RULES.iocBoot\n";
|
||||
close OUT;
|
||||
|
||||
open OUT, ">iocBoot/nfsCommands"
|
||||
or die "Cannot open iocBoot/nfsCommands";
|
||||
print OUT '# nfs Commands',"\n";
|
||||
print OUT '#Add commands like the following for each host',"\n";
|
||||
print OUT 'hostAdd("<host>,"xx.xx.xx.xx")', "\n";
|
||||
print OUT 'nfsMountAll("<host>")', "\n";
|
||||
close OUT;
|
||||
|
||||
}
|
||||
|
||||
# generate ioc stuff for this app?
|
||||
@@ -927,6 +1030,11 @@ ss ss1
|
||||
print OUT "#Following must be added for many board support packages\n";
|
||||
print OUT "#cd <full path to boot directory>\n";
|
||||
print OUT "#cd \"" . UNIXStyleName($startdir) . "\/iocBoot\/ioc$app" . "\"\n";
|
||||
print OUT "\n";
|
||||
print OUT "#Following will use NFS for file access\n";
|
||||
print OUT "#< ../nfs.cmd\n";
|
||||
print OUT "#cd \"ioc$app\"\n";
|
||||
print OUT "\n";
|
||||
print OUT "ld < bin/iocCore\n";
|
||||
print OUT "ld < bin/seq\n";
|
||||
print OUT "ld < bin/${app}Lib\n";
|
||||
|
||||
Reference in New Issue
Block a user