summaryrefslogtreecommitdiff
path: root/generate/release/build.sh
diff options
context:
space:
mode:
Diffstat (limited to 'generate/release/build.sh')
-rwxr-xr-xgenerate/release/build.sh487
1 files changed, 487 insertions, 0 deletions
diff --git a/generate/release/build.sh b/generate/release/build.sh
new file mode 100755
index 000000000000..9c46e66b4caf
--- /dev/null
+++ b/generate/release/build.sh
@@ -0,0 +1,487 @@
+#!/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="c:/windows/pkzip25.exe"
+ACPISRC="libraries/acpisrc.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 Conversion
+ find . -name "*" | xargs $DOS2UNIX
+ echo Completed CR/LF to LF 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 Conversion
+ find . -name "*.sh" | xargs $UNIX2DOS
+ echo Completed LF to CR/LF 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 -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/acpiexec
+ mkdir $TEMP_DIR/generate/unix/acpihelp
+ mkdir $TEMP_DIR/generate/unix/acpinames
+ 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 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/acpiexec/Makefile $TEMP_DIR/generate/unix/acpiexec
+ cp generate/unix/acpihelp/Makefile $TEMP_DIR/generate/unix/acpihelp
+ cp generate/unix/acpinames/Makefile $TEMP_DIR/generate/unix/acpinames
+ 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
+ #
+
+ # Copy Linux/UNIX utility generation makefiles
+
+ cp generate/linux/Makefile.acpibin $TEMP_DIR/source/tools/acpibin/Makefile
+ cp generate/linux/Makefile.acpiexec $TEMP_DIR/source/tools/acpiexec/Makefile
+ cp generate/linux/Makefile.acpihelp $TEMP_DIR/source/tools/acpihelp/Makefile
+ cp generate/linux/Makefile.acpinames $TEMP_DIR/source/tools/acpinames/Makefile
+ cp generate/linux/Makefile.acpisrc $TEMP_DIR/source/tools/acpisrc/Makefile
+ cp generate/linux/Makefile.acpixtract $TEMP_DIR/source/tools/acpixtract/Makefile
+ cp generate/linux/Makefile.iasl $TEMP_DIR/source/compiler/Makefile
+ cp generate/linux/README.acpica-unix $TEMP_DIR/README
+
+ #
+ # 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 2008 (VC++ 9.0)
+
+ mkdir $TEMP_DIR/generate/msvc9
+ cp -r generate/msvc9/*.sln $TEMP_DIR/generate/msvc9/
+ cp -r generate/msvc9/*.vcproj $TEMP_DIR/generate/msvc9/
+
+ 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 documents/aslcompiler.pdf $TEMP_DIR
+ cp libraries/acpibin.exe $TEMP_DIR
+ cp libraries/acpiexec.exe $TEMP_DIR
+ cp libraries/acpihelp.exe $TEMP_DIR
+ cp libraries/acpinames.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