mirror of https://github.com/acpica/acpica/
436 lines
7.3 KiB
Bash
Executable File
436 lines
7.3 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# NAME:
|
|
# libacpica.sh - ACPICA release script library
|
|
#
|
|
#
|
|
|
|
if [ -z $SCRIPT ]; then
|
|
echo "SCRIPT is empty, please invoking libacpica.sh from release scripts."
|
|
exit 1
|
|
fi
|
|
|
|
CURDIR=`pwd`
|
|
TOOLDIR=$SCRIPT/bin
|
|
ACPISRC=$TOOLDIR/acpisrc
|
|
ACPI_TYPES=
|
|
|
|
linux_dirs()
|
|
{
|
|
local dirs
|
|
|
|
dirs="\
|
|
drivers/acpi/acpica \
|
|
include/acpi \
|
|
include/acpi/platform \
|
|
tools/power/acpi/common \
|
|
tools/power/acpi/os_specific/service_layers \
|
|
tools/power/acpi/tools/acpidump \
|
|
"
|
|
echo $dirs
|
|
}
|
|
|
|
acpica_privs()
|
|
{
|
|
local incs
|
|
|
|
incs="\
|
|
acapps.h \
|
|
accommon.h acconvert.h \
|
|
acdebug.h acdispat.h \
|
|
acevents.h \
|
|
acglobal.h \
|
|
achware.h \
|
|
acinterp.h \
|
|
aclocal.h \
|
|
acmacros.h \
|
|
acnamesp.h \
|
|
acobject.h acopcode.h \
|
|
acparser.h acpredef.h \
|
|
acresrc.h \
|
|
acstruct.h \
|
|
actables.h \
|
|
acutils.h \
|
|
amlcode.h amlresrc.h \
|
|
"
|
|
echo $incs
|
|
}
|
|
|
|
acpica_drivers_paths()
|
|
{
|
|
local paths incs inc
|
|
|
|
paths="\
|
|
components/debugger \
|
|
components/dispatcher \
|
|
components/events \
|
|
components/executer \
|
|
components/hardware \
|
|
components/namespace \
|
|
components/parser \
|
|
components/resources \
|
|
components/tables \
|
|
components/utilities \
|
|
"
|
|
incs=`acpica_privs`
|
|
for inc in $incs; do
|
|
paths="$paths include/$inc"
|
|
done
|
|
echo $paths
|
|
}
|
|
|
|
acpica_tools_paths()
|
|
{
|
|
local paths incs inc
|
|
|
|
paths="\
|
|
common/getopt.c \
|
|
common/cmfsize.c \
|
|
os_specific/service_layers/oslibcfs.c \
|
|
os_specific/service_layers/oslinuxtbl.c \
|
|
os_specific/service_layers/osunixdir.c \
|
|
os_specific/service_layers/osunixmap.c \
|
|
os_specific/service_layers/osunixxf.c \
|
|
tools/acpidump \
|
|
"
|
|
echo $paths
|
|
}
|
|
|
|
acpica_exclude_paths()
|
|
{
|
|
local paths
|
|
|
|
paths="\
|
|
include/acpi/acclib.h \
|
|
include/acpi/acdisasm.h \
|
|
include/acpi/actbinfo.h \
|
|
include/acpi/platform/accygwin.h \
|
|
include/acpi/platform/acefi.h \
|
|
include/acpi/platform/acefiex.h \
|
|
include/acpi/platform/acfreebsd.h \
|
|
include/acpi/platform/achaiku.h \
|
|
include/acpi/platform/acmacosx.h \
|
|
include/acpi/platform/acmsvc.h \
|
|
include/acpi/platform/acmsvcex.h \
|
|
include/acpi/platform/acnetbsd.h \
|
|
include/acpi/platform/acos2.h \
|
|
include/acpi/platform/acqnx.h \
|
|
include/acpi/platform/acwin.h \
|
|
include/acpi/platform/acwinex.h \
|
|
include/acpi/platform/acwin64.h \
|
|
include/acpi/platform/acdragonfly.h \
|
|
include/acpi/platform/acdragonflyex.h \
|
|
drivers/acpi/acpica/utclib.c \
|
|
"
|
|
echo $paths
|
|
}
|
|
|
|
fulldir()
|
|
{
|
|
( cd $1; pwd )
|
|
}
|
|
|
|
getdir()
|
|
{
|
|
local lpath
|
|
|
|
lpath=`dirname $1`
|
|
fulldir $lpath
|
|
}
|
|
|
|
getfile()
|
|
{
|
|
local d f
|
|
|
|
d=`getdir $1`
|
|
f=`basename $1`
|
|
echo $d/$f
|
|
}
|
|
|
|
identify_bits()
|
|
{
|
|
local arch no64
|
|
|
|
arch=`uname -m`
|
|
no64=`echo ${arch%64}`
|
|
|
|
if [ "x$arch" != "x$no64" ] ; then
|
|
echo 64
|
|
else
|
|
echo 32
|
|
fi
|
|
}
|
|
|
|
make_tool()
|
|
{
|
|
local srcdir acpi_tool tooldir bits
|
|
|
|
srcdir=$1
|
|
acpi_tool=$2
|
|
|
|
tooldir=$srcdir/generate/unix
|
|
bits=`identify_bits`
|
|
|
|
mkdir -p $TOOLDIR
|
|
make -C $srcdir $acpi_tool
|
|
|
|
if [ ! -f $tooldir/bin$bits/$acpi_tool ]; then
|
|
bits=
|
|
fi
|
|
|
|
cp $tooldir/bin$bits/$acpi_tool $TOOLDIR
|
|
}
|
|
|
|
clean_tool()
|
|
{
|
|
local srcdir acpi_tool tooldir bits
|
|
|
|
srcdir=$1
|
|
acpi_tool=$2
|
|
|
|
tooldir=$srcdir/generate/unix
|
|
bits=`identify_bits`
|
|
|
|
if [ -f $tooldir/bin$bits/$acpi_tool ]; then
|
|
rm -f $tooldir/bin$bits/$acpi_tool
|
|
rm -rf $tooldir/$acpi_tool/obj$bits
|
|
fi
|
|
if [ -f $tooldir/bin/$acpi_tool ]; then
|
|
rm -f $tooldir/bin/$acpi_tool
|
|
rm -rf $tooldir/$acpi_tool/obj
|
|
fi
|
|
|
|
rm -f $tooldir/bin$bits/$acpi_tool
|
|
}
|
|
|
|
clean_acpisrc()
|
|
{
|
|
clean_tool $1 acpisrc
|
|
}
|
|
|
|
make_acpisrc()
|
|
{
|
|
if [ "x$2" = "xforce" ]; then
|
|
clean_tool $1 acpisrc
|
|
fi
|
|
make_tool $1 acpisrc
|
|
}
|
|
|
|
find_typedefs()
|
|
{
|
|
cat $1 | awk '
|
|
{
|
|
if (match($0, /^typedef[_a-zA-Z0-9\* \t]+;/)) {
|
|
s1=substr($0, RSTART, RLENGTH)
|
|
if (match(s1, /^typedef[ \t]+/)) {
|
|
s2=substr(s1, RLENGTH+1)
|
|
if (match(s2, /(signed|unsigned)[ \t]+/)) {
|
|
s3=substr(s2, RLENGTH+1)
|
|
} else {
|
|
s3=s2
|
|
}
|
|
if (match(s3, /[_a-zA-Z0-9]+[ \t]+/)) {
|
|
s4=substr(s3, RLENGTH+1)
|
|
if (match(s4, /\*[ \t]*/)) {
|
|
s5=substr(s4, RLENGTH+1)
|
|
} else {
|
|
s5=s4
|
|
}
|
|
if (match(s5, /[_a-zA-Z0-9]+/)) {
|
|
def=substr(s5, RSTART, RLENGTH)
|
|
print def
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
'
|
|
}
|
|
|
|
find_all_typedefs()
|
|
{
|
|
local f files
|
|
|
|
files=`find . -name "*.h"`
|
|
for f in $files; do
|
|
find_typedefs $f
|
|
done
|
|
}
|
|
|
|
lindent_find_typedefs()
|
|
{
|
|
ACPI_TYPES=`find_all_typedefs | sort | uniq`
|
|
}
|
|
|
|
lindent_single()
|
|
{
|
|
local t indent_flags
|
|
|
|
indent_flags="-npro -kr -i8 -ts8 -sob -l80 -ss -ncs -il0"
|
|
for t in $ACPI_TYPES; do
|
|
if [ "x$2" = "xtrue" ]; then
|
|
echo " Adding type $t"
|
|
fi
|
|
indent_flags="$indent_flags -T $t"
|
|
done
|
|
|
|
dos2unix $1 > /dev/null 2>&1
|
|
indent $indent_flags $1
|
|
}
|
|
|
|
lindent()
|
|
{
|
|
local files f verbose=true
|
|
|
|
(
|
|
cd $1
|
|
lindent_find_typedefs
|
|
files=`find . -name "*.[ch]" | cut -c3-`
|
|
for f in $files; do
|
|
lindent_single $f $verbose
|
|
verbose=false
|
|
done
|
|
find . -name "*~" | xargs rm -f
|
|
)
|
|
}
|
|
|
|
linuxize_format()
|
|
{
|
|
echo " Converting (acpisrc -l)..."
|
|
$ACPISRC -ldqy $1 $1 > /dev/null
|
|
|
|
echo " Converting (indent)..."
|
|
lindent $1
|
|
|
|
echo " Converting (acpisrc -i)..."
|
|
$ACPISRC -idqy $1 $1 > /dev/null
|
|
}
|
|
|
|
copy_linux_hierarchy()
|
|
{
|
|
local from to dirs dir
|
|
|
|
from=$1
|
|
to=$2
|
|
|
|
rm -rf $to
|
|
dirs=`linux_dirs`
|
|
|
|
for dir in $dirs; do
|
|
echo " Copying ($dir)..."
|
|
mkdir -p $to/$dir
|
|
cp $from/$dir/*.[ch] $to/$dir/
|
|
done
|
|
}
|
|
|
|
linuxize_hierarchy_ref()
|
|
{
|
|
local linux acpica to
|
|
local all_files
|
|
local t n d f
|
|
local private_includes inc
|
|
|
|
linux=$1
|
|
acpica=$2
|
|
to=$3
|
|
|
|
rm -rf $to
|
|
mkdir -p $to
|
|
|
|
#
|
|
# Ensure that the files in the two directories
|
|
# (native ACPICA and Linux ACPICA) match
|
|
#
|
|
|
|
all_files=`find $linux`
|
|
|
|
for t in $all_files ; do
|
|
if [ -f $t ] ; then
|
|
n=${t#${linux}/}
|
|
d=$to/`dirname $n`
|
|
f=`find $acpica/source -name \`basename $t\``
|
|
if [ ! -z $f ] ; then
|
|
mkdir -p $d
|
|
cp -f $f $d
|
|
else
|
|
echo " Removing ($n)..."
|
|
rm -f $t
|
|
fi
|
|
fi
|
|
done
|
|
|
|
private_includes=`acpica_privs`
|
|
|
|
# Do we need to perform things on private_includes?
|
|
for inc in $private_includes ; do
|
|
if [ -f $to/include/acpi/$inc ] ; then
|
|
echo "Warning: private include file $inc is now public. Please check the linuxize.sh"
|
|
elif [ ! -f $to/drivers/acpi/acpica/$inc ] ; then
|
|
echo "Warning: private include file $inc does not exist. Please check the linuxize.sh."
|
|
fi
|
|
done
|
|
}
|
|
|
|
linuxize_hierarchy_noref()
|
|
{
|
|
local repo_linux paths path
|
|
|
|
repo_linux=$1
|
|
|
|
(
|
|
cd $repo_linux
|
|
|
|
# Making hierarchy
|
|
|
|
# Making source files
|
|
mkdir -p drivers/acpi/acpica
|
|
paths=`acpica_drivers_paths`
|
|
for path in $paths; do
|
|
if [ -d source/$path ]; then
|
|
echo " Moving directory $path..."
|
|
mv source/$path/*.[ch] drivers/acpi/acpica/
|
|
fi
|
|
if [ -f source/$path ]; then
|
|
echo " Moving file $path..."
|
|
mv source/$path drivers/acpi/acpica/
|
|
fi
|
|
done
|
|
|
|
# Making include files
|
|
mkdir -p include/acpi
|
|
mv -f source/include/* include/acpi
|
|
|
|
# Making tools/power/acpi files
|
|
paths=`acpica_tools_paths`
|
|
for path in $paths; do
|
|
if [ -d source/$path ]; then
|
|
echo " Moving directory $path..."
|
|
mkdir -p tools/power/acpi/$path
|
|
mv source/$path/*.[ch] tools/power/acpi/$path/
|
|
fi
|
|
if [ -f source/$path ]; then
|
|
echo " Moving file $path..."
|
|
mkdir -p `dirname tools/power/acpi/$path`
|
|
mv source/$path tools/power/acpi/$path
|
|
fi
|
|
done
|
|
|
|
# Removing non-Linux files
|
|
paths=`acpica_exclude_paths`
|
|
for path in $paths; do
|
|
if [ -d $path ]; then
|
|
echo " Removing directory $path..."
|
|
rm -rf $path
|
|
fi
|
|
if [ -f $path ]; then
|
|
echo " Removing file $path..."
|
|
rm -f $path
|
|
fi
|
|
done
|
|
|
|
rm -rf source
|
|
)
|
|
}
|
|
|
|
SRCDIR=`fulldir $SCRIPT/../..`
|