| #!/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.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/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 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/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 |
| # |
| # 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/acpidump.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 |