Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Side by Side Diff: ports/mingn/build.sh

Issue 1285953002: Switch devenv to use pkg packages (Closed) Base URL: https://chromium.googlesource.com/external/naclports.git@toolchain_install
Patch Set: Created 5 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright (c) 2014 The Native Client Authors. All rights reserved. 1 # Copyright (c) 2014 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 BuildStep() { 5 BuildStep() {
6 # Nothing to build. 6 # Nothing to build.
7 return 7 return
8 } 8 }
9 9
10 CreateMingnPackage() {
11 local package_name="$1.${2:-${NACL_ARCH}}"
12 echo "CreateMingnPackage ${package_name}"
13 local stamp="$(date)"
14 MakeDir mingn/stamp
15 echo "INSTALLED=\"${stamp}\"" > "mingn/stamp/${package_name}"
16 MakeDir ${PUBLISH_DIR}/tarballs
17 LogExecute rm -f ${PUBLISH_DIR}/tarballs/${package_name}.zip
18 LogExecute zip -qr ${PUBLISH_DIR}/tarballs/${package_name}.zip mingn
19 MakeDir "${PUBLISH_DIR}/stamp"
20 echo "LATEST=\"${stamp}\"" > "${PUBLISH_DIR}/stamp/${package_name}"
21 }
22
23 InstallStep() { 10 InstallStep() {
24 MakeDir ${PUBLISH_DIR} 11 MakeDir ${INSTALL_DIR}${PREFIX}
25 12 ChangeDir ${INSTALL_DIR}${PREFIX}
26 # Create another archive which contains executables.
27 MakeDir ${SRC_DIR}/${NACL_ARCH}/bin
28 ChangeDir ${SRC_DIR}/${NACL_ARCH}/bin
29
30 local BINUTILS_DIR=${NACL_PACKAGES_PUBLISH}/binutils/${TOOLCHAIN}
31 local GCC_DIR=${NACL_PACKAGES_PUBLISH}/gcc/${TOOLCHAIN}
32
33 local TOOLCHAIN_OUT_DIR=mingn/toolchain/nacl_x86_glibc
34 local bin_dir=${TOOLCHAIN_OUT_DIR}/bin
35 local libexec_dir=${TOOLCHAIN_OUT_DIR}/libexec/gcc/x86_64-nacl/4.4.3
36
37 MakeDir ${bin_dir}
38 MakeDir ${libexec_dir}
39 BINARIES="\
40 ${GCC_DIR}/*_${NACL_ARCH}.nexe \
41 ${BINUTILS_DIR}/*_${NACL_ARCH}.nexe"
42
43 for binary in ${BINARIES}; do
44 name=$(basename ${binary} | sed "s/_${NACL_ARCH}.nexe//")
45 if [ ${name} = "cc1" -o ${name} = "cc1plus" -o ${name} = "collect2" ]; then
46 LogExecute cp ${binary} ${libexec_dir}/${name}
47 else
48 LogExecute cp ${binary} ${bin_dir}/${name}
49 fi
50 done
51
52 CreateMingnPackage base
53 13
54 # Create an archive which contains include files and shared objects. 14 # Create an archive which contains include files and shared objects.
55 MakeDir ${SRC_DIR}/lib
56 ChangeDir ${SRC_DIR}/lib
57 15
58 # Copy files from $NACL_SDK_ROOT to the package. 16 # Copy files (for now just headers) from $NACL_SDK_ROOT to the package.
59 local dirs=" 17 local dirs="
60 toolchain/${OS_SUBDIR}_x86_glibc/lib/gcc/x86_64-nacl
61 toolchain/${OS_SUBDIR}_x86_glibc/x86_64-nacl/lib32
62 toolchain/${OS_SUBDIR}_x86_glibc/x86_64-nacl/lib
63 toolchain/${OS_SUBDIR}_x86_glibc/x86_64-nacl/include 18 toolchain/${OS_SUBDIR}_x86_glibc/x86_64-nacl/include
64 " 19 "
65 for d in ${dirs}; do 20 for d in ${dirs}; do
66 local o=$(echo mingn/${d} | sed "s/${OS_SUBDIR}_/nacl_/") 21 local o=$(echo ${d} | sed "s/toolchain\/${OS_SUBDIR}_x86_glibc\///")
67 echo "Copying libs from: ${d} -> ${o}" 22 echo "Copying libs from: ${d} -> ${o}"
68 MakeDir ${o} 23 MakeDir ${o}
69 if [ -d ${NACL_SDK_ROOT}/${d} ]; then 24 if [ -d ${NACL_SDK_ROOT}/${d} ]; then
70 cp -R ${NACL_SDK_ROOT}/${d} $(dirname ${o}) 25 cp -R ${NACL_SDK_ROOT}/${d} $(dirname ${o})
71 else 26 else
72 MakeDir ${o} 27 MakeDir ${o}
73 fi 28 fi
74 done 29 done
75 30
31 # Create libmingn.so ldscripts.
32 MakeDir lib
33 cat <<EOF > lib/libmingn.so
34 GROUP(-lcli_main -lnacl_spawn -lppapi_simple -lnacl_io -lppapi -lstdc++ -lm)
35 EXTERN(PSUserMainGet)
36 EOF
37
76 # Remove unnecessary files to reduce the size of the archive. 38 # Remove unnecessary files to reduce the size of the archive.
77 LogExecute rm -f ${TOOLCHAIN_OUT_DIR}/x86_64-nacl/lib/32 39 LogExecute rm -fr x86_64-nacl/lib*/{gconv,libgfortran*}
78 LogExecute rm -fr ${TOOLCHAIN_OUT_DIR}/x86_64-nacl/lib*/{gconv,libgfortran*} 40 # These headers gome from the 'gcc' package
41 LogExecute rm -fr x86_64-nacl/include/c++/
42 # These scripts come from the 'binutils' package
43 LogExecute rm -fr x86_64-nacl/lib/ldscripts/
79 44
80 # Resolve all symlinks as nacl_io does not support symlinks. 45 # Resolve all symlinks as nacl_io does not support symlinks.
81 for i in $(find mingn -type l); do 46 for i in $(find . -type l); do
82 if [ ! -d ${i} ]; then 47 if [ ! -d ${i} ]; then
83 cp ${i} ${i}.tmp 48 cp ${i} ${i}.tmp
84 rm ${i} 49 rm ${i}
85 mv ${i}.tmp ${i} 50 mv ${i}.tmp ${i}
86 fi 51 fi
87 done 52 done
88 53
89 # Create a directory for additional libraries. 54 # Remove shared objects which are symlinked after we resolve them.
90 for arch in i686 x86_64; do 55 find . -name '*.so.*.*' -exec rm -f {} \;
91 local usr_lib_dir=${TOOLCHAIN_OUT_DIR}/${arch}-nacl/usr/lib
92 local usr_lib_ports=${NACL_TOOLCHAIN_ROOT}/${arch}-nacl/usr/lib
93 56
94 mkdir -p ${usr_lib_dir} 57 MakeDir lib
95 mkdir -p ${usr_lib_dir}/debug 58 # Copy core libraries
59 LogExecute cp -r ${NACL_SDK_LIB}/*.a lib/
60 LogExecute cp -r ${NACL_SDK_LIB}/*.o lib/
96 61
97 # Copy libz, libncurses, libnacl-spawn, and libcli_main. 62 # Copy SDK libs
98 if ! cp -f \ 63 LogExecute cp -r ${NACL_SDK_LIBDIR}/*.a lib/
99 ${usr_lib_ports}/libz.so* \ 64 LogExecute rm -fr lib/libgtest.*a
100 ${usr_lib_ports}/libncurses.so* \ 65 LogExecute rm -fr lib/libgmock.*a
101 ${usr_lib_ports}/libcli_main.a \
102 ${usr_lib_ports}/libnacl_spawn.* \
103 ${usr_lib_dir}; then
104 # They may not exist when we are building only for a single arch.
105 if [ ${NACL_ARCH} = ${arch} ]; then
106 echo "Failed to copy ${usr_lib_ports}"
107 exit 1
108 fi
109 fi
110
111 local arch_alt=${arch}
112 if [ ${arch_alt} = "i686" ]; then
113 arch_alt="x86_32"
114 local ld_format="elf32-i386-nacl"
115 else
116 local ld_format="elf64-x86-64-nacl"
117 fi
118
119 # Merge libraries made from native_client_sdk so that you do not
120 # need to specify -L option for them.
121 cp ${NACL_SDK_ROOT}/lib/glibc_${arch_alt}/Release/* ${usr_lib_dir}
122 # But also copy the debug ones.
123 cp ${NACL_SDK_ROOT}/lib/glibc_${arch_alt}/Debug/* ${usr_lib_dir}/debug
124
125 # Create libmingn.so ldscripts.
126 cat <<EOF > ${TOOLCHAIN_OUT_DIR}/${arch}-nacl/usr/lib/libmingn.so
127 OUTPUT_FORMAT(${ld_format})
128 GROUP(-lcli_main -lnacl_spawn -lppapi_simple -lnacl_io -lppapi -lstdc++ -lm)
129 EXTERN(PSUserMainGet)
130 EOF
131 done
132 66
133 # Copy in SDK includes. 67 # Copy in SDK includes.
134 LogExecute cp -r ${NACL_SDK_ROOT}/include mingn/ 68 LogExecute cp -r ${NACL_SDK_ROOT}/include ./
135 69 LogExecute rm -fr include/gtest
136 # Remove shared objects which are symlinked after we resolve them. 70 LogExecute rm -fr include/gmock
137 find mingn -name '*.so.*.*' -exec rm -f {} \;
138
139 # Modify GCC's specs file. E.g.,
140 # /path/to/nacl_sdk/pepper_canary/toolchain/linux_x86_glibc
141 # => /mingn/toolchain/nacl_x86_glibc.
142 sed -i.bak 's@/\S*/pepper_[^/]*/toolchain/[^/]*_x86_glibc@/mingn/toolchain/nac l_x86_glibc@g' \
143 ${TOOLCHAIN_OUT_DIR}/lib/gcc/x86_64-nacl/4.4.3/specs
144
145 CreateMingnPackage lib all
146 } 71 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698