OLD | NEW |
1 # Copyright (c) 2012 The Native Client Authors. All rights reserved. | 1 # Copyright (c) 2012 The Native Client Authors. All rights reserved. |
2 # Use of this source code is governed by a BSD-style license that can be | 2 # Use of this source code is governed by a BSD-style license that can be |
3 # found in the LICENSE file. | 3 # found in the LICENSE file. |
4 # | 4 # |
5 # Environment variable NACL_ARCH should be unset or set to "i686" | 5 # Environment variable NACL_ARCH should be unset or set to "i686" |
6 # for a 32-bit build. It should be set to "x86_64", "pnacl", or "arm" | 6 # for a 32-bit build. It should be set to "x86_64", "pnacl", or "arm" |
7 # for a 64-bit, pnacl, or arm builds. | 7 # for a 64-bit, pnacl, or arm builds. |
8 | 8 |
9 | 9 |
10 # NAMING CONVENTION | 10 # NAMING CONVENTION |
(...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
585 # export the nacl tools | 585 # export the nacl tools |
586 export CC=${NACLCC} | 586 export CC=${NACLCC} |
587 export CXX=${NACLCXX} | 587 export CXX=${NACLCXX} |
588 export AR=${NACLAR} | 588 export AR=${NACLAR} |
589 export RANLIB=${NACLRANLIB} | 589 export RANLIB=${NACLRANLIB} |
590 export PKG_CONFIG_PATH=${NACLPORTS_LIBDIR}/pkgconfig | 590 export PKG_CONFIG_PATH=${NACLPORTS_LIBDIR}/pkgconfig |
591 export PKG_CONFIG_LIBDIR=${NACLPORTS_LIBDIR} | 591 export PKG_CONFIG_LIBDIR=${NACLPORTS_LIBDIR} |
592 export FREETYPE_CONFIG=${NACLPORTS_PREFIX_BIN}/freetype-config | 592 export FREETYPE_CONFIG=${NACLPORTS_PREFIX_BIN}/freetype-config |
593 export PATH=${NACL_BIN_PATH}:${PATH}; | 593 export PATH=${NACL_BIN_PATH}:${PATH}; |
594 ChangeDir ${NACL_PACKAGES_REPOSITORY}/${PACKAGE_DIR} | 594 ChangeDir ${NACL_PACKAGES_REPOSITORY}/${PACKAGE_DIR} |
595 Remove "build-nacl" | 595 Remove build-nacl |
596 MakeDir "build-nacl" | 596 MakeDir build-nacl |
597 cd "build-nacl" | 597 cd build-nacl |
598 echo "Directory: $(pwd)" | 598 echo "Directory: $(pwd)" |
599 | 599 |
600 local conf_host=${NACL_CROSS_PREFIX} | 600 local conf_host=${NACL_CROSS_PREFIX} |
601 if [ ${NACL_ARCH} = "pnacl" ]; then | 601 if [ ${NACL_ARCH} = "pnacl" ]; then |
602 # The PNaCl tools use "pnacl-" as the prefix, but config.sub | 602 # The PNaCl tools use "pnacl-" as the prefix, but config.sub |
603 # does not know about "pnacl". It only knows about "le32-nacl". | 603 # does not know about "pnacl". It only knows about "le32-nacl". |
604 # Unfortunately, most of the config.subs here are so old that | 604 # Unfortunately, most of the config.subs here are so old that |
605 # it doesn't know about that "le32" either. So we just say "nacl". | 605 # it doesn't know about that "le32" either. So we just say "nacl". |
606 conf_host="nacl" | 606 conf_host="nacl" |
607 fi | 607 fi |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
665 } | 665 } |
666 | 666 |
667 | 667 |
668 # echo a command before exexuting it under 'time' | 668 # echo a command before exexuting it under 'time' |
669 TimeCommand() { | 669 TimeCommand() { |
670 echo "$@" | 670 echo "$@" |
671 time "$@" | 671 time "$@" |
672 } | 672 } |
673 | 673 |
674 | 674 |
| 675 Validate() { |
| 676 if [ ${NACL_ARCH} = "pnacl" ]; then |
| 677 return |
| 678 elif [ ${NACL_ARCH} = "arm" ]; then |
| 679 NACL_VALIDATE=${NACL_SDK_ROOT}/tools/ncval_arm |
| 680 elif [ ${NACL_ARCH} = "x86_64" ]; then |
| 681 NACL_VALIDATE="${NACL_SDK_ROOT}/tools/ncval_x86_64 --errors" |
| 682 else |
| 683 NACL_VALIDATE=${NACL_SDK_ROOT}/tools/ncval_x86_32 |
| 684 fi |
| 685 LogExecute ${NACL_VALIDATE} $@ |
| 686 if [ $? != 0 ]; then |
| 687 exit 1 |
| 688 fi |
| 689 } |
| 690 |
| 691 |
| 692 DefaultValidateStep() { |
| 693 if [ ${NACL_ARCH} != "pnacl" -a -n "${EXECUTABLES:-}" ]; then |
| 694 for nexe in $EXECUTABLES ; do |
| 695 Validate $nexe |
| 696 done |
| 697 fi |
| 698 } |
| 699 |
| 700 |
675 RunSelLdrCommand() { | 701 RunSelLdrCommand() { |
676 if [ $NACL_ARCH = "arm" ]; then | 702 if [ $NACL_ARCH = "arm" ]; then |
677 # no sel_ldr for arm | 703 # no sel_ldr for arm |
678 return | 704 return |
679 fi | 705 fi |
680 echo "[sel_ldr] $@" | 706 echo "[sel_ldr] $@" |
681 if [ $NACL_GLIBC = "1" ]; then | 707 if [ $NACL_GLIBC = "1" ]; then |
682 time "${NACL_SEL_LDR}" -a -B "${NACL_IRT}" -- \ | 708 time "${NACL_SEL_LDR}" -a -B "${NACL_IRT}" -- \ |
683 "${NACL_SDK_LIB}/runnable-ld.so" --library-path "${NACL_SDK_LIB}" "$@" | 709 "${NACL_SDK_LIB}/runnable-ld.so" --library-path "${NACL_SDK_LIB}" "$@" |
684 else | 710 else |
685 time "${NACL_SEL_LDR}" -a -B "${NACL_IRT}" -- "$@" | 711 time "${NACL_SEL_LDR}" -a -B "${NACL_IRT}" -- "$@" |
686 fi | 712 fi |
687 } | 713 } |
688 | 714 |
| 715 |
689 WriteSelLdrScript() { | 716 WriteSelLdrScript() { |
690 if [ $NACL_ARCH = "arm" ]; then | 717 if [ $NACL_ARCH = "arm" ]; then |
691 # no sel_ldr for arm | 718 # no sel_ldr for arm |
692 return | 719 return |
693 fi | 720 fi |
694 if [ $NACL_GLIBC = "1" ]; then | 721 if [ $NACL_GLIBC = "1" ]; then |
695 cat > $1 <<HERE | 722 cat > $1 <<HERE |
696 #!/bin/bash | 723 #!/bin/bash |
697 export NACLLOG=/dev/null | 724 export NACLLOG=/dev/null |
698 "${NACL_SEL_LDR}" -a -B "${NACL_IRT}" -- \ | 725 |
699 "${NACL_SDK_LIB}/runnable-ld.so" --library-path "${NACL_SDK_LIB}" "$2" "\$@" | 726 SCRIPT_DIR=\$(dirname "\${BASH_SOURCE[0]}") |
| 727 SEL_LDR=${NACL_SEL_LDR} |
| 728 IRT=${NACL_IRT} |
| 729 SDK_LIB_DIR=${NACL_SDK_LIB} |
| 730 LIB_PATH=\${SDK_LIB_DIR}:\${SCRIPT_DIR} |
| 731 |
| 732 "\${SEL_LDR}" -a -B "\${IRT}" -- \\ |
| 733 "\${SDK_LIB_DIR}/runnable-ld.so" --library-path "\${LIB_PATH}" \\ |
| 734 "\${SCRIPT_DIR}/$2" "\$@" |
700 HERE | 735 HERE |
701 else | 736 else |
702 cat > $1 <<HERE | 737 cat > $1 <<HERE |
703 #!/bin/bash | 738 #!/bin/bash |
704 export NACLLOG=/dev/null | 739 export NACLLOG=/dev/null |
705 "${NACL_SEL_LDR}" -B "${NACL_IRT}" -- "$2" "\$@" | 740 |
| 741 SCRIPT_DIR=\$(dirname "\${BASH_SOURCE[0]}") |
| 742 SEL_LDR=${NACL_SEL_LDR} |
| 743 IRT=${NACL_IRT} |
| 744 |
| 745 "\${SEL_LDR}" -B "\${IRT}" -- "\${SCRIPT_DIR}/$2" "\$@" |
706 HERE | 746 HERE |
707 fi | 747 fi |
708 chmod 750 $1 | 748 chmod 750 $1 |
709 echo "Wrote script pwd:$PWD $1" | 749 echo "Wrote script pwd:$PWD $1" |
710 } | 750 } |
711 | 751 |
712 DefaultTranslateStep() { | 752 |
713 local package=$1 | 753 TranslatePexe() { |
714 local build_dir="${NACL_PACKAGES_REPOSITORY}/${package}" | 754 local pexe=$1 |
715 local pexe=${build_dir}/$2 | |
716 local arches="arm x86-32 x86-64" | 755 local arches="arm x86-32 x86-64" |
717 | |
718 Banner "Translating ${pexe}" | 756 Banner "Translating ${pexe}" |
719 ls -l ${pexe} | |
720 | 757 |
721 echo "stripping pexe" | 758 echo "stripping pexe" |
722 TimeCommand ${NACLSTRIP} ${pexe} -o ${pexe}.stripped | 759 TimeCommand ${NACLSTRIP} ${pexe} -o ${pexe}.stripped |
723 ls -l ${pexe}.stripped | |
724 | 760 |
725 for a in ${arches} ; do | 761 for a in ${arches} ; do |
726 echo | |
727 echo "translating pexe [$a]" | 762 echo "translating pexe [$a]" |
728 nexe=${pexe}.$a.nexe | 763 nexe=${pexe}.$a.nexe |
729 TimeCommand ${TRANSLATOR} -arch $a ${pexe}.stripped -o ${nexe} | 764 TimeCommand ${TRANSLATOR} -arch $a ${pexe}.stripped -o ${nexe} |
730 ls -l ${nexe} | |
731 done | 765 done |
732 | 766 |
733 # PIC branch | 767 # PIC branch |
734 for a in ${arches} ; do | 768 for a in ${arches} ; do |
735 echo | |
736 echo "translating pexe [$a,pic]" | 769 echo "translating pexe [$a,pic]" |
737 nexe=${pexe}.$a.pic.nexe | 770 nexe=${pexe}.$a.pic.nexe |
738 TimeCommand ${TRANSLATOR} -arch $a -fPIC ${pexe}.stripped -o ${nexe} | 771 TimeCommand ${TRANSLATOR} -arch $a -fPIC ${pexe}.stripped -o ${nexe} |
739 ls -l ${nexe} | |
740 done | 772 done |
741 | 773 |
742 # Now the same spiel with an optimized pexe | 774 # Now the same spiel with an optimized pexe |
743 opt_args="-O3 -inline-threshold=100" | 775 opt_args="-O3 -inline-threshold=100" |
744 echo | |
745 echo "optimizing pexe [${opt_args}]" | 776 echo "optimizing pexe [${opt_args}]" |
746 TimeCommand ${OPT} ${opt_args} ${pexe}.stripped -o ${pexe}.stripped.opt | 777 TimeCommand ${OPT} ${opt_args} ${pexe}.stripped -o ${pexe}.stripped.opt |
747 ls -l ${pexe}.stripped.opt | |
748 | 778 |
749 for a in ${arches} ; do | 779 for a in ${arches} ; do |
750 echo | |
751 echo "translating pexe [$a]" | 780 echo "translating pexe [$a]" |
752 nexe=${pexe}.opt.$a.nexe | 781 nexe=${pexe}.opt.$a.nexe |
753 TimeCommand ${TRANSLATOR} -arch $a ${pexe}.stripped.opt -o ${nexe} | 782 TimeCommand ${TRANSLATOR} -arch $a ${pexe}.stripped.opt -o ${nexe} |
754 ls -l ${nexe} | |
755 done | 783 done |
756 | 784 |
757 # PIC branch | 785 # PIC branch |
758 for a in ${arches}; do | 786 for a in ${arches}; do |
759 echo | |
760 echo "translating pexe [$a,pic]" | 787 echo "translating pexe [$a,pic]" |
761 nexe=${pexe}.$a.pic.opt.nexe | 788 nexe=${pexe}.$a.pic.opt.nexe |
762 TimeCommand ${TRANSLATOR} -arch $a -fPIC ${pexe}.stripped.opt -o ${nexe} | 789 TimeCommand ${TRANSLATOR} -arch $a -fPIC ${pexe}.stripped.opt -o ${nexe} |
763 ls -l ${nexe} | |
764 done | 790 done |
765 | 791 |
766 ls -l $(dirname ${pexe}) | 792 ls -l $(dirname ${pexe})/*.nexe ${pexe} |
767 } | 793 } |
768 | 794 |
769 | 795 |
| 796 DefaultTranslateStep() { |
| 797 if [ ${NACL_ARCH} = "pnacl" -a -n "${EXECUTABLES:-}" ]; then |
| 798 for pexe in ${EXECUTABLES} ; do |
| 799 TranslatePexe ${pexe} |
| 800 done |
| 801 fi |
| 802 } |
| 803 |
| 804 |
770 DefaultPackageInstall() { | 805 DefaultPackageInstall() { |
771 DefaultPreInstallStep | 806 DefaultPreInstallStep |
772 DefaultDownloadStep | 807 DefaultDownloadStep |
773 DefaultExtractStep | 808 DefaultExtractStep |
774 DefaultPatchStep | 809 DefaultPatchStep |
775 DefaultConfigureStep | 810 DefaultConfigureStep |
776 DefaultBuildStep | 811 DefaultBuildStep |
| 812 DefaultTranslateStep |
| 813 DefaultValidateStep |
777 DefaultInstallStep | 814 DefaultInstallStep |
778 DefaultCleanUpStep | 815 DefaultCleanUpStep |
779 } | 816 } |
OLD | NEW |