source: scripts/funcs/multiarch-funcs.sh@ 617118d

clfs-1.2 clfs-2.1 clfs-3.0.0-systemd clfs-3.0.0-sysvinit systemd sysvinit
Last change on this file since 617118d was 617118d, checked in by Jim Gifford <clfs@…>, 19 years ago

r561@server (orig r559): root | 2005-06-05 02:38:49 -0700
Fixed Directory Structure

  • Property mode set to 100755
File size: 5.6 KB
Line 
1#!/bin/bash
2#
3# Multi-arch handling functions for cross-lfs build
4# -------------------------------------------------
5# $LastChangedBy$
6# $LastChangedDate$
7# $LastChangedRevision$
8# $HeadURL$
9#
10
11# TODO: should really check if DEFAULTENV and LIBDIRENV have been set
12# in plfs-config and bail out if they have not...
13
14set_buildenv() {
15 case ${SELF} in
16 *-64.sh ) BUILDENV=64 ;;
17 *-32.sh ) BUILDENV=32 ;;
18 *-n32.sh ) BUILDENV=n32 ;;
19 *-o32.sh ) BUILDENV=o32 ;;
20 *-o64.sh ) BUILDENV=o64 ;;
21 * ) BUILDENV=${DEFAULTENV} ;;
22 esac
23
24 export BUILDENV
25}
26
27set_libdirname() {
28 # TODO: this will barf on mips if setting 64bit libs to go to */lib
29 # but will work if setting
30 if [ -z "${BUILDENV}" ]; then
31 BUILDENV=${DEFAULTENV}
32 export BUILDENV
33 fi
34 if [ ! "${BUILDENV}" = "${LIBDIRENV}" ]; then
35 case ${BUILDENV} in
36 32 | o32 | n32 ) libdirname=lib32 ;;
37 64 | o64 ) libdirname=lib64 ;;
38 * ) echo "unknown buildenv ${BUILDENV}"; return 1
39 esac
40 LOG=`echo ${LOG} | sed "s@\.log@-${BUILDENV}&@"`
41 else
42 libdirname=lib
43 fi
44
45 # Adjust PKG_CONFIG_PATH
46 PKG_CONFIG_PATH=`echo "${PKG_CONFIG_PATH}" | \
47 sed -e "s@lib[36][124]@lib@g" -e "s@lib@${libdirname}@g" `
48
49 # Adjust GNOME_LIBCONF_PATH
50 GNOME_LIBCONF_PATH=`echo "${GNOME_LIBCONF_PATH}" | \
51 sed -e "s@lib[36][124]@lib@g" -e "s@lib@${libdirname}@g" `
52
53 if [ "${MULTIARCH}" = "Y" ]; then
54 export PERL=`which_func perl-${BUILDENV}`
55 export PYTHON=`which_func python-${BUILDENV}`
56 else
57 export PERL=`which_func perl`
58 export PYTHON=`which_func python`
59 fi
60
61}
62
63which_func() {
64 type ${1} | \
65 sed -e 's@.* \(.*\)$@\1@g' \
66 -e 's@[()]@@g'
67}
68
69
70# Following function sets compiler options
71setup_multiarch() {
72 if [ "Y" = "${MULTIARCH}" ]; then
73 vendor_os=`echo ${TARGET} | sed 's@\([^-]*\)-\(.*\)@\2@'`
74 TGT_ARCH=`echo ${TARGET} | sed 's@\([^-]*\).*@\1@'`
75
76 ARCH_CFLAGS=""
77 ALT_TGT=""
78
79 case ${BUILDENV} in
80 64 )
81 case ${TGT_ARCH} in
82 x86_64 ) ARCH_CFLAGS="-m${BUILDENV}"
83 ARCH_LDFLAGS="-m elf_x86_64" ;;
84 powerpc* | ppc* | s390* )
85 ARCH_CFLAGS="-m${BUILDENV}" ;;
86 sparc* ) ARCH_CFLAGS="-m${BUILDENV}"
87 ALT_TGT=sparc64-${vendor_os} ;;
88 mips*el* ) ARCH_CFLAGS="-mabi=${BUILDENV}"
89 ALT_TGT="mips64el-${vendor_os}" ;;
90 * )
91 echo "### Unknown: ${TGT_ARCH} - ${BUILDENV} ###" 1>&2
92 return 1
93 ;;
94 esac
95 ;;
96 32 )
97 case ${TGT_ARCH} in
98 x86_64 | x86-64 ) ARCH_CFLAGS="-m${BUILDENV}"
99 ARCH_LDFLAGS="-m elf_i386"
100 ALT_TGT="i686-${vendor_os}" ;;
101 powerpc* | ppc* ) ARCH_CFLAGS="-m${BUILDENV}"
102 ALT_TGT="ppc-${vendor_os}" ;;
103 sparc* ) ARCH_CFLAGS="-m${BUILDENV}"
104 ALT_TGT="sparcv9-${vendor_os}" ;;
105 mips*el* ) ARCH_CFLAGS="-mabi=${BUILDENV}"
106 ALT_TGT="mipsel-${vendor_os}" ;;
107 * )
108 echo "### Unknown: ${TGT_ARCH} - ${BUILDENV} ###" 1>&2
109 return 1
110 ;;
111 esac
112 ;;
113 n32 )
114 case ${TGT_ARCH} in
115 mips*el* ) ARCH_CFLAGS="-mabi=${BUILDENV}" ;;
116 * )
117 echo "### Unknown: ${TGT_ARCH} - ${BUILDENV} ###" 1>&2
118 return 1
119 ;;
120 esac
121 ;;
122 31 )
123 case ${TGT_ARCH} in
124 s390* ) ARCH_CFLAGS="-m${BUILDENV}"
125 ALT_TGT="s390-${vender_os}" ;;
126 * )
127 echo "### Unknown: ${TGT_ARCH} - ${BUILDENV} ###" 1>&2
128 return 1
129 ;;
130 esac
131 ;;
132 * )
133 echo "### Unknown biarch system ###" 1>&2
134 return 1
135 ;;
136 esac
137
138 suffix="-${BUILDENV}"
139 fi
140}
141
142create_wrapper() {
143 # want one arg only, the name of the wrapper file to create
144 if [ ! "${#}" = "1" ]; then
145 echo "create_wrapper: error, use create_wrapper /path/to/wrapper" 1>&2
146 return 1
147 fi
148 wrapper=${1}
149
150 if [ -z "${DEFAULTENV}" ]; then
151 echo "create_wrapper: error, DEFAULTENV not set" 1>&2
152 return 1
153 fi
154
155 wrapperdir=`dirname ${wrapper}`
156 if [ ! -d ${wrapperdir} ]; then mkdir -p ${wrapperdir} ; fi
157
158 cat > ${wrapper} <<EOF
159#!/bin/sh
160
161# Set to default if BUILDENV not set
162if [ -z \${BUILDENV} ]; then BUILDENV=${DEFAULTENV} ; fi
163export BUILDENV
164exec \${0}-\${BUILDENV} \${@}
165EOF
166
167 chmod 755 ${wrapper}
168
169}
170
171use_wrapper() {
172 # Use full path
173 wrapper=/usr/bin/multilib_wrapper
174
175 if [ "${#}" = "0" ]; then
176 echo "use_wrapper: error, no files specified" 1>&2
177 return 1
178 fi
179 if [ -z "${BUILDENV}" ]; then
180 echo "use_wrapper: error, BUILDENV not set" 1>&2
181 return 1
182 fi
183
184 echo " o set files to use multi-arch wrapper ( ${wrapper} )"
185 if [ ! -f ${wrapper} ]; then create_wrapper ${wrapper} || return 1 ; fi
186
187 for file in ${@} ; do
188 if [ ! -f ${file} ]; then
189 echo "use_wrapper: error, ${file} is not a regular file" 1>&2
190 return 1
191 fi
192
193 # do the work
194 mv ${file} ${file}-${BUILDENV} &&
195 ln -sf ${wrapper} ${file} &&
196 echo " - ${file}" || {
197 echo "use_wrapper: error creating ${file}" 1>&2
198 return 1
199 }
200
201 done
202}
203
204export -f set_buildenv
205export -f set_libdirname
206export -f setup_multiarch
207export -f create_wrapper
208export -f use_wrapper
209export -f which_func
Note: See TracBrowser for help on using the repository browser.