Rev 19 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 19 | Rev 20 | ||
|---|---|---|---|
| Line 35... | Line 35... | ||
| 35 | exit 1 |
35 | exit 1 |
| 36 | } |
36 | } |
| 37 | 37 | ||
| 38 | # verify we're a x86_64 Linux host |
38 | # verify we're a x86_64 Linux host |
| 39 | if [ ! "$(uname)" = "Linux" ] || [ ! "$(uname -m)" = "x86_64" ]; then |
39 | if [ ! "$(uname)" = "Linux" ] || [ ! "$(uname -m)" = "x86_64" ]; then |
| 40 | print_error_and_die "Error: this script requires a x86_64 Linux machine (possibly a virtual |
40 | print_error_and_die "Error: this script requires a x86_64 Linux machine (possibly a virtual machine, or WSL2) as the build host." |
| 41 | fi |
41 | fi |
| 42 | 42 | ||
| 43 | # verify that we have the required tools |
43 | # verify that we have the required tools |
| 44 | for REQUIRED_TOOL in ${REQUIRED_TOOLS}; do |
44 | for REQUIRED_TOOL in ${REQUIRED_TOOLS}; do |
| 45 | "${REQUIRED_TOOL}" --version > /dev/null 2>&1 || print_error_and_die \ |
45 | "${REQUIRED_TOOL}" --version > /dev/null 2>&1 || print_error_and_die \ |
| Line 71... | Line 71... | ||
| 71 | # we're not in WSL. We can expect reasonably good file access speeds to the QNX SDP that's bundled with this repository, so just use it. |
71 | # we're not in WSL. We can expect reasonably good file access speeds to the QNX SDP that's bundled with this repository, so just use it. |
| 72 | QNXSDK_CANONICAL_PATH="$(realpath "${CURRENT_DIR}/${QNXSDK_PATH}")" |
72 | QNXSDK_CANONICAL_PATH="$(realpath "${CURRENT_DIR}/${QNXSDK_PATH}")" |
| 73 | fi |
73 | fi |
| 74 | 74 | ||
| 75 | # verify that the symlinks are deployed in the SDK -- just test one of them in each relevant directory ($QNX_HOST for the tools, $QNX_TARGET for the sysroot) |
75 | # verify that the symlinks are deployed in the SDK -- just test one of them in each relevant directory ($QNX_HOST for the tools, $QNX_TARGET for the sysroot) |
| 76 | if [ ! -e "${QNXSDK_CANONICAL_PATH}/${QNXSDK_HOSTPATH}/usr/bin/ntox86_64-gcc |
76 | if [ ! -e "${QNXSDK_CANONICAL_PATH}/${QNXSDK_HOSTPATH}/usr/bin/ntox86_64-gcc" ]; then |
| 77 | print_error_and_die \ |
- | |
| 78 |
|
77 | # symlinks not deployed in the QNX SDK: do so |
| 79 |
|
78 | OLDDIR="$(pwd)" |
| 80 |
|
79 | cd "${QNXSDK_CANONICAL_PATH}" |
| 81 |
|
80 | find . -name symlinks.lst -exec ./symlinks.sh {} create \; && printf 'present-v2' > .symlinks-state |
| 82 | "(else on a Windows machine:)" \ |
- | |
| 83 |
|
81 | cd "${OLDDIR}" |
| 84 | " host\\win64\\x86_64\\usr\\bin\\busybox.exe sh -c \"find . -name symlinks.lst -exec ./symlinks.sh {} create \\; && printf 'present' > .symlinks-state\"" \ |
- | |
| 85 | "Note that this step WILL take time on a Win32 machine, but is only done once." |
- | |
| 86 | fi |
82 | fi |
| 87 | 83 | ||
| 88 | # Create a symlink in /tmp that will lead to the QNX platform SDK so as to avoid spaces in paths if it doesn't exist already |
84 | # Create a symlink in /tmp that will lead to the QNX platform SDK so as to avoid spaces in paths if it doesn't exist already |
| 89 | # (this is totally prohibitive with the official QNX toolchain) |
85 | # (this is totally prohibitive with the official QNX toolchain) |
| 90 | if [ ! -L /tmp/qnxsdk ] || [ ! "$(readlink /tmp/qnxsdk)" = "${QNXSDK_CANONICAL_PATH}" ]; then |
86 | if [ ! -L /tmp/qnxsdk ] || [ ! "$(readlink /tmp/qnxsdk)" = "${QNXSDK_CANONICAL_PATH}" ]; then |
| Line 117... | Line 113... | ||
| 117 | rm -f "${CURRENT_DIR}/${2}" |
113 | rm -f "${CURRENT_DIR}/${2}" |
| 118 | exit 1 |
114 | exit 1 |
| 119 | fi |
115 | fi |
| 120 | fi |
116 | fi |
| 121 | echo "Extracting ${1} sources..." |
117 | echo "Extracting ${1} sources..." |
| - | 118 | STARTDIR="$(pwd)" |
|
| 122 | cd "$(dirname "${1}")" |
119 | cd "$(dirname "${1}")" |
| 123 | if echo "${2}"|grep -q "\.tar\.bz2$"; then |
120 | if echo "${2}"|grep -q "\.tar\.bz2$"; then |
| 124 | # BZip2 tarball |
121 | # BZip2 tarball |
| 125 | tar xjf "${CURRENT_DIR}/${2}" || exit 1 |
122 | tar xjf "${CURRENT_DIR}/${2}" || exit 1 |
| 126 | elif echo "${2}"|grep -q "\.tar\.xz$"; then |
123 | elif echo "${2}"|grep -q "\.tar\.xz$"; then |
| Line 128... | Line 125... | ||
| 128 | tar xJf "${CURRENT_DIR}/${2}" || exit 1 |
125 | tar xJf "${CURRENT_DIR}/${2}" || exit 1 |
| 129 | elif echo "${2}"|grep -q "\.tar\.gz$"; then |
126 | elif echo "${2}"|grep -q "\.tar\.gz$"; then |
| 130 | # GZipped tarball |
127 | # GZipped tarball |
| 131 | tar xzf "${CURRENT_DIR}/${2}" || exit 1 |
128 | tar xzf "${CURRENT_DIR}/${2}" || exit 1 |
| 132 | else |
129 | else |
| 133 |
|
130 | print_error_and_die "Error: unsupported file extension. Please improve the download_and_unpack_if_necessary() shell function to support it." |
| 134 | exit 1 |
- | |
| 135 | fi |
131 | fi |
| 136 | # make sure the expected directory is here after extraction |
132 | # make sure the expected directory is here after extraction |
| 137 | if [ ! -d "${1}" ]; then |
133 | if [ ! -d "$(basename "${1}")" ]; then |
| 138 |
|
134 | print_error_and_die "Error: couldn't find ${1} in extracted sources." |
| 139 | exit 1 |
- | |
| 140 | fi |
135 | fi |
| 141 | # do we have a patchset to apply ? |
136 | # do we have a patchset to apply ? |
| 142 | if [ -n "${4}" ]; then |
137 | if [ -n "${4}" ]; then |
| - | 138 | if [ ! -s "${CURRENT_DIR}/${2}.patchset" ]; then |
|
| 143 | echo "Downloading ${1} patchset from ${4}..." |
139 | echo "Downloading ${1} patchset from ${4}..." |
| 144 | wget -O "${CURRENT_DIR}/${2}.patchset" "${4}" || exit 1 |
140 | wget -O "${CURRENT_DIR}/${2}.patchset" "${4}" || exit 1 |
| - | 141 | fi |
|
| 145 | echo "Applying patchset..." |
142 | echo "Applying patchset..." |
| 146 | OLDDIR="$(pwd)" |
143 | OLDDIR="$(pwd)" |
| 147 | cd "${1}" |
144 | cd "$(basename "${1}")" |
| 148 | patch -N -Z -p1 < "${CURRENT_DIR}/${2}.patchset" || exit 1 |
145 | patch -N -Z -p1 < "${CURRENT_DIR}/${2}.patchset" || exit 1 |
| 149 | cd "${OLDDIR}" |
146 | cd "${OLDDIR}" |
| 150 | unset OLDDIR |
147 | unset OLDDIR |
| 151 | fi |
148 | fi |
| - | 149 | cd "${STARTDIR}" |
|
| - | 150 | unset STARTDIR |
|
| 152 | return 0 |
151 | return 0 |
| 153 | } |
152 | } |
| 154 | download_and_unpack_if_necessary "${BINUTILS_SOURCES_DIR}" "${BINUTILS_SOURCES_FILE}" "${BINUTILS_SOURCES_URL}" || exit 1 |
153 | download_and_unpack_if_necessary "${BINUTILS_SOURCES_DIR}" "${BINUTILS_SOURCES_FILE}" "${BINUTILS_SOURCES_URL}" || exit 1 |
| 155 | 154 | ||
| 156 | # change directory to the binutils sources |
155 | # change directory to the binutils sources |