diff options
author | olonho@chromium.org <olonho@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-10 23:51:28 +0000 |
---|---|---|
committer | olonho@chromium.org <olonho@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-04-10 23:51:28 +0000 |
commit | d2eda638d2fd83e4cedc3c257ff892c5289a9309 (patch) | |
tree | 8756df738af5c5b46d5d519404cb3ece03d72fdd /native_client_sdk | |
parent | 34fb4c928fd493681957273f582364042cc5e83f (diff) | |
download | chromium_src-d2eda638d2fd83e4cedc3c257ff892c5289a9309.zip chromium_src-d2eda638d2fd83e4cedc3c257ff892c5289a9309.tar.gz chromium_src-d2eda638d2fd83e4cedc3c257ff892c5289a9309.tar.bz2 |
Implement buildbot script support for Mono ARM.
BUG=
Review URL: https://chromiumcodereview.appspot.com/13799005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@193504 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'native_client_sdk')
5 files changed, 103 insertions, 32 deletions
diff --git a/native_client_sdk/src/build_tools/buildbot_common.py b/native_client_sdk/src/build_tools/buildbot_common.py index 82bbeaa..a591dae 100644 --- a/native_client_sdk/src/build_tools/buildbot_common.py +++ b/native_client_sdk/src/build_tools/buildbot_common.py @@ -116,7 +116,8 @@ LOCAL_GSUTIL = 'gsutil' def GetGsutil(): - if os.environ.get('BUILDBOT_BUILDERNAME'): + if os.environ.get('BUILDBOT_BUILDERNAME') \ + and not os.environ.get('BUILDBOT_FAKE'): return BOT_GSUTIL else: return LOCAL_GSUTIL diff --git a/native_client_sdk/src/build_tools/nacl-mono-archive.py b/native_client_sdk/src/build_tools/nacl-mono-archive.py index 131fe52..066bcee 100755 --- a/native_client_sdk/src/build_tools/nacl-mono-archive.py +++ b/native_client_sdk/src/build_tools/nacl-mono-archive.py @@ -43,7 +43,7 @@ def main(args): options.tar_path = options.tar_path.replace('%pepperrev%', options.pepper_revision) - install_folders = ['bin', 'etc', 'include', 'lib', 'lib32', 'share'] + install_folders = ['bin', 'etc', 'include', 'lib', 'lib32', 'libarm', 'share'] buildbot_common.BuildStep('Archive Build') tar_file = None diff --git a/native_client_sdk/src/build_tools/nacl-mono-buildbot.py b/native_client_sdk/src/build_tools/nacl-mono-buildbot.py index 7931799..5bfba9f 100755 --- a/native_client_sdk/src/build_tools/nacl-mono-buildbot.py +++ b/native_client_sdk/src/build_tools/nacl-mono-buildbot.py @@ -29,6 +29,9 @@ def build_and_upload_mono(sdk_revision, pepper_revision, sdk_url, buildbot_common.Run([sys.executable, 'nacl-mono-builder.py', '--arch', 'x86-64', '--install-dir', install_dir] + revision_opt + url_opt + args) + buildbot_common.Run([sys.executable, 'nacl-mono-builder.py', + '--arch', 'arm', '--install-dir', install_dir] + + revision_opt + url_opt + args) buildbot_common.Run([sys.executable, 'nacl-mono-archive.py', '--upload-path', upload_path, '--pepper-revision', pepper_revision, diff --git a/native_client_sdk/src/build_tools/nacl-mono-builder.py b/native_client_sdk/src/build_tools/nacl-mono-builder.py index d9bc8d5..0726111 100755 --- a/native_client_sdk/src/build_tools/nacl-mono-builder.py +++ b/native_client_sdk/src/build_tools/nacl-mono-builder.py @@ -79,10 +79,19 @@ def main(args): buildbot_common.BuildStep(build_prefix + 'Checkout Mono') # TODO(elijahtaylor): Get git URL from master/trigger to make this # more flexible for building from upstream and release branches. - git_url = 'git://github.com/elijahtaylor/mono.git' - git_rev = 'HEAD' + if options.arch == 'arm': + git_url = 'git://github.com/igotti-google/mono.git' + git_rev = 'arm_nacl' + else: + git_url = 'git://github.com/elijahtaylor/mono.git' + git_rev = 'HEAD' if buildbot_revision: - git_rev = buildbot_revision.split(':')[1] + # Unfortunately, we use different git revisions for ARM and x86 now, + # so ignore buildbot_revision variable for ARM. + # Need to rethink this approach, if we'll plan to support + # more flexible repo selection mechanism. + if options.arch != 'arm': + git_rev = buildbot_revision.split(':')[1] if not os.path.exists(MONO_DIR): buildbot_common.MakeDir(MONO_DIR) buildbot_common.Run(['git', 'clone', git_url, MONO_DIR]) @@ -93,7 +102,7 @@ def main(args): arch_to_bitsize = {'x86-32': '32', 'x86-64': '64', - 'arm': 'pnacl'} + 'arm': 'arm'} arch_to_output_folder = {'x86-32': 'runtime-x86-32-build', 'x86-64': 'runtime-x86-64-build', 'arm': 'runtime-arm-build'} diff --git a/native_client_sdk/src/build_tools/nacl-mono-runtime.sh b/native_client_sdk/src/build_tools/nacl-mono-runtime.sh index 7dfffd8..ffc6f47 100755 --- a/native_client_sdk/src/build_tools/nacl-mono-runtime.sh +++ b/native_client_sdk/src/build_tools/nacl-mono-runtime.sh @@ -11,13 +11,16 @@ if [[ $# -ne 3 ]]; then exit -1 fi +readonly CLEAN=1 +readonly DEBUG=0 +readonly PARALLEL=0 readonly MONO_DIR=$(readlink -f $1) readonly BUILD_DIR=$(readlink -f $2) readonly INSTALL_DIR=$(readlink -f $3) readonly ORIGINAL_CWD=$(pwd) set +e -if [ -f ${BUILD_DIR}/Makefile ]; then +if [ -f ${BUILD_DIR}/Makefile -a ${CLEAN} != 0 ]; then cd ${BUILD_DIR} make distclean fi @@ -27,34 +30,61 @@ cd $ORIGINAL_CWD case "${TARGET_ARCH}" in x86-32) readonly USE_PNACL=0 + readonly USE_NEWLIB=0 + readonly TC_FLAVOUR=linux_x86_glibc readonly NACL_CROSS_PREFIX_DASH=i686-nacl- - readonly CONFIG_OPTS="--host=i686-pc-linux-gnu \ - --build=i686-pc-linux-gnu \ - --target=i686-pc-linux-gnu" + CONFIG_OPTS="--host=i686-pc-linux-gnu \ + --build=i686-pc-linux-gnu \ + --target=i686-pc-linux-gnu" readonly LIBDIR=lib32 - readonly CUSTOM_CFLAGS="" + CUSTOM_CFLAGS="" readonly CUSTOM_LDFLAGS="" ;; x86-64) readonly USE_PNACL=0 + readonly USE_NEWLIB=0 + readonly TC_FLAVOUR=linux_x86_glibc readonly NACL_CROSS_PREFIX_DASH=x86_64-nacl- - readonly CONFIG_OPTS="--host=x86_64-pc-linux-gnu \ - --build=x86_64-pc-linux-gnu \ - --target=x86_64-pc-linux-gnu" + CONFIG_OPTS="--host=x86_64-pc-linux-gnu \ + --build=x86_64-pc-linux-gnu \ + --target=x86_64-pc-linux-gnu" readonly LIBDIR=lib - readonly CUSTOM_CFLAGS="" + CUSTOM_CFLAGS="" readonly CUSTOM_LDFLAGS="" ;; arm) + readonly USE_PNACL=0 + readonly USE_NEWLIB=1 + readonly TC_FLAVOUR=linux_arm_newlib + readonly NACL_CROSS_PREFIX_DASH=arm-nacl- + CONFIG_OPTS="--host=armv7l-unknown-linux-gnueabi \ + --build=x86_64-pc-linux-gnu \ + --target=armv7l-unknown-linux-gnueabi \ + --with-jumptables=yes" + readonly LIBDIR=libarm + # TODO(olonho): move it to Mono's configure, once nacl target implemented. + CUSTOM_CFLAGS="\ +-DARM_FPU_VFP=1 \ +-D__ARM_ARCH_7__ \ +-Dtimezone=_timezone \ +-DDISABLE_SOCKETS \ +-DDISABLE_ATTACH \ +" + readonly CUSTOM_LDFLAGS="" + ;; +arm-pnacl) readonly USE_PNACL=1 + readonly USE_NEWLIB=1 + readonly TC_FLAVOUR=linux_x86_pnacl/newlib readonly NACL_CROSS_PREFIX_DASH=pnacl- readonly PNACL_LINK_ARGS="-arch armv7 -O2" - readonly CONFIG_OPTS="--host=armv7l-unknown-linux-gnueabi \ + CONFIG_OPTS="--host=armv7l-unknown-linux-gnueabi \ --build=x86_64-pc-linux-gnu \ - --target=armv7l-unknown-linux-gnueabi" + --target=armv7l-unknown-linux-gnueabi \ + --with-jumptables=yes" readonly LIBDIR=libarm # TODO(olonho): move it to Mono's configure, once nacl target implemented. - readonly CUSTOM_CFLAGS="\ + CUSTOM_CFLAGS="\ -D__arm__ \ -D__ARM_ARCH_7__ \ -D__portable_native_client__ \ @@ -62,33 +92,42 @@ arm) -Dtimezone=_timezone \ -DDISABLE_SOCKETS \ -DDISABLE_ATTACH \ --DUSE_NEWLIB \ " readonly CUSTOM_LDFLAGS=${PNACL_LINK_ARGS} ;; +*) + echo "Unsupported target ${TARGET_ARCH}" + exit 1 esac -# UGLY hack to allow dynamic linking -sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ \ +if [ ${USE_NEWLIB} == 1 ]; then + CUSTOM_CFLAGS="${CUSTOM_CFLAGS} -DUSE_NEWLIB" + CONFIG_OPTS="${CONFIG_OPTS} --enable-shared=no" +else + CONFIG_OPTS="${CONFIG_OPTS} --enable-shared=yes" + # UGLY hack to allow dynamic linking + sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ \ ${MONO_DIR}/configure -sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ \ + sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ \ ${MONO_DIR}/libgc/configure -sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ \ + sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ \ ${MONO_DIR}/eglib/configure +fi -rm -rf ${BUILD_DIR} -mkdir -p ${BUILD_DIR} +if [ ${CLEAN} != 0 ]; then + rm -rf ${BUILD_DIR} + mkdir -p ${BUILD_DIR} +fi cd ${BUILD_DIR} mkdir -p ${INSTALL_DIR} +readonly NACL_BIN_PATH=${NACL_SDK_ROOT}/toolchain/${TC_FLAVOUR}/bin + if [ ${USE_PNACL} == 1 ]; then - readonly NACL_BIN_PATH="\ -${NACL_SDK_ROOT}/toolchain/linux_x86_pnacl/newlib/bin" readonly NACLCC=${NACL_BIN_PATH}/pnacl-clang readonly NACLCXX=${NACL_BIN_PATH}/pnacl-clang++ else - readonly NACL_BIN_PATH=${NACL_SDK_ROOT}/toolchain/linux_x86_glibc/bin readonly NACLCC=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}gcc readonly NACLCXX=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}g++ fi @@ -98,7 +137,21 @@ readonly NACLLD=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}ld readonly NACLOBJDUMP=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}objdump readonly NACLSTRIP=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}strip -CFLAGS="-g -O2 -D_POSIX_PATH_MAX=256 -DPATH_MAX=256 $CUSTOM_CFLAGS" +if [ ${DEBUG} == 1 ]; then + CFLAGS="$CUSTOM_CFLAGS" + CONFIG_OPTS="${CONFIG_OPTS} --enable-debug=yes" +else + CFLAGS="-g $CUSTOM_CFLAGS" + CONFIG_OPTS="${CONFIG_OPTS} --enable-debug=no" +fi + +if [ ${PARALLEL} == 1 ]; then + readonly JOBS="-j16" +else + readonly JOBS= +fi + + LDFLAGS="$CUSTOM_LDFLAGS" LIBS="-lnacl_dyncode -lc -lg -lnosys -lpthread" @@ -126,9 +179,14 @@ ${MONO_DIR}/configure ${CONFIG_OPTS} \ --enable-nls=no \ --enable-nacl-codegen \ --disable-system-aot \ - --enable-shared \ --disable-parallel-mark \ --with-static-mono=no -make -make install +if [ ${USE_NEWLIB} == 1 ]; then + # Newlib build doesn't support building shared libs, and unfortunately, this + # leads to libmonoruntime.la no being built as well, unless we'll do that + # explicitly. + make ${JOBS} -C mono/metadata libmonoruntime.la +fi +make ${JOBS} +make ${JOBS} install |