mirror of https://github.com/acpica/acpica/
479 lines
11 KiB
Bash
Executable File
479 lines
11 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
#******************************************************************************
|
|
#
|
|
# ACPICA package generation script for Cygwin/Windows execution
|
|
#
|
|
# Requires cygwin be installed - http://www.cygwin.com
|
|
# and its /bin be *first* in your path.
|
|
#
|
|
# Windows packages require pkzip25 (free, and is available from numerous
|
|
# sources - search for "pkzip25" or "pkzip25.exe")
|
|
#
|
|
# Execute this script from the acpica/generate/release directory.
|
|
#
|
|
# Constructed packages are placed in the acpica/generate/release/current
|
|
# directory.
|
|
#
|
|
# Line Terminators: Windows source packages leave the CR/LF terminator.
|
|
# Unix packages convert the CR/LF terminators to LF only.
|
|
#
|
|
# Usage:
|
|
#
|
|
# build <package_type> <target_type>
|
|
#
|
|
# where:
|
|
# <package_type> is one of:
|
|
# source - Build an ACPICA source package (core and all tools)
|
|
# test - Build an ACPICA test suite package
|
|
# binary - Build an ACPICA binary tools package
|
|
#
|
|
# <target_type> is one of:
|
|
# win - Generate Windows package (Intel license, CRLF line terminators)
|
|
# unix - Generate Unix package (Intel license, LF line terminators)
|
|
# unix2 - Generate Unix package (dual license, LF line terminators)
|
|
#
|
|
#******************************************************************************
|
|
|
|
# Configuration
|
|
|
|
ZIP_UTILITY="/cygdrive/c/windows/pkzip25.exe"
|
|
ACPISRC="libraries/acpisrc_dbg.exe"
|
|
DOS2UNIX="dos2unix"
|
|
UNIX2DOS="unix2dos"
|
|
|
|
# Filenames and paths
|
|
|
|
TARGET_DIR="generate/release/current"
|
|
TEMP_DIR=acpitemp
|
|
TEST_PREFIX=acpitests
|
|
SOURCE_PREFIX=acpica
|
|
BINARY_PREFIX=iasl
|
|
PACKAGE_SUFFIX=`date +%Y%m%d`
|
|
|
|
NPARAM=$#
|
|
|
|
|
|
#******************************************************************************
|
|
#
|
|
# Miscellaneous utility functions
|
|
#
|
|
#******************************************************************************
|
|
|
|
usage()
|
|
{
|
|
echo "$1"
|
|
echo
|
|
echo "Low-level build script for ACPICA release packages"
|
|
echo "Usage:"
|
|
echo " $0 source <win | unix | unix2>"
|
|
echo " $0 test <win | unix>"
|
|
echo " $0 binary <win>"
|
|
}
|
|
|
|
banner()
|
|
{
|
|
echo
|
|
echo "$1"
|
|
echo
|
|
}
|
|
|
|
check_zip_utility_exists()
|
|
{
|
|
#
|
|
# Need pkzip (or similar) to build the windows packages
|
|
#
|
|
if [ ! -e "$ZIP_UTILITY" ]; then
|
|
echo "ZIP_UTILITY ($ZIP_UTILITY) does not exist!"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
convert_to_unix_line_terminators()
|
|
{
|
|
#
|
|
# Convert all CR/LF pairs to Unix format (LF only)
|
|
#
|
|
cd $TEMP_DIR
|
|
echo "Starting CR/LF to LF (UNIX) full source conversion"
|
|
find . -name "*" | xargs $DOS2UNIX -q
|
|
echo "Completed CR/LF to LF (UNIX) full source conversion"
|
|
cd ..
|
|
}
|
|
|
|
convert_to_dos_line_terminators()
|
|
{
|
|
#
|
|
# Convert all lone LF terminators to CR/LF
|
|
# Note: Checks shell scripts only (*.sh)
|
|
#
|
|
cd $TEMP_DIR
|
|
echo "Starting LF to CR/LF (DOS) script conversion"
|
|
find . -name "*.sh" | xargs $UNIX2DOS -q
|
|
echo "Completed LF to CR/LF (DOS) script conversion"
|
|
cd ..
|
|
}
|
|
|
|
insert_dual_license_headers()
|
|
{
|
|
#
|
|
# Need acpisrc utility to insert the headers
|
|
#
|
|
if [ ! -e "$ACPISRC" ]; then
|
|
echo "acpisrc ($ACPISRC) does not exist!"
|
|
exit 1
|
|
fi
|
|
|
|
#
|
|
# Insert the dual license into *.c and *.h files
|
|
#
|
|
echo "Inserting dual-license into all source files"
|
|
$ACPISRC -h -y $TEMP_DIR
|
|
}
|
|
|
|
build_unix_package()
|
|
{
|
|
convert_to_unix_line_terminators
|
|
|
|
#
|
|
# Build release package
|
|
#
|
|
rm -r -f $PACKAGE_FILENAME
|
|
mv $TEMP_DIR $PACKAGE_FILENAME
|
|
tar czf $PACKAGE_FILENAME.tar.gz $PACKAGE_FILENAME
|
|
|
|
#
|
|
# Move the completed package
|
|
#
|
|
mv $PACKAGE_FILENAME.tar.gz $TARGET_DIR
|
|
mv $PACKAGE_FILENAME $TEMP_DIR
|
|
}
|
|
|
|
build_windows_package()
|
|
{
|
|
convert_to_dos_line_terminators
|
|
|
|
#
|
|
# Build release package
|
|
#
|
|
cd $TEMP_DIR
|
|
rm -r -f ../$TARGET_DIR/$PACKAGE_FILENAME
|
|
$ZIP_UTILITY -silent -add -max -dir -sort=name ../$TARGET_DIR/$PACKAGE_FILENAME
|
|
cd ..
|
|
}
|
|
|
|
|
|
#******************************************************************************
|
|
#
|
|
# generate_source_package
|
|
#
|
|
# Generates the ACPICA source code packages (core and all tools)
|
|
#
|
|
# Arguments:
|
|
# %1 - Target type (win or unix or unix2)
|
|
#
|
|
#******************************************************************************
|
|
|
|
generate_source_package ()
|
|
{
|
|
#
|
|
# Parameter evaluation
|
|
#
|
|
if [ $1 == win ]; then
|
|
PACKAGE_NAME=Windows
|
|
PACKAGE_TYPE=Win
|
|
LICENSE=Intel
|
|
check_zip_utility_exists
|
|
|
|
elif [ $1 == unix ]; then
|
|
PACKAGE_NAME="Unix (Intel License)"
|
|
PACKAGE_TYPE=Unix
|
|
LICENSE=Intel
|
|
|
|
elif [ $1 == unix2 ]; then
|
|
PACKAGE_NAME="Unix (Dual License)"
|
|
PACKAGE_TYPE=Unix
|
|
LICENSE=Dual
|
|
|
|
else
|
|
usage "Invalid argument ($1)"
|
|
exit 1
|
|
fi
|
|
|
|
PACKAGE_FILENAME=$SOURCE_PREFIX-$1-$PACKAGE_SUFFIX
|
|
banner "ACPICA - Generating $PACKAGE_NAME source code package ($PACKAGE_FILENAME)"
|
|
|
|
#
|
|
# Make directories common to all source packages
|
|
#
|
|
mkdir $TEMP_DIR
|
|
mkdir $TEMP_DIR/libraries
|
|
mkdir $TEMP_DIR/generate
|
|
mkdir $TEMP_DIR/generate/lint
|
|
mkdir $TEMP_DIR/generate/release
|
|
mkdir $TEMP_DIR/generate/unix
|
|
mkdir $TEMP_DIR/generate/unix/acpibin
|
|
mkdir $TEMP_DIR/generate/unix/acpidump
|
|
mkdir $TEMP_DIR/generate/unix/acpiexamples
|
|
mkdir $TEMP_DIR/generate/unix/acpiexec
|
|
mkdir $TEMP_DIR/generate/unix/acpihelp
|
|
mkdir $TEMP_DIR/generate/unix/acpisrc
|
|
mkdir $TEMP_DIR/generate/unix/acpixtract
|
|
mkdir $TEMP_DIR/generate/unix/iasl
|
|
mkdir $TEMP_DIR/tests
|
|
mkdir $TEMP_DIR/tests/misc
|
|
mkdir $TEMP_DIR/tests/templates
|
|
mkdir -p $TEMP_DIR/source/os_specific/service_layers
|
|
|
|
#
|
|
# Copy ACPICA subsystem source code
|
|
#
|
|
cp -r documents/changes.txt $TEMP_DIR/changes.txt
|
|
cp -r source/common $TEMP_DIR/source/common
|
|
cp -r source/components $TEMP_DIR/source/
|
|
cp -r source/include $TEMP_DIR/source/include
|
|
cp -r generate/release/*.sh $TEMP_DIR/generate/release
|
|
|
|
#
|
|
# Copy iASL compiler and tools source
|
|
#
|
|
cp -r source/compiler $TEMP_DIR/source/compiler
|
|
cp -r source/tools $TEMP_DIR/source/tools
|
|
|
|
#
|
|
# Copy iASL/ACPICA miscellaneous tests (not full test suites)
|
|
#
|
|
cp -r tests/misc/*.asl $TEMP_DIR/tests/misc
|
|
cp -r tests/templates/Makefile $TEMP_DIR/tests/templates
|
|
cp -r tests/templates/templates.sh $TEMP_DIR/tests/templates
|
|
|
|
#
|
|
# Copy all OS-specific interfaces
|
|
#
|
|
cp source/os_specific/service_layers/*.c $TEMP_DIR/source/os_specific/service_layers
|
|
|
|
#
|
|
# Copy generic UNIX makefiles
|
|
#
|
|
cp Makefile $TEMP_DIR
|
|
cp generate/unix/readme.txt $TEMP_DIR/generate/unix/readme.txt
|
|
cp generate/unix/Makefile* $TEMP_DIR/generate/unix
|
|
cp generate/unix/acpibin/Makefile $TEMP_DIR/generate/unix/acpibin
|
|
cp generate/unix/acpidump/Makefile $TEMP_DIR/generate/unix/acpidump
|
|
cp generate/unix/acpiexamples/Makefile $TEMP_DIR/generate/unix/acpiexamples
|
|
cp generate/unix/acpiexec/Makefile $TEMP_DIR/generate/unix/acpiexec
|
|
cp generate/unix/acpihelp/Makefile $TEMP_DIR/generate/unix/acpihelp
|
|
cp generate/unix/acpisrc/Makefile $TEMP_DIR/generate/unix/acpisrc
|
|
cp generate/unix/acpixtract/Makefile $TEMP_DIR/generate/unix/acpixtract
|
|
cp generate/unix/iasl/Makefile $TEMP_DIR/generate/unix/iasl
|
|
|
|
#
|
|
# Copy Lint directory
|
|
#
|
|
cp -r generate/lint $TEMP_DIR/generate
|
|
rm -f $TEMP_DIR/generate/lint/co*
|
|
rm -f $TEMP_DIR/generate/lint/env*
|
|
rm -f $TEMP_DIR/generate/lint/lib*
|
|
rm -f $TEMP_DIR/generate/lint/LintOut.txt
|
|
|
|
if [ $PACKAGE_TYPE == Unix ]; then
|
|
#
|
|
# Unix/Linux-specific activities
|
|
#
|
|
# For Unix2 case, insert the dual license header into all source files
|
|
#
|
|
if [ $LICENSE == Dual ]; then
|
|
insert_dual_license_headers
|
|
fi
|
|
|
|
build_unix_package
|
|
|
|
else
|
|
#
|
|
# Windows-specific activities
|
|
#
|
|
|
|
# Copy project files for MS Visual Studio 2017
|
|
|
|
mkdir $TEMP_DIR/generate/msvc2017
|
|
cp -r generate/msvc2017/*.sln $TEMP_DIR/generate/msvc2017/
|
|
cp -r generate/msvc2017/*.dsp $TEMP_DIR/generate/msvc2017/
|
|
cp -r generate/msvc2017/*.dsw $TEMP_DIR/generate/msvc2017/
|
|
cp -r generate/msvc2017/*.vcxproj $TEMP_DIR/generate/msvc2017/
|
|
|
|
build_windows_package
|
|
fi
|
|
|
|
banner "ACPICA - Completed $PACKAGE_NAME source code package ($PACKAGE_FILENAME)"
|
|
}
|
|
|
|
|
|
#******************************************************************************
|
|
#
|
|
# generate_test_package
|
|
#
|
|
# Generates the ACPICA test suite packages
|
|
#
|
|
# Arguments:
|
|
# %1 - Target type (win or unix)
|
|
#
|
|
#******************************************************************************
|
|
|
|
generate_test_package()
|
|
{
|
|
#
|
|
# Parameter evaluation
|
|
#
|
|
if [ $1 == win ]; then
|
|
PACKAGE_NAME=Windows
|
|
PACKAGE_TYPE=Win
|
|
check_zip_utility_exists
|
|
|
|
elif [ $1 == unix ]; then
|
|
PACKAGE_NAME="Unix"
|
|
PACKAGE_TYPE=Unix
|
|
|
|
else
|
|
usage "Invalid argument ($1)"
|
|
exit 1
|
|
fi
|
|
|
|
PACKAGE_FILENAME=$TEST_PREFIX-$1-$PACKAGE_SUFFIX
|
|
banner "ACPICA - Generating $PACKAGE_NAME test suite package ($PACKAGE_FILENAME)"
|
|
|
|
#
|
|
# Copy the ASL Test source
|
|
#
|
|
mkdir $TEMP_DIR
|
|
cp -r tests $TEMP_DIR/tests
|
|
|
|
#
|
|
# Delete extraneous files
|
|
#
|
|
cd $TEMP_DIR
|
|
find . -name "tmp" | xargs rm -r -f
|
|
find . -name "aml" | xargs rm -r -f
|
|
find . -name "CVS" | xargs rm -r -f
|
|
cd ..
|
|
|
|
if [ $PACKAGE_TYPE == Unix ]; then
|
|
#
|
|
# Unix/Linux-specific activities
|
|
#
|
|
build_unix_package
|
|
|
|
else
|
|
#
|
|
# Windows-specific activities
|
|
#
|
|
build_windows_package
|
|
fi
|
|
|
|
banner "ACPICA - Completed $PACKAGE_NAME test suite package ($PACKAGE_FILENAME)"
|
|
}
|
|
|
|
|
|
#******************************************************************************
|
|
#
|
|
# generate_binary_package
|
|
#
|
|
# Generates the ACPICA binary package (Currently Windows only)
|
|
#
|
|
# Arguments:
|
|
# %1 - Target type (win)
|
|
#
|
|
#******************************************************************************
|
|
|
|
generate_binary_package()
|
|
{
|
|
#
|
|
# Parameter evaluation
|
|
#
|
|
if [ $1 == win ]; then
|
|
PACKAGE_NAME=Windows
|
|
PACKAGE_TYPE=Win
|
|
check_zip_utility_exists
|
|
|
|
else
|
|
usage "Invalid argument ($1)"
|
|
exit 1
|
|
fi
|
|
|
|
PACKAGE_FILENAME=$BINARY_PREFIX-$1-$PACKAGE_SUFFIX
|
|
banner "ACPICA - Generating $PACKAGE_NAME binary tools package ($PACKAGE_FILENAME)"
|
|
|
|
#
|
|
# Copy executables and documentation
|
|
#
|
|
mkdir $TEMP_DIR
|
|
cp -r documents/changes.txt $TEMP_DIR/changes.txt
|
|
cp libraries/acpibin.exe $TEMP_DIR
|
|
cp libraries/acpidump.exe $TEMP_DIR
|
|
cp libraries/acpiexec.exe $TEMP_DIR
|
|
cp libraries/acpihelp.exe $TEMP_DIR
|
|
cp libraries/acpisrc.exe $TEMP_DIR
|
|
cp libraries/acpixtract.exe $TEMP_DIR
|
|
cp libraries/iasl.exe $TEMP_DIR
|
|
cp tests/misc/badcode.asl $TEMP_DIR
|
|
|
|
build_windows_package
|
|
banner "ACPICA - Completed $PACKAGE_NAME binary tools package ($PACKAGE_FILENAME)"
|
|
}
|
|
|
|
|
|
#******************************************************************************
|
|
#
|
|
# main
|
|
#
|
|
# Arguments:
|
|
# $1 (package_type) is one of:
|
|
# source - Build an ACPICA source package (core and all tools)
|
|
# test - Build an ACPICA test suite package
|
|
# binary - Build an ACPICA binary tools package
|
|
#
|
|
# $2 (target_type) is one of:
|
|
# win - Generate Windows package (Intel license, CRLF line terminators)
|
|
# unix - Generate Unix package (Intel license, LF line terminators)
|
|
# unix2 - Generate Unix package (dual license, LF line terminators)
|
|
#
|
|
#******************************************************************************
|
|
|
|
set -e # Abort on any error
|
|
|
|
if [ $NPARAM -ne 2 ]; then
|
|
usage "Wrong argument count ($NPARAM)"
|
|
exit 1
|
|
fi
|
|
|
|
#
|
|
# cd from acpica/generate/release to acpica
|
|
#
|
|
cd ../..
|
|
|
|
#
|
|
# Ensure that the temporary directory is created fresh
|
|
#
|
|
rm -rf $TEMP_DIR
|
|
|
|
#
|
|
# Parameter evaluation
|
|
#
|
|
if [ $1 == source ]; then
|
|
generate_source_package $2
|
|
|
|
elif [ $1 == test ]; then
|
|
generate_test_package $2
|
|
|
|
elif [ $1 == binary ]; then
|
|
generate_binary_package $2
|
|
|
|
else
|
|
usage "Invalid argument ($1)"
|
|
exit 1
|
|
fi
|
|
|
|
#
|
|
# Remove temporary directory
|
|
#
|
|
rm -rf $TEMP_DIR
|