aboutsummaryrefslogtreecommitdiff
path: root/projects/crossgcc
diff options
context:
space:
mode:
Diffstat (limited to 'projects/crossgcc')
-rwxr-xr-xprojects/crossgcc/crossgcc11
-rwxr-xr-xprojects/crossgcc/crossgcc-helper15
2 files changed, 25 insertions, 1 deletions
diff --git a/projects/crossgcc/crossgcc b/projects/crossgcc/crossgcc
index 3ad3b7ae..cdd3f513 100755
--- a/projects/crossgcc/crossgcc
+++ b/projects/crossgcc/crossgcc
@@ -145,7 +145,16 @@ build() {
mkdir -p "$build_path"
- make -C "$sources_path" CPUS="$TASKS" DEST="$build_path" "crossgcc-$arch"
+ local bootstrap_flag
+
+ if ! crossgcc_same_major_version_test; then
+ printf '\n%s' 'GCC major versions differ. Bootstrapping' 1>&2
+ printf '%s\n\n' ' to avoid potential build failure' 1>&2
+
+ bootstrap_flag='-b'
+ fi
+
+ make -C "$sources_path" "$bootstrap_flag" CPUS="$TASKS" DEST="$build_path" "crossgcc-$arch"
}
build_check() {
diff --git a/projects/crossgcc/crossgcc-helper b/projects/crossgcc/crossgcc-helper
index 5c4072d2..3891a15c 100755
--- a/projects/crossgcc/crossgcc-helper
+++ b/projects/crossgcc/crossgcc-helper
@@ -15,6 +15,21 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
+crossgcc_same_major_version_test() {
+ local buildgcc_path="$sources_path/util/crossgcc/buildgcc"
+ local sources_path="$(project_sources_path "$project" "$repository" "$@")"
+
+ local crossgcc_version="$(sed -rne 's/^GCC_VERSION=(.*)$/\1/p' "$buildgcc_path")"
+ local host_gcc_version="$(gcc -dumpversion)"
+
+ if [[ "${host_gcc_version%%.*}" -eq "${crossgcc_version%%.*}" ]]; then
+
+ return 0
+ else
+ return 1
+ fi
+}
+
crossgcc_tarballs() {
local sources_path=$( project_sources_path "$project" "$repository" "$@" )
local install_path="$sources_path/util/crossgcc/tarballs/"