blob: ab11732dd3a60687ab1c5d9a8f722c7bafc7301b [file] [log] [blame]
#!/bin/bash
#-------------------------------------------------------------------------------------------------------
# Copyright (C) Microsoft. All rights reserved.
# Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
#-------------------------------------------------------------------------------------------------------
DEFAULT_COLOR='\033[0m'
ERROR_COLOR='\033[0;31m'
GREEN_COLOR='\033[0;32m'
IF_ERROR_EXIT() {
ERROR_CODE=$1
if [[ $ERROR_CODE != 0 ]]; then
echo -e "${ERROR_COLOR} $2 ${DEFAULT_COLOR}"
exit $ERROR_CODE
fi
}
PRINT_USAGE() {
echo -e "\n${GREEN_COLOR}ChakraCore Package Creation Script${DEFAULT_COLOR}"
echo -e "${ERROR_COLOR}This script may\n- download third party software\n- \
make changes to your system\nand it won't ask you any questions while doing it.${DEFAULT_COLOR}"
echo -e "For this reason,\nyou should run this script with\n${ERROR_COLOR}\
I_ACCEPT_TO_RUN_THIS${DEFAULT_COLOR} secret argument, ${ERROR_COLOR}at your own risk${DEFAULT_COLOR}\n"
echo -e "${GREEN_COLOR}Usage:${DEFAULT_COLOR} tools/create_package.sh <secret argument> <version>"
echo -e "${GREEN_COLOR}Sample:${DEFAULT_COLOR} tools/create_package.sh <secret argument> 2.0.0\n"
}
if [[ $# < 2 || $1 != "I_ACCEPT_TO_RUN_THIS" ]]; then
PRINT_USAGE
exit 0
fi
CHAKRA_VERSION=$2
CHAKRA_VERSION=${CHAKRA_VERSION//./_}
if [[ $2 == $CHAKRA_VERSION ]]; then
PRINT_USAGE
echo -e "${ERROR_COLOR}Unexpected version argument. Try something similar to \
2.0.0${DEFAULT_COLOR}"
exit 1
fi
if [[ ! -f './build.sh' ]]; then
echo -e "${ERROR_COLOR} Run this script from the repository root folder.${DEFAULT_COLOR}"
echo "Try -> tools/create_package.sh"
exit 1
fi
HOST_OS="osx"
HOST_EXT="dylib"
if [[ ! "$OSTYPE" =~ "darwin" ]]; then # osx
HOST_OS="linux"
HOST_EXT="so"
tools/compile_clang.sh -y
IF_ERROR_EXIT $? "Clang build failed"
fi
## Build
BUILD="./build.sh --embed-icu -y --lto -j=3"
${BUILD} --target-path=out/shared
IF_ERROR_EXIT $? "ChakraCore shared library build failed."
${BUILD} --static --target-path=out/static
IF_ERROR_EXIT $? "ChakraCore static library build failed."
## Create folders
rm -rf out/ChakraCoreFiles/
mkdir -p out/ChakraCoreFiles/include/ out/ChakraCoreFiles/lib/ out/ChakraCoreFiles/bin/ out/ChakraCoreFiles/sample/
IF_ERROR_EXIT $? "Creating ChakraCoreFiles folder failed"
## Copy Files
# lib (so or dylib)
cp "out/shared/Release/libChakraCore.${HOST_EXT}" out/ChakraCoreFiles/lib/
# bin
cp out/static/Release/ch out/ChakraCoreFiles/bin/
# include
cp out/shared/Release/include/*.h out/ChakraCoreFiles/include/
# license
cat LICENSE.txt > out/ChakraCoreFiles/LICENSE
echo -e "\n***** Third Party Notices [ for PreBuilt Binaries ] *****\n" >> out/ChakraCoreFiles/LICENSE
cat tools/XPlatInstall/BINARY-DIST-ONLY-NOTICES.txt >> out/ChakraCoreFiles/LICENSE
# sample
cp "tools/XPlatInstall/sample/README.md" out/ChakraCoreFiles/sample/README.md
cp "tools/XPlatInstall/sample/Makefile.sample" out/ChakraCoreFiles/sample/Makefile
cp "tools/XPlatInstall/sample/sample.cpp.txt" out/ChakraCoreFiles/sample/sample.cpp
## Test
python test/native-tests/test-python/helloWorld.py Release \
"out/ChakraCoreFiles/lib/libChakraCore.${HOST_EXT}" > /dev/null
IF_ERROR_EXIT $? "Shared library test failed"
out/ChakraCoreFiles/bin/ch test/Basics/hello.js > /dev/null
IF_ERROR_EXIT $? "CH binary test failed"
## Package
pushd out/ > /dev/null
PACKAGE_FILE="cc_${HOST_OS}_x64_${CHAKRA_VERSION}.tar.gz"
tar -czf "${PACKAGE_FILE}" ChakraCoreFiles/
mkdir -p temp/ChakraCoreFiles/
cp "${PACKAGE_FILE}" temp/chakracore.tar.gz
cd temp
SHASUM_FILE="cc_${HOST_OS}_x64_${CHAKRA_VERSION}_s.tar.gz"
shasum -a 512256 chakracore.tar.gz > ChakraCoreFiles/shasum
tar -czf "$SHASUM_FILE" ChakraCoreFiles
mv $SHASUM_FILE ../
cd ..
rm -rf temp/
popd > /dev/null
## Credits
echo -e "\nPackage & Shasum files are ready under ${GREEN_COLOR}out/${DEFAULT_COLOR}"