forked from mono/mono
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
391e857
commit 99f40ae
Showing
6 changed files
with
395 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
Building NaCl Mono with glibc (newlib support is eliminated but should still be buildable with small effort) is complex. Instructions live here for the adventurous: https://docs.google.com/a/google.com/document/d/1Jd_4M7mlmxF8daVbepAy_8RKYcRbhifXanRYyBKkVa4/pub | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,217 @@ | ||
# Copyright (c) 2011 The Native Client Authors. All rights reserved. | ||
# Use of this source code is governed by a BSD-style license that be | ||
# found in the LICENSE file. | ||
# | ||
|
||
set -o nounset | ||
set -o errexit | ||
|
||
# scripts that source this file must be run from within packages tree | ||
readonly SAVE_PWD=$(pwd) | ||
|
||
# Pick platform directory for compiler. | ||
readonly OS_NAME=$(uname -s) | ||
if [ $OS_NAME = "Darwin" ]; then | ||
readonly OS_SUBDIR="mac" | ||
readonly OS_SUBDIR_SHORT="mac" | ||
elif [ $OS_NAME = "Linux" ]; then | ||
readonly OS_SUBDIR="linux" | ||
readonly OS_SUBDIR_SHORT="linux" | ||
else | ||
readonly OS_SUBDIR="windows" | ||
readonly OS_SUBDIR_SHORT="win" | ||
fi | ||
|
||
readonly MACHINE=$(uname -m) | ||
if [ $MACHINE = "x86_64" ]; then | ||
readonly TARGET_BITSIZE=${TARGET_BITSIZE:-"64"} | ||
readonly HOST_BITSIZE=${HOST_BITSIZE:-"64"} | ||
else | ||
# uname -m reports i686 on Linux and i386 on Mac | ||
readonly TARGET_BITSIZE=${TARGET_BITSIZE:-"32"} | ||
readonly HOST_BITSIZE=${HOST_BITSIZE:-"32"} | ||
fi | ||
|
||
if [ $TARGET_BITSIZE == "64" ]; then | ||
readonly TARGET_BIT_PREFIX="64" | ||
readonly CROSS_ID=x86_64 | ||
else | ||
readonly TARGET_BIT_PREFIX="" | ||
readonly CROSS_ID=i686 | ||
fi | ||
# we might want to override the detected host platform (e.g. on OSX 10.6) | ||
if [ $HOST_BITSIZE == "64" ]; then | ||
readonly HOST_BIT_PREFIX="64" | ||
else | ||
readonly HOST_BIT_PREFIX="" | ||
fi | ||
|
||
export NACL_CROSS_PREFIX=${CROSS_ID}-nacl | ||
export NACL_CROSS_PREFIX_DASH=${NACL_CROSS_PREFIX}- | ||
|
||
readonly NACL_NEWLIB=${NACL_NEWLIB:-"0"} | ||
|
||
if [ $NACL_NEWLIB = "1" ]; then | ||
readonly NACL_SDK_BASE=${NACL_SDK_ROOT}/toolchain/${OS_SUBDIR_SHORT}_x86_newlib | ||
else | ||
case "${NACL_SDK_ROOT}" in | ||
*pepper_15* | *pepper_16* | *pepper_17*) | ||
readonly NACL_SDK_BASE=${NACL_SDK_ROOT}/toolchain/${OS_SUBDIR_SHORT}_x86 | ||
;; | ||
*) | ||
readonly NACL_SDK_BASE=${NACL_SDK_ROOT}/toolchain/${OS_SUBDIR_SHORT}_x86_glibc | ||
;; | ||
esac | ||
fi | ||
|
||
readonly NACL_BIN_PATH=${NACL_SDK_BASE}/bin | ||
export NACLCC=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}gcc | ||
export NACLCXX=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}g++ | ||
export NACLAR=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}ar | ||
export NACLRANLIB=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}ranlib | ||
export NACLLD=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}ld | ||
export NACLAS=${NACL_BIN_PATH}/${NACL_CROSS_PREFIX_DASH}as | ||
|
||
# NACL_SDK_GCC_SPECS_PATH is where nacl-gcc 'specs' file will be installed | ||
readonly NACL_SDK_GCC_SPECS_PATH=${NACL_SDK_BASE}/lib/gcc/x86_64-nacl/4.4.3 | ||
|
||
# NACL_SDK_USR is where the headers, libraries, etc. will be installed | ||
readonly NACL_SDK_USR=${NACL_SDK_BASE}/${NACL_CROSS_PREFIX}/usr | ||
readonly NACL_SDK_USR_INCLUDE=${NACL_SDK_USR}/include | ||
readonly NACL_SDK_USR_LIB=${NACL_SDK_USR}/lib | ||
|
||
|
||
###################################################################### | ||
# Helper functions | ||
###################################################################### | ||
|
||
Banner() { | ||
echo "######################################################################" | ||
echo $* | ||
echo "######################################################################" | ||
} | ||
|
||
|
||
VerifyPath() { | ||
# make sure path isn't all slashes (possibly from an unset variable) | ||
local PATH=$1 | ||
local TRIM=${PATH##/} | ||
if [ ${#TRIM} -ne 0 ]; then | ||
return 0 | ||
else | ||
return 1 | ||
fi | ||
} | ||
|
||
|
||
ChangeDir() { | ||
local NAME=$1 | ||
if VerifyPath ${NAME}; then | ||
cd ${NAME} | ||
else | ||
echo "ChangeDir called with bad path." | ||
exit -1 | ||
fi | ||
} | ||
|
||
|
||
Remove() { | ||
local NAME=$1 | ||
if VerifyPath ${NAME}; then | ||
rm -rf ${NAME} | ||
else | ||
echo "Remove called with bad path." | ||
exit -1 | ||
fi | ||
} | ||
|
||
|
||
MakeDir() { | ||
local NAME=$1 | ||
if VerifyPath ${NAME}; then | ||
mkdir -p ${NAME} | ||
else | ||
echo "MakeDir called with bad path." | ||
exit -1 | ||
fi | ||
} | ||
|
||
|
||
PatchSpecFile() { | ||
# fix up spaces so gcc sees entire path | ||
local SED_SAFE_SPACES_USR_INCLUDE=${NACL_SDK_USR_INCLUDE/ /\ /} | ||
local SED_SAFE_SPACES_USR_LIB=${NACL_SDK_USR_LIB/ /\ /} | ||
# have nacl-gcc dump specs file & add include & lib search paths | ||
${NACL_SDK_BASE}/bin/x86_64-nacl-gcc -dumpspecs |\ | ||
sed "/*cpp:/{ | ||
N | ||
s|$| -I${SED_SAFE_SPACES_USR_INCLUDE}| | ||
}" |\ | ||
sed "/*link_libgcc:/{ | ||
N | ||
s|$| -L${SED_SAFE_SPACES_USR_LIB}| | ||
}" >${NACL_SDK_GCC_SPECS_PATH}/specs | ||
} | ||
|
||
|
||
DefaultConfigureStep() { | ||
Banner "Configuring ${PACKAGE_NAME}" | ||
# export the nacl tools | ||
export CC=${NACLCC} | ||
export CXX=${NACLCXX} | ||
export AR=${NACLAR} | ||
export RANLIB=${NACLRANLIB} | ||
export PKG_CONFIG_PATH=${NACL_SDK_USR_LIB}/pkgconfig | ||
export PKG_CONFIG_LIBDIR=${NACL_SDK_USR_LIB} | ||
export PATH=${NACL_BIN_PATH}:${PATH}; | ||
ChangeDir ${NACL_PACKAGES_REPOSITORY}/${PACKAGE_NAME} | ||
Remove ${PACKAGE_NAME}-build | ||
MakeDir ${PACKAGE_NAME}-build | ||
cd ${PACKAGE_NAME}-build | ||
../configure \ | ||
--host=nacl \ | ||
--disable-shared \ | ||
--prefix=${NACL_SDK_USR} \ | ||
--exec-prefix=${NACL_SDK_USR} \ | ||
--libdir=${NACL_SDK_USR_LIB} \ | ||
--oldincludedir=${NACL_SDK_USR_INCLUDE} \ | ||
--with-http=off \ | ||
--with-html=off \ | ||
--with-ftp=off \ | ||
--with-x=no | ||
} | ||
|
||
|
||
DefaultBuildStep() { | ||
# assumes pwd has makefile | ||
make clean | ||
if [ $TARGET_BITSIZE == "64" ]; then | ||
make -j8 | ||
else | ||
make | ||
fi | ||
} | ||
|
||
|
||
DefaultInstallStep() { | ||
# assumes pwd has makefile | ||
make install | ||
} | ||
|
||
|
||
DefaultCleanUpStep() { | ||
PatchSpecFile | ||
ChangeDir ${SAVE_PWD} | ||
} | ||
|
||
|
||
DefaultPackageInstall() { | ||
DefaultPreInstallStep | ||
DefaultDownloadStep | ||
DefaultExtractStep | ||
DefaultPatchStep | ||
DefaultConfigureStep | ||
DefaultBuildStep | ||
DefaultInstallStep | ||
DefaultCleanUpStep | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# This file is a shell script that caches the results of configure | ||
# tests run on this system so they can be shared between configure | ||
# scripts and configure runs, see configure's option --config-cache. | ||
# It is not useful on other systems. If it contains results you don't | ||
# want to keep, you may remove or edit it. | ||
# | ||
# config.status only pays attention to the cache file if you give it | ||
# the --recheck option to rerun configure. | ||
# | ||
# `ac_cv_env_foo' variables (set or unset) will be overridden when | ||
# loading this file, other *unset* `ac_cv_foo' will be assigned the | ||
# following values. | ||
|
||
ac_cv_func_mmap=${ac_cv_func_mmap=no} | ||
ac_cv_var_timezone=${ac_cv_var_timezone=yes} | ||
ac_cv_host=${ac_cv_host=i686-pc-nacl} | ||
ac_cv_target=${ac_cv_target=i686-pc-nacl} | ||
ac_cv_func_backtrace_symbols=${ac_cv_func_backtrace_symbols=no} | ||
mono_cv_uscore=${mono_cv_uscore=no} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
# This file is a shell script that caches the results of configure | ||
# tests run on this system so they can be shared between configure | ||
# scripts and configure runs, see configure's option --config-cache. | ||
# It is not useful on other systems. If it contains results you don't | ||
# want to keep, you may remove or edit it. | ||
# | ||
# config.status only pays attention to the cache file if you give it | ||
# the --recheck option to rerun configure. | ||
# | ||
# `ac_cv_env_foo' variables (set or unset) will be overridden when | ||
# loading this file, other *unset* `ac_cv_foo' will be assigned the | ||
# following values. | ||
|
||
ac_cv_func_mmap=${ac_cv_func_mmap=no} | ||
ac_cv_var_timezone=${ac_cv_var_timezone=yes} | ||
ac_cv_host=${ac_cv_host=x86_64-pc-nacl} | ||
ac_cv_target=${ac_cv_target=x86_64-pc-nacl} | ||
ac_cv_func_backtrace_symbols=${ac_cv_func_backtrace_symbols=no} | ||
mono_cv_uscore=${mono_cv_uscore=no} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,82 @@ | ||
#!/bin/bash | ||
# Copyright (c) 2009 The Native Client Authors. All rights reserved. | ||
# Use of this source code is governed by a BSD-style license that be | ||
# found in the LICENSE file. | ||
# | ||
|
||
# nacl-runtime-mono.sh | ||
# | ||
# usage: nacl-runtime-mono.sh | ||
# | ||
# this script builds mono runtime for Native Client | ||
# | ||
|
||
readonly MONO_TRUNK_NACL=$(pwd) | ||
|
||
source common.sh | ||
|
||
readonly PACKAGE_NAME=runtime${TARGET_BIT_PREFIX}-build | ||
readonly INSTALL_PATH=${MONO_TRUNK_NACL}/naclmono-${CROSS_ID} | ||
|
||
|
||
CustomConfigureStep() { | ||
Banner "Configuring ${PACKAGE_NAME}" | ||
# export the nacl tools | ||
set +e | ||
if [ -f ${PACKAGE_NAME}/Makefile ] | ||
then | ||
cd ${PACKAGE_NAME} | ||
fi | ||
make distclean | ||
cd ${MONO_TRUNK_NACL} | ||
set -e | ||
if [ $TARGET_BITSIZE == "32" ]; then | ||
CONFIG_OPTS="--host=i686-pc-linux-gnu --build=i686-pc-linux-gnu --target=i686-pc-linux-gnu" | ||
else | ||
CONFIG_OPTS="--host=x86_64-pc-linux-gnu --build=x86_64-pc-linux-gnu --target=x86_64-pc-linux-gnu" | ||
fi | ||
# UGLY hack to allow dynamic linking | ||
sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ ../configure | ||
sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ ../libgc/configure | ||
sed -i -e s/elf_i386/elf_nacl/ -e s/elf_x86_64/elf64_nacl/ ../eglib/configure | ||
Remove ${PACKAGE_NAME} | ||
MakeDir ${PACKAGE_NAME} | ||
cd ${PACKAGE_NAME} | ||
CC=${NACLCC} CXX=${NACLCXX} AR=${NACLAR} RANLIB=${NACLRANLIB} PKG_CONFIG_PATH=${NACL_SDK_USR_LIB}/pkgconfig LD="${NACLLD}" \ | ||
PKG_CONFIG_LIBDIR=${NACL_SDK_USR_LIB} PATH=${NACL_BIN_PATH}:${PATH} LIBS="-lnacl_dyncode -lc -lg -lnosys -lnacl" \ | ||
CFLAGS="-g -O2 -D_POSIX_PATH_MAX=256 -DPATH_MAX=256" ../../configure \ | ||
${CONFIG_OPTS} \ | ||
--exec-prefix=${INSTALL_PATH} \ | ||
--libdir=${INSTALL_PATH}/lib \ | ||
--prefix=${INSTALL_PATH} \ | ||
--program-prefix="" \ | ||
--oldincludedir=${INSTALL_PATH}/include \ | ||
--with-glib=embedded \ | ||
--with-tls=pthread \ | ||
--enable-threads=posix \ | ||
--without-sigaltstack \ | ||
--without-mmap \ | ||
--with-gc=included \ | ||
--enable-nacl-gc \ | ||
--with-sgen=no \ | ||
--enable-nls=no \ | ||
--enable-nacl-codegen \ | ||
--disable-system-aot \ | ||
--enable-shared \ | ||
--disable-parallel-mark \ | ||
--with-static-mono=no | ||
|
||
} | ||
|
||
CustomInstallStep() { | ||
make install | ||
} | ||
|
||
CustomPackageInstall() { | ||
CustomConfigureStep | ||
DefaultBuildStep | ||
CustomInstallStep | ||
} | ||
|
||
CustomPackageInstall | ||
exit 0 |
Oops, something went wrong.