R3.14 tools installed into bin.
This commit is contained in:
@@ -20,6 +20,7 @@ CONFIGS += CONFIG.Host.UnixCommon
|
||||
CONFIGS += CONFIG_HOST_ARCH.UnixCommon
|
||||
|
||||
CONFIGS += CONFIG.Vx
|
||||
CONFIGS += $(subst ../,,$(wildcard ../CONFIG.Vx.*))
|
||||
#CONFIGS += $(CROSS_COMPILER_TARGET_ARCHS:%=CONFIG.Vx.%)
|
||||
|
||||
CONFIGS += CONFIG_SITE
|
||||
@@ -33,5 +34,8 @@ CONFIGS += RULES_ARCHS
|
||||
CONFIGS += RULES_DIRS
|
||||
CONFIGS += RULES_TOP
|
||||
|
||||
BIN_INSTALLS += $(wildcard ../tools/*.pl)
|
||||
BIN_INSTALLS += ../tools/installEpics
|
||||
|
||||
include $(TOP)/configure/RULES_BUILD
|
||||
|
||||
|
||||
39
config/tools/cp.pl
Executable file
39
config/tools/cp.pl
Executable file
@@ -0,0 +1,39 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# UNIX-cp in Perl
|
||||
|
||||
use File::Copy;
|
||||
|
||||
sub Usage
|
||||
{
|
||||
my ($txt) = @_;
|
||||
|
||||
print "Usage:\n";
|
||||
print "\tcp file1 file2\n";
|
||||
print "\tcp file [ file2 file3 ...] directory\n";
|
||||
print "\nError: $txt\n" if $txt;
|
||||
|
||||
exit 2;
|
||||
}
|
||||
|
||||
# need at least two args: ARGV[0] and ARGV[1]
|
||||
Usage("need more args") if $#ARGV < 1;
|
||||
|
||||
$target=$ARGV[$#ARGV];
|
||||
@sources=@ARGV[0..$#ARGV-1];
|
||||
|
||||
if (-d $target)
|
||||
{
|
||||
foreach $file ( @sources )
|
||||
{
|
||||
copy ($file, "$target/$file");
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Usage("Cannot copy more than one source into a single target")
|
||||
if ($#sources != 0);
|
||||
copy ($sources[0], $target);
|
||||
}
|
||||
|
||||
# EOF cp.pl
|
||||
13
config/tools/findBase.pl
Executable file
13
config/tools/findBase.pl
Executable file
@@ -0,0 +1,13 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
use Cwd;
|
||||
|
||||
$dir=cwd();
|
||||
# make sure $dir ends with '/'
|
||||
#
|
||||
$dir="$dir/" unless ($dir =~ m'/$');
|
||||
|
||||
if ($dir =~ m'(.*(/|\\)base)(/|\\)')
|
||||
{
|
||||
print "$1";
|
||||
}
|
||||
97
config/tools/installEpics
Executable file
97
config/tools/installEpics
Executable file
@@ -0,0 +1,97 @@
|
||||
#!/bin/sh
|
||||
|
||||
# InstallEpics
|
||||
#
|
||||
# InstallEpics is used within makefiles to copy new versions of
|
||||
# files into a destination directory.
|
||||
#
|
||||
##########################################################
|
||||
TOOL=`basename $0`
|
||||
MODE=755
|
||||
CREATE_DIR=0
|
||||
USAGE="Usage:
|
||||
$TOOL [ -m mode ] file ... directory
|
||||
|
||||
-m mode Set the mode for the installed file (0755 by default)
|
||||
file Name of file
|
||||
directory Destination directory
|
||||
"
|
||||
# get command line options
|
||||
while getopts m:g:o:csd OPT
|
||||
do
|
||||
|
||||
case $OPT in
|
||||
m) MODE=$OPTARG;;
|
||||
g | o) echo "$USAGE"; echo "$i $OPTARG not implemented";;
|
||||
c | s) echo "$USAGE"; echo "$i not implemented";;
|
||||
d) CREATE_DIR=1;;
|
||||
--) break;;
|
||||
esac
|
||||
done
|
||||
shift `expr $OPTIND - 1`
|
||||
|
||||
# at least two args required
|
||||
if [ $# -lt 2 ]
|
||||
then
|
||||
echo "Nothing to install"
|
||||
exit
|
||||
fi
|
||||
|
||||
INSTALL_DIR=
|
||||
FILELIST=
|
||||
for i
|
||||
do
|
||||
FILELIST="${FILELIST} ${INSTALL_DIR}"; INSTALL_DIR=$i; shift;
|
||||
done
|
||||
|
||||
if [ ! -d "${INSTALL_DIR}" ] ;then
|
||||
if [ ${CREATE_DIR} != "0" ] ;then
|
||||
OLDIFS=${IFS}
|
||||
IFS=/
|
||||
DIRNAME=
|
||||
for DIR in ${INSTALL_DIR}
|
||||
do
|
||||
if [ "${DIR}" = "." ] || [ "${DIR}" = ".." ] ;then
|
||||
if [ "${DIRNAME}" = "" ] ;then
|
||||
DIRNAME=${DIR}
|
||||
else
|
||||
DIRNAME=${DIRNAME}/${DIR}
|
||||
fi
|
||||
else
|
||||
DIRNAME=${DIRNAME}/${DIR}
|
||||
if [ ! -d "${DIRNAME}" ] ;then
|
||||
mkdir "${DIRNAME}"
|
||||
fi
|
||||
fi
|
||||
done
|
||||
IFS=${OLDIFS}
|
||||
else
|
||||
echo "$USAGE\n Can't find directory '${INSTALL_DIR}'"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
for FILE in ${FILELIST}
|
||||
do
|
||||
if [ ! -f ${FILE} ] ;then
|
||||
echo "$USAGE\n Can't find file '${FILE}'"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
TEST=
|
||||
FILEBASENAME=`basename ${FILE}`
|
||||
if [ -f ${INSTALL_DIR}/${FILEBASENAME} ] ; then
|
||||
#Is ${INSTALL_DIR}/${FILEBASENAME} link timestamp newer than ${FILE}
|
||||
TEST=`find ${INSTALL_DIR} -name "${FILEBASENAME}" -newer ${FILE} -print`
|
||||
fi
|
||||
if [ "${TEST}x" = "x" ] ; then
|
||||
#echo "Installing ${FILEBASENAME}"
|
||||
rm -f ${INSTALL_DIR}/${FILEBASENAME}
|
||||
cp -p ${FILE} ${INSTALL_DIR}/${FILEBASENAME}
|
||||
chmod ${MODE} ${INSTALL_DIR}/${FILEBASENAME}
|
||||
else
|
||||
echo "${INSTALL_DIR}/${FILEBASENAME} is up to date"
|
||||
fi
|
||||
done
|
||||
|
||||
exit 0
|
||||
108
config/tools/installEpics.pl
Executable file
108
config/tools/installEpics.pl
Executable file
@@ -0,0 +1,108 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# InstallEpics.pl
|
||||
#
|
||||
# InstallEpics is used within makefiles to copy new versions of
|
||||
# files into a destination directory.
|
||||
# Based on installEpics shell script.
|
||||
#
|
||||
# 2-4-97 -kuk-
|
||||
#
|
||||
##########################################################
|
||||
|
||||
use Getopt::Std;
|
||||
use File::Path;
|
||||
use File::Copy;
|
||||
|
||||
$tool=$0;
|
||||
$tool=~ s'.*[/\\].+''; # basename
|
||||
$mode=0755;
|
||||
|
||||
# get command line options
|
||||
getopt "m";
|
||||
$mode = oct ($opt_m) if ($opt_m);
|
||||
|
||||
# Complain about obsolete options:
|
||||
Usage("unknown option given") if ($opt_g or $opt_o or $opt_c or $opt_s);
|
||||
|
||||
$num_files = $#ARGV;
|
||||
# at least two args required
|
||||
Usage ("Nothing to install") if ($num_files < 1);
|
||||
|
||||
# split args in file1 ... fileN target_dir:
|
||||
@files=@ARGV[0..$num_files-1];
|
||||
$install_dir=$ARGV[$num_files];
|
||||
$install_dir =~ s[\\][/]g; # maybe fix DOS-style path
|
||||
$install_dir =~ s[/$][]; # remove trailing '/'
|
||||
|
||||
# Do we have to create the directory?
|
||||
unless (-d $install_dir)
|
||||
{
|
||||
# Create dir only if -d option given
|
||||
Usage ("$install_dir does not exist") unless ($opt_d);
|
||||
|
||||
# Create all the subdirs that lead to $install_dir
|
||||
mkpath ($install_dir, 1, 0777);
|
||||
}
|
||||
|
||||
foreach $source ( @files )
|
||||
{
|
||||
Usage ("Can't find file '$source'") unless -f $source;
|
||||
|
||||
$basename=$source;
|
||||
$basename=~s'.*[/\\]'';
|
||||
$target = "$install_dir/$basename";
|
||||
|
||||
# The Win32 filesystem seems to be 'slow',
|
||||
# i.e. $target may look like 'up to date'
|
||||
# unless you wait an hour.
|
||||
# -> skip this test on WIN32 ?
|
||||
#if (-f $target and $^O ne "MSWin32")
|
||||
if (-f $target)
|
||||
{
|
||||
if (-M $target < -M $source and
|
||||
-C $target < -C $source)
|
||||
{
|
||||
print "$target is up to date\n";
|
||||
next;
|
||||
}
|
||||
else
|
||||
{
|
||||
# remove old target, make sure it is deletable:
|
||||
chmod 0777, $target;
|
||||
unlink $target;
|
||||
}
|
||||
}
|
||||
|
||||
# print "Installing $source into $install_dir\n";
|
||||
copy ($source, $target) or die "Copy failed";
|
||||
|
||||
# chmod 0555 <read-only> DOES work on WIN32, but:
|
||||
# Another chmod 0777 to make it write- and deletable
|
||||
# will then fail.
|
||||
# -> you have to use Win32::SetFileAttributes
|
||||
# to get rid of those files from within Perl.
|
||||
# Because the chmod is not really needed on WIN32,
|
||||
# just skip it!
|
||||
chmod $mode, $target unless ($^O eq "MSWin32");
|
||||
}
|
||||
|
||||
sub Usage
|
||||
{
|
||||
my ($txt) = @_;
|
||||
|
||||
print "Usage:\n";
|
||||
print "\t$tool [ -m mode ] file ... directory\n";
|
||||
print "\n";
|
||||
print "\t-d Create non-exising directories\n";
|
||||
print "\t-m mode Set the mode for the installed file";
|
||||
print " (0755 by default)\n";
|
||||
print "\tfile Name of file\n";
|
||||
print "\tdirectory Destination directory\n";
|
||||
|
||||
print "$txt\n" if $txt;
|
||||
|
||||
exit 2;
|
||||
}
|
||||
|
||||
# EOF installEpics.pl
|
||||
31
config/tools/makeMakefile.pl
Executable file
31
config/tools/makeMakefile.pl
Executable file
@@ -0,0 +1,31 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# makeMakefile.pl
|
||||
#
|
||||
# called from RULES_ARCHS
|
||||
#
|
||||
#
|
||||
# Usage: perl makeMakefile.pl O.*-dir Makefile-Type
|
||||
|
||||
$dir = $ARGV[0];
|
||||
$type= $ARGV[1];
|
||||
$makefile="$dir/Makefile";
|
||||
|
||||
if ($dir =~ m'O.(.+)')
|
||||
{
|
||||
$t_a = $1;
|
||||
}
|
||||
else
|
||||
{
|
||||
die "Cannot extract T_A from $dir";
|
||||
}
|
||||
|
||||
mkdir ($dir, 0777) unless -d $dir;
|
||||
|
||||
open OUT, "> $makefile" or die "Cannot create $makefile";
|
||||
print OUT "T_A=$t_a\n";
|
||||
print OUT "BUILD_TYPE=$type\n";
|
||||
print OUT "include ../Makefile.$type\n";
|
||||
close OUT;
|
||||
|
||||
# EOF makeMakefile.pl
|
||||
23
config/tools/mkdir.pl
Executable file
23
config/tools/mkdir.pl
Executable file
@@ -0,0 +1,23 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# UNIX-mkdir in Perl
|
||||
#
|
||||
# -p option generates full path to given dir
|
||||
|
||||
use File::Path;
|
||||
use Getopt::Std;
|
||||
getopt "";
|
||||
|
||||
foreach $dir ( @ARGV )
|
||||
{
|
||||
if ($opt_p)
|
||||
{
|
||||
mkpath ($dir) or die "Cannot make directory $dir";
|
||||
}
|
||||
else
|
||||
{
|
||||
mkdir ($dir, 0777) or die "Cannot make directory $dir";
|
||||
}
|
||||
}
|
||||
|
||||
# EOF mkdir.pl
|
||||
69
config/tools/mv.pl
Executable file
69
config/tools/mv.pl
Executable file
@@ -0,0 +1,69 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# UNIX-mv in Perl
|
||||
|
||||
use File::Copy;
|
||||
|
||||
sub Usage
|
||||
{
|
||||
my ($txt) = @_;
|
||||
|
||||
print "Usage:\n";
|
||||
print "\tmv oldname newname\n";
|
||||
print "\tmv file [ file2 file3 ...] directory\n";
|
||||
print "\nError: $txt\n" if $txt;
|
||||
|
||||
exit 2;
|
||||
}
|
||||
|
||||
sub Move
|
||||
{
|
||||
my ($src, $dest) = @_;
|
||||
|
||||
print "Move($src, $dest)\n";
|
||||
|
||||
copy ($src, $dest) or die "Cannot copy $src to $dest";
|
||||
unlink ($src) or die "Cannot remove $src";
|
||||
}
|
||||
|
||||
# return filename.ext from Drive:/path/a/b/c/filename.ext
|
||||
sub Filename
|
||||
{
|
||||
my ($file) = @_;
|
||||
|
||||
$file =~ s'.*[/\\]'';
|
||||
|
||||
return $file;
|
||||
}
|
||||
|
||||
# need at least two args: ARGV[0] and ARGV[1]
|
||||
Usage("need more args") if $#ARGV < 1;
|
||||
|
||||
$target=$ARGV[$#ARGV];
|
||||
@sources=@ARGV[0..$#ARGV-1];
|
||||
|
||||
print "move @sources into $target\n";
|
||||
|
||||
# If target is (already existent) directory,
|
||||
# move files into it:
|
||||
if (-d $target)
|
||||
{
|
||||
foreach $file ( @sources )
|
||||
{
|
||||
Move ($file, "$target/" . Filename($file));
|
||||
}
|
||||
exit 0;
|
||||
}
|
||||
|
||||
# Otherwise the target is a filename.
|
||||
# Now 'mv' may be either a 'move' or a 'rename',
|
||||
# in any case it requires exactly two args: old and new name.
|
||||
|
||||
Usage("Need exactly one source") if $#sources != 0;
|
||||
$source = @sources[0];
|
||||
|
||||
# Move only if a simple rename
|
||||
# fails (e.g. across file systems):
|
||||
Move ($source, $target) unless (rename $source, $target);
|
||||
|
||||
# EOF mv.pl
|
||||
32
config/tools/rm.pl
Executable file
32
config/tools/rm.pl
Executable file
@@ -0,0 +1,32 @@
|
||||
#!/usr/bin/perl
|
||||
#
|
||||
# UNIX-rm in Perl
|
||||
|
||||
use File::Path;
|
||||
use File::Find;
|
||||
use Getopt::Std;
|
||||
|
||||
getopt "";
|
||||
|
||||
foreach $arg ( @ARGV )
|
||||
{
|
||||
next unless -e $arg;
|
||||
|
||||
if (-d $arg)
|
||||
{
|
||||
if ($opt_r and $opt_f)
|
||||
{
|
||||
rmtree $arg;
|
||||
}
|
||||
else
|
||||
{
|
||||
rmdir ($arg) or die "Cannot delete $arg";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
unlink ($arg) or die "Cannot delete $arg";
|
||||
}
|
||||
}
|
||||
|
||||
# EOF rm.pl
|
||||
Reference in New Issue
Block a user