|
@@ -1,488 +0,0 @@
|
|
|
-#!/bin/sh
|
|
|
-# Not every host installs perl at the same location, handle many locations:
|
|
|
-PATH=/usr/bin:/usr/local/bin:$PATH
|
|
|
-exec perl -x -S $0 ${1+"$@"}
|
|
|
-exit $?
|
|
|
-#!perl -w
|
|
|
-#line 8
|
|
|
-
|
|
|
-# xt-buildroot-overlay-install [-t overlay_tarball] [-b buildroot_dir] \
|
|
|
-# [-k kernel_dir] \
|
|
|
-# [-c config_name] [-l long_name] [-f] [--help]
|
|
|
-#
|
|
|
-# Creates individual overlay tarballs for gcc, binutils, gdb, and
|
|
|
-# the Linux kernel, out of the Xtensa Configuration Overlay tarball from
|
|
|
-# a Tensilica Core Package. And installs these individual tarballs
|
|
|
-# at the appropriate locations within a buildroot source tree.
|
|
|
-#
|
|
|
-# The Xtensa configuration overlay tarball is located in:
|
|
|
-# <xtensa_root>/src/xtensa-config-overlay.tar.gz
|
|
|
-# where <xtensa_root> is the path to the Tensilica Core Package.
|
|
|
-#
|
|
|
-# Copyright (c) 2003-2009 by Tensilica Inc.
|
|
|
-# History:
|
|
|
-# 2007-NOV-08 1.0 meg Initial version
|
|
|
-# 2007-NOV-21 1.1 meg Add -k parameter
|
|
|
-# 2007-DEC-06 1.2 meg Make -k and -b optional, check overlay sw vers.
|
|
|
-# 2008-FEB-27 1.3 meg Accept Xtensa Tools RB-2008.3 overlays
|
|
|
-
|
|
|
-$progvers = "1.3";
|
|
|
-$progname = $0;
|
|
|
-$progname =~ s|.*[/\\:]||;
|
|
|
-
|
|
|
-
|
|
|
-######################################################################
|
|
|
-#
|
|
|
-# Parse cmdline
|
|
|
-#
|
|
|
-
|
|
|
-my $overlay_tarball = undef;
|
|
|
-my $buildroot_dir = undef;
|
|
|
-my $kernel_dir = undef;
|
|
|
-my $config_name = undef;
|
|
|
-my $config_long_name = undef;
|
|
|
-my $force_clobber = 0;
|
|
|
-my $prompt = 1; # undocumented option
|
|
|
-
|
|
|
-sub usage {
|
|
|
- print "$progname version $progvers\n"
|
|
|
- ."Usage: $progname <parameters> [<options>]\n"
|
|
|
- ."Where <parameters> are:\n"
|
|
|
- ." -t file.tgz Specify path to the Xtensa Linux overlay tarball, typically\n"
|
|
|
- ." <xtensa_root>/src/xtensa-config-overlay.tar.gz\n"
|
|
|
- ." -b dir Path to the base of the buildroot source tree, in which\n"
|
|
|
- ." package specific overlay tarballs get installed.\n"
|
|
|
- ." -k dir Path to the base of the Linux kernel source tree, in which\n"
|
|
|
- ." the Linux kernel specific overlay gets installed.\n"
|
|
|
- ." -c config_name Name for the Xtensa processor configuration as it will be\n"
|
|
|
- ." known to the open source community. Must be a lowercase\n"
|
|
|
- ." identifier, starting with a letter, consisting of letters\n"
|
|
|
- ." and numbers and underscores, not ending with underscore\n"
|
|
|
- ." and not containing consecutive underscores. For examples:\n"
|
|
|
- ." dc232b , dc232b_be , mmubasele , fsf , s5000 .\n"
|
|
|
- ." -l long_name Long name for the Xtensa processor configuration, human-\n"
|
|
|
- ." readable with spaces etc allowed (must be quoted).\n"
|
|
|
- ." For example: 'Diamond 232L Standard Core Rev.B (LE)'\n"
|
|
|
- ." Try to keep it within approximately 40 characters.\n"
|
|
|
- ."And <options> are:\n"
|
|
|
- ." -f If package specific overlay tarballs already exist in\n"
|
|
|
- ." the destination source tree, overwrite them without asking.\n"
|
|
|
- ." --help Show this usage message.\n";
|
|
|
-}
|
|
|
-
|
|
|
-# Get arguments:
|
|
|
-if (!@ARGV) {
|
|
|
- usage();
|
|
|
- exit 0;
|
|
|
-}
|
|
|
-while( defined($_ = shift) ) {
|
|
|
- if( /^-[tbclk]$/ ) { # option taking an argument
|
|
|
- my $arg = shift;
|
|
|
- if( !defined($arg) ) {
|
|
|
- print STDERR "$progname: ERROR: missing parameter after '$_' option\n\n";
|
|
|
- usage();
|
|
|
- exit 1;
|
|
|
- }
|
|
|
- $overlay_tarball = $arg if $_ eq "-t";
|
|
|
- $buildroot_dir = $arg if $_ eq "-b";
|
|
|
- $kernel_dir = $arg if $_ eq "-k";
|
|
|
- $config_name = $arg if $_ eq "-c";
|
|
|
- $config_long_name = $arg if $_ eq "-l";
|
|
|
- next;
|
|
|
- }
|
|
|
- if( /^-f$/ ) {
|
|
|
- $force_clobber = 1;
|
|
|
- next;
|
|
|
- }
|
|
|
- if( /^--[m-t]{8}$/ && /[new]([wow])([pup])[fur]\1[maze]\2[tuff]/ ) {
|
|
|
- $prompt = 0;
|
|
|
- next;
|
|
|
- }
|
|
|
- if( /^-(h|help|\-h|\-help|\?)$/i ) {
|
|
|
- usage();
|
|
|
- exit 0;
|
|
|
- }
|
|
|
- print STDERR "$progname: ERROR: unrecognized option or argument '$_'\n\n";
|
|
|
- usage();
|
|
|
- exit 1;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-######################################################################
|
|
|
-#
|
|
|
-# Validate cmdline arguments
|
|
|
-#
|
|
|
-
|
|
|
-ErrorU("missing -c argument (core name)")
|
|
|
- unless defined($config_name);
|
|
|
-# Try to enforce reasonable names:
|
|
|
-ErrorU("-c: malformed core name '$config_name' (must be lowercase, letter followed by letters/digits, may contain underscore separators)")
|
|
|
- unless $config_name =~ /^[a-z][a-z0-9]*(_[a-z0-9]+)*$/;
|
|
|
-ErrorU("-c: core name too short '$config_name'")
|
|
|
- unless length($config_name) >= 2;
|
|
|
-ErrorU("-c: core name too long '$config_name'")
|
|
|
- unless length($config_name) <= 16;
|
|
|
-
|
|
|
-
|
|
|
-ErrorU("missing -l argument (core long name)")
|
|
|
- unless defined($config_long_name);
|
|
|
-$config_long_name =~ s/^\s+//; # trim extra whitespace...
|
|
|
-$config_long_name =~ s/\s+$//;
|
|
|
-$config_long_name =~ s/\s+/ /g;
|
|
|
-# Try to enforce reasonable names:
|
|
|
-ErrorU("-l: invalid (non-ASCII-printable) characters in core long name '$config_long_name'")
|
|
|
- unless $config_long_name =~ /^[\x20-\x7E]+$/;
|
|
|
-ErrorU("-l: disallowed characters (\"\'\\) in core long name '$config_long_name'")
|
|
|
- if $config_long_name =~ /[\'\"\\]/;
|
|
|
-ErrorU("-l: core long name too short '$config_long_name'")
|
|
|
- unless length($config_long_name) >= 5;
|
|
|
-ErrorU("-l: core long name too long '$config_long_name'")
|
|
|
- unless length($config_long_name) <= 60;
|
|
|
-
|
|
|
-
|
|
|
-#ErrorU("missing -b argument (buildroot source tree directory)")
|
|
|
-# unless defined($buildroot_dir);
|
|
|
-if (defined($buildroot_dir)) {
|
|
|
- ErrorU("-b: not a directory: $buildroot_dir")
|
|
|
- unless -d $buildroot_dir;
|
|
|
- foreach my $p ("toolchain/gcc", "toolchain/binutils", "toolchain/gdb", "target/xtensa") {
|
|
|
- ErrorU("-b: not a buildroot directory: missing $buildroot_dir/$p")
|
|
|
- unless -d $buildroot_dir . "/" . $p;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-#ErrorU("missing -k argument (Linux kernel source tree directory)")
|
|
|
-# unless defined($kernel_dir);
|
|
|
-if (defined($kernel_dir)) {
|
|
|
- ErrorU("-k: not a directory: $kernel_dir")
|
|
|
- unless -d $kernel_dir;
|
|
|
- foreach my $p ("kernel", "arch/xtensa/kernel", "include/asm-xtensa") {
|
|
|
- ErrorU("-k: not a Linux kernel directory: missing $kernel_dir/$p")
|
|
|
- unless -d $kernel_dir . "/" . $p;
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-if (!defined($buildroot_dir) and !defined($kernel_dir)) {
|
|
|
- print STDERR "$progname: WARNING:\n";
|
|
|
- print STDERR "$progname: WARNING: Test run only, NOTHING WILL BE INSTALLED\n";
|
|
|
- print STDERR "$progname: WARNING: (use -b and -k to specify install destination)\n";
|
|
|
- print STDERR "$progname: WARNING:\n";
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-my @ovpaths = ( "/src/xtensa-config-overlay.tar.gz",
|
|
|
- "/xtensa-elf/src/linux/misc/linux-overlay.tar.gz" );
|
|
|
-if (!defined($overlay_tarball)) {
|
|
|
- # Try to locate the overlay tarball based on XTENSA_SYSTEM and XTENSA_CORE
|
|
|
- # settings:
|
|
|
- my $xtensa_root = `xt-xcc --show-config=config 2>/dev/null`;
|
|
|
- $xtensa_root = "" unless defined($xtensa_root);
|
|
|
- chomp($xtensa_root);
|
|
|
- if ($xtensa_root ne "") {
|
|
|
- ($overlay_tarball) = grep(-f $xtensa_root.$_, @ovpaths);
|
|
|
- if (!defined($overlay_tarball)) {
|
|
|
- ErrorU("Xtensa configuration overlay tarball not found: ".$xtensa_root.$ovpaths[0])
|
|
|
- }
|
|
|
- } else {
|
|
|
- ErrorU("missing -t argument (Xtensa configuration overlay tarball filename)\n"
|
|
|
- ."and no default Xtensa Core Package defined in the environment");
|
|
|
- }
|
|
|
-} else {
|
|
|
- foreach my $p ("", @ovpaths) {
|
|
|
- if (-f $overlay_tarball.$p) {
|
|
|
- $overlay_tarball .= $p;
|
|
|
- last;
|
|
|
- }
|
|
|
- }
|
|
|
- ErrorU("-t: file not found: $overlay_tarball") unless -f $overlay_tarball;
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-######################################################################
|
|
|
-#
|
|
|
-# Misc
|
|
|
-#
|
|
|
-
|
|
|
-my $overlay_unpacked = 0;
|
|
|
-my $ovdir;
|
|
|
-
|
|
|
-sub cleanup {
|
|
|
- if ($overlay_unpacked) {
|
|
|
- system("rm -rf '$ovdir' 2>/dev/null");
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-sub ErrorEmit {
|
|
|
- my ($msg,$usage) = @_;
|
|
|
- $msg =~ s|\n|"\n${progname}: ERROR: "|ge;
|
|
|
- print STDERR "$progname: ERROR: $msg\n";
|
|
|
- if ($usage) {
|
|
|
- print "\n";
|
|
|
- usage();
|
|
|
- }
|
|
|
- cleanup();
|
|
|
- exit 1;
|
|
|
-}
|
|
|
-sub ErrorU { ErrorEmit(shift,1); }
|
|
|
-sub Error { ErrorEmit(shift); }
|
|
|
-
|
|
|
-
|
|
|
-# Read specified file (as binary), returning contents.
|
|
|
-#
|
|
|
-sub readfile {
|
|
|
- my ($filename) = @_;
|
|
|
- # Read the file:
|
|
|
- open(INFILE,"<$filename") or Error("error reading from '$filename': $!");
|
|
|
- my $savesep = $/;
|
|
|
- undef $/;
|
|
|
- my $file = <INFILE>;
|
|
|
- $/ = $savesep;
|
|
|
- close(INFILE);
|
|
|
- $file;
|
|
|
-}
|
|
|
-
|
|
|
-# Write specified file (as binary) with first argument (string).
|
|
|
-#
|
|
|
-sub writefile {
|
|
|
- my ($filename, $file) = @_;
|
|
|
- # Read the file:
|
|
|
- open(INFILE,">$filename") or Error("error writing to '$filename': $!");
|
|
|
- print INFILE $file;
|
|
|
- close(INFILE) or Error("error closing file '$filename': $!");
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-######################################################################
|
|
|
-#
|
|
|
-# Determine a temporary directory.
|
|
|
-#
|
|
|
-
|
|
|
-my $tmpdir = "/tmp";
|
|
|
-if (defined($ENV{"TMP"}) and -d $ENV{"TMP"}) {
|
|
|
- $tmpdir = $ENV{"TMP"};
|
|
|
-} elsif (defined($ENV{"TEMP"}) and -d $ENV{"TEMP"}) {
|
|
|
- $tmpdir = $ENV{"TEMP"};
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-######################################################################
|
|
|
-#
|
|
|
-# Unpack the general overlay tarball
|
|
|
-#
|
|
|
-
|
|
|
-my $user = defined($ENV{"USER"}) ? $ENV{"USER"} : "xtensa";
|
|
|
-$ovdir = $tmpdir."/tmp-overlay-${user}-$$";
|
|
|
-mkdir $ovdir or Error("cannot create directory $ovdir");
|
|
|
-$overlay_unpacked = 1;
|
|
|
-system("tar xfz '$overlay_tarball' -C '$ovdir'")
|
|
|
- and Error("tar failed...");
|
|
|
-
|
|
|
-
|
|
|
-######################################################################
|
|
|
-#
|
|
|
-# Define and sanity check contents of overlay
|
|
|
-#
|
|
|
-
|
|
|
-my $oldpack = -f $ovdir."/xtensa-elf/src/linux/misc/core.h";
|
|
|
-my $pf1 = ($oldpack ? "src/" : "");
|
|
|
-my $pf2 = ($oldpack ? "xtensa-elf/src/linux/misc/" : "config/");
|
|
|
-
|
|
|
-my @packages = (
|
|
|
- ["binutils", "toolchain/binutils",
|
|
|
- ["${pf1}/binutils/xtensa-modules.c", "bfd/"],
|
|
|
- ["${pf1}/binutils/xtensa-config.h", "include/"],
|
|
|
- #["${pf1}/binutils/xtensa-config.sh", "ld/emulparams/"],
|
|
|
- ],
|
|
|
- ["gcc", "toolchain/gcc",
|
|
|
- ["${pf1}/gcc/xtensa-config.h", "include/"],
|
|
|
- ],
|
|
|
- ["gdb", "toolchain/gdb",
|
|
|
- ["${pf1}/gdb/xtensa-modules.c", "bfd/"],
|
|
|
- ["${pf1}/gdb/xtensa-config.h", "include/"],
|
|
|
- ["${pf1}/gdb/xtensa-config.c", "gdb/"],
|
|
|
- ["${pf1}/gdb/xtensa-regmap.c", "gdb/gdbserver/"],
|
|
|
- ["${pf1}/gdb/xtensa-regmap.c", "gdb/gdbserver/xtensa-xtregs.c"], # for GDB 6.8
|
|
|
- ["${pf1}/gdb/xtensa-regmap.c", "gdb/xtensa-xtregs.c"], # for GDB 6.8
|
|
|
- ["${pf1}/gdb/reg-xtensa.dat", "gdb/regformats/"],
|
|
|
- ],
|
|
|
- ["kernel", "target/xtensa", # ???
|
|
|
- ["${pf2}core.h", "include/asm-xtensa/variant-${config_name}/"],
|
|
|
- ["${pf2}tie.h", "include/asm-xtensa/variant-${config_name}/"],
|
|
|
- ["${pf2}tie-asm.h", "include/asm-xtensa/variant-${config_name}/"],
|
|
|
- ],
|
|
|
-);
|
|
|
-
|
|
|
-# Check that all files are present ...
|
|
|
-foreach my $pack (@packages) {
|
|
|
- my ($pname, $buildroot_subdir, @files) = @$pack;
|
|
|
- print "Checking files for $pname ...\n";
|
|
|
- foreach my $f (@files) {
|
|
|
- my ($src, $dst) = @$f;
|
|
|
- -f $ovdir."/".$src or Error("missing '$src' in overlay tarball");
|
|
|
- }
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-######################################################################
|
|
|
-#
|
|
|
-# Extract some useful information
|
|
|
-#
|
|
|
-
|
|
|
-# Extract core name as specified in the build.
|
|
|
-my $coreh = readfile($ovdir."/".$pf2."core.h");
|
|
|
-
|
|
|
-$coreh =~ /^\s*\#\s*define\s+XCHAL_SW_VERSION\s+(\w+)/m;
|
|
|
-my $swversion = $1;
|
|
|
-defined($swversion) or Error("missing XCHAL_SW_VERSION in overlay core.h file;\n"
|
|
|
- ."overlay is too old, need RB-2008.3 (SW version 7.1.1) or later");
|
|
|
-
|
|
|
-$coreh =~ /^\s*\#\s*define\s+XCHAL_CORE_ID\s+"([^"]+)"/m;
|
|
|
-my $coreid = $1;
|
|
|
-defined($coreid) or Error("missing XCHAL_CORE_ID in overlay core.h file");
|
|
|
-
|
|
|
-$coreh =~ /^\s*\#\s*define\s+XCHAL_HW_VERSION_NAME\s+"([^"]+)"/m;
|
|
|
-my $hwversion = $1;
|
|
|
-defined($hwversion) or Error("missing XCHAL_HW_VERSION_NAME in overlay core.h file");
|
|
|
-
|
|
|
-
|
|
|
-$swvers_human = sprintf("%u.%u.%u",
|
|
|
- $swversion/100000, (($swversion/1000) % 100), ($swversion % 1000));
|
|
|
-my $release = "software version $swvers_human";
|
|
|
-if (-f $ovdir."/release") {
|
|
|
- $release = readfile($ovdir."/release");
|
|
|
- chomp($release);
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-######################################################################
|
|
|
-#
|
|
|
-# Prompt user to be sure this is what he wants to do
|
|
|
-#
|
|
|
-
|
|
|
-# Catch Ctrl-C so we can do a proper cleanup:
|
|
|
-sub catch_term {
|
|
|
- my $signame = shift;
|
|
|
- #print STDERR "whoa!\n";
|
|
|
- cleanup();
|
|
|
- print STDERR "\n$progname: Cleaned up.\n";
|
|
|
- exit 3;
|
|
|
-}
|
|
|
-$SIG{TERM} = \&catch_term;
|
|
|
-$SIG{HUP} = \&catch_term;
|
|
|
-$SIG{INT} = \&catch_term;
|
|
|
-
|
|
|
-$| = 1;
|
|
|
-print "\n",
|
|
|
- "About to generate package-specific overlay tarballs for the following:\n",
|
|
|
- "\n",
|
|
|
- " Xtensa processor short name: $config_name\n";
|
|
|
-print " This short name overrides the name specified in the XPG: $coreid\n" if $coreid ne $config_name;
|
|
|
-#print " Please ensure that's the name you want. If submitted to the open source\n",
|
|
|
-# " community, it can be a hassle to change later on.\n";
|
|
|
-print " Xtensa processor description: $config_long_name\n",
|
|
|
- " Targeting Xtensa HW version: $hwversion\n",
|
|
|
- " Xtensa configuration overlay: $overlay_tarball\n",
|
|
|
- " (release of overlay): $release\n",
|
|
|
- " Destination buildroot dir: ".(defined($buildroot_dir)?$buildroot_dir:"(none, not installed)")."\n",
|
|
|
- " Destination Linux kernel dir: ".(defined($kernel_dir)?$kernel_dir:"(none, not installed)")."\n",
|
|
|
- "\n",
|
|
|
- "Are you sure? (y/n) ";
|
|
|
-if ($prompt) {
|
|
|
- my $line = <STDIN>;
|
|
|
- chomp($line);
|
|
|
- if ($line !~ /^y(es)?$/i) {
|
|
|
- print "\nInstallation aborted.\n";
|
|
|
- cleanup();
|
|
|
- exit 2;
|
|
|
- }
|
|
|
-} else {
|
|
|
- print "YES [no prompt]\n";
|
|
|
-}
|
|
|
-print "\n";
|
|
|
-
|
|
|
-
|
|
|
-######################################################################
|
|
|
-#
|
|
|
-# Now generate the tarballs
|
|
|
-#
|
|
|
-
|
|
|
-# Now generate each tarball ...
|
|
|
-foreach my $pack (@packages) {
|
|
|
- my ($pname, $buildroot_subdir, @files) = @$pack;
|
|
|
- my $tarname = "${pname}-xtensa_${config_name}.tgz";
|
|
|
- my $fulltarname;
|
|
|
- if (defined($buildroot_dir)) {
|
|
|
- my $tarsubname = $buildroot_subdir . "/" . $tarname;
|
|
|
- print "Generating and installing $tarsubname ...\n";
|
|
|
- $fulltarname = $buildroot_dir . "/" . $tarsubname;
|
|
|
- } else {
|
|
|
- print "Generating $tarname ...\n";
|
|
|
- $fulltarname = $ovdir . "/" . $tarname;
|
|
|
- }
|
|
|
- if (-e $fulltarname) {
|
|
|
- if ($force_clobber or !defined($buildroot_dir)) {
|
|
|
- unlink($fulltarname) or Error("could not delete '$fulltarname': $!");
|
|
|
- } else {
|
|
|
- Error("destination tarball already exists: '$fulltarname'");
|
|
|
- }
|
|
|
- }
|
|
|
- my $pdir = $ovdir."/tmp-".$pname;
|
|
|
- system("rm -fr '${pdir}' 2>/dev/null");
|
|
|
- mkdir $pdir or Error("cannot create directory $pdir");
|
|
|
- foreach my $f (@files) {
|
|
|
- my ($src, $dst) = @$f;
|
|
|
- # If $dst ends in / , take filename from $src :
|
|
|
- if ($dst =~ m|/$|) {
|
|
|
- my $fname = $src;
|
|
|
- $fname =~ s|^.*/||;
|
|
|
- $dst .= $fname;
|
|
|
- }
|
|
|
- # Ensure destination directory exists:
|
|
|
- my $dstdir = $pdir;
|
|
|
- while ($dst =~ s|^([^/]+)/+||) {
|
|
|
- $dstdir .= "/" . $1;
|
|
|
- mkdir($dstdir);
|
|
|
- }
|
|
|
- # Read file:
|
|
|
- my $content = readfile($ovdir."/".$src);
|
|
|
-
|
|
|
- # Adjust contents of file.
|
|
|
- # Fix-up typo:
|
|
|
- $content =~ s/XCHAL_SA_(NCP|CP\d+)_/XCHAL_$1_SA_/g;
|
|
|
- # Update core name info:
|
|
|
- my $iscore = ($content =~ s/^(\s*\#\s*define\s+XCHAL_CORE_ID\s+)"[^"]+"/$1"$config_name"/mg);
|
|
|
- $iscore or $content =~ s{^(\s*\#\s*define\s+XCHAL_INST_FETCH_WIDTH\s+\S+\s*(/\*[^\*]*\*/)?\s*$)}
|
|
|
- {$1\n\#undef XCHAL_CORE_ID\n\#define XCHAL_CORE_ID\t\t\t"$config_name"\n}smg;
|
|
|
- # Update core description info:
|
|
|
- $content =~ s/^(\s*\#\s*define\s+XCHAL_CORE_DESCRIPTION\s+)"[^"]+"/$1"$config_long_name"/mg
|
|
|
- or $content =~ s{^(\s*\#\s*define\s+XCHAL_CORE_ID\s+\S+\s*(/\*[^\*]*\*/)?\s*$)}
|
|
|
- {"$1\n" . ($iscore ? "" : "\n\#undef XCHAL_CORE_DESCRIPTION\n")
|
|
|
- . "\#define XCHAL_CORE_DESCRIPTION\t\t\"${config_long_name}\""}smge;
|
|
|
-
|
|
|
- # Write (possibly modified) file:
|
|
|
- writefile($dstdir."/".$dst, $content);
|
|
|
- }
|
|
|
- my $tarcmd = "tar cfz '${fulltarname}' -C '${pdir}' .";
|
|
|
- system($tarcmd) and Error("failed executing: $tarcmd");
|
|
|
-
|
|
|
- # Install Linux kernel overlay:
|
|
|
- if ($pname eq "kernel" and defined($kernel_dir)) {
|
|
|
- print "Installing Linux kernel overlay from $tarname ...\n";
|
|
|
- my $untarcmd = "tar xfz '${fulltarname}' -C '${kernel_dir}' .";
|
|
|
- system($untarcmd) and Error("failed executing: $tarcmd");
|
|
|
- }
|
|
|
- # Possible TODO: update arch/xtensa/{Kconfig,Makefile} to add this config?
|
|
|
-}
|
|
|
-
|
|
|
-
|
|
|
-######################################################################
|
|
|
-#
|
|
|
-# The End
|
|
|
-#
|
|
|
-
|
|
|
-cleanup();
|
|
|
-print "Done.\n";
|
|
|
-exit 0;
|
|
|
-
|