mirror of
https://gitlab.os-k.eu/os-k-team/cross-cc-builder.git
synced 2023-08-25 14:03:10 +02:00
Adding patches for red-zone
This commit is contained in:
parent
e69a394ed7
commit
35b91319f9
2
.gitignore
vendored
2
.gitignore
vendored
@ -2,3 +2,5 @@ gcc*/*
|
||||
binutils*/*
|
||||
gcc*
|
||||
binutils*
|
||||
bin/*
|
||||
build*
|
||||
|
61
Makefile
61
Makefile
@ -22,23 +22,26 @@
|
||||
# along with OS/K. If not, see <https://www.gnu.org/licenses/>. #
|
||||
#=----------------------------------------------------------------------------=#
|
||||
|
||||
.PHONY: retrieve compile showenv
|
||||
.DEFAULT_GOAL := compile
|
||||
.PHONY: retrieve compile showenv deflate configurebinutils binutils gcc clean
|
||||
.DEFAULT_GOAL := gcc
|
||||
|
||||
|
||||
## VERSIONS ------------------------------------------------------------------ #
|
||||
|
||||
|
||||
GCC_NAME = gcc-10.1.0
|
||||
BINUTILS_NAME =binutils-2.34
|
||||
# GCC 10.1.0
|
||||
GCC_SOURCES = https://ftp.gnu.org/gnu/gcc/gcc-10.1.0/gcc-10.1.0.tar.xz
|
||||
GCC_SOURCES = https://ftp.gnu.org/gnu/gcc/$(GCC_NAME)/$(GCC_NAME).tar.xz
|
||||
# BINUTILS 2.34
|
||||
BINUTILS_SOURCES = https://ftp.gnu.org/gnu/binutils/binutils-2.34.tar.xz
|
||||
BINUTILS_SOURCES = https://ftp.gnu.org/gnu/binutils/$(BINUTILS_NAME).tar.xz
|
||||
|
||||
|
||||
## VARIABLES ----------------------------------------------------------------- #
|
||||
|
||||
#ENV
|
||||
export NTHREADS := ${nproc}
|
||||
export PREFIX := $(HOME)/opt/cross
|
||||
export NTHREADS := $(shell nproc)
|
||||
export PREFIX := $(shell pwd)/bin
|
||||
export TARGET := x86_64-elf
|
||||
export PATH := $(PREFIX)/bin:$(PATH)
|
||||
export XZ_DEFAULTS := -T $(NTHREADS)
|
||||
@ -73,15 +76,51 @@ retrieve: showenv
|
||||
|
||||
deflate:
|
||||
@echo ${CL2}[$@] ${NC}Deflate GCC sources...${CL3}
|
||||
@tar -xaf $(GCCTARNAME) --threads NTHREADS
|
||||
@echo ${CL2}[$@] ${NC}Deflate BINUTILS sources...${CL3}
|
||||
@tar -xaf $(BINUTILSTARNAME) --threads NTHREADS
|
||||
@tar -xaf $(GCCTARNAME) --skip-old-files
|
||||
@echo ${CL2}[$@] ${NC}Deflate $(BINUTILS_NAME) sources...${CL3}
|
||||
@tar -xaf $(BINUTILSTARNAME) --skip-old-files
|
||||
@echo ${CL2}[$@] ${CL}Success.${CL3}
|
||||
|
||||
compile: retrieve deflate
|
||||
configurebinutils: retrieve deflate
|
||||
@echo ${CL2}[$@] ${NC}Configuring $(BINUTILS_NAME)...${CL3}
|
||||
@mkdir -p build-binutils
|
||||
cd build-binutils && ../$(BINUTILS_NAME)/configure --target=$(TARGET) --prefix="$(PREFIX)" --with-sysroot --disable-nls --disable-werror
|
||||
@echo ${CL2}[$@] ${CL}Success.${CL3}
|
||||
|
||||
binutils: configurebinutils
|
||||
@echo ${CL2}[$@] ${NC}Compiling $(BINUTILS_NAME)...${CL3}
|
||||
cd build-binutils && make -j $(NTHREADS)
|
||||
@echo ${CL2}[$@] ${NC}Compiling $(BINUTILS_NAME)...${CL3}
|
||||
@mkdir -p bin
|
||||
cd build-binutils && make install -j $(NTHREADS)
|
||||
@echo ${CL2}[$@] ${CL}Success.${CL3}
|
||||
|
||||
configuregcc:
|
||||
@echo ${CL2}[$@] ${NC}Configuring $(GCC_NAME)...${CL3}
|
||||
@cp multilib.opt $(GCC_NAME)/gcc/config/i386/t-x86_64-elf
|
||||
@patch $(GCC_NAME)/gcc/config.gcc < patch-red-zone.diff
|
||||
@mkdir -p build-gcc
|
||||
cd build-gcc && ../$(GCC_NAME)/configure --target=$(TARGET) --prefix="$(PREFIX)" --disable-nls --enable-languages=c,c++ --without-headers
|
||||
@echo ${CL2}[$@] ${CL}Success.${CL3}
|
||||
|
||||
gcc: binutils configuregcc
|
||||
@echo ${CL2}[$@] ${NC}Compiling $(GCC_NAME)...${CL3}
|
||||
cd build-gcc && make all-gcc -j $(NTHREADS)
|
||||
cd build-gcc && make all-target-libgcc -j $(NTHREADS)
|
||||
@mkdir -p bin
|
||||
cd build-gcc && make install-gcc -j $(NTHREADS)
|
||||
cd build-gcc && make install-target-libgcc -j $(NTHREADS)
|
||||
@echo ${CL2}[$@] ${CL}Success.${CL3}
|
||||
|
||||
clean:
|
||||
@mkdir -p build-gcc build-binutils
|
||||
@cd build-gcc && rm -rf *
|
||||
@cd build-binutils && rm -rf *
|
||||
@rm -rf bin
|
||||
@echo ${CL2}[$@] ${CL}Success.${CL3}
|
||||
|
||||
|
||||
remove_all:
|
||||
@rm -rf gcc*
|
||||
@rm -rf binutils*
|
||||
@rm -rf bin*
|
||||
@echo ${CL2}[$@] ${CL}Success.${CL3}
|
||||
|
4
multilib.opt
Normal file
4
multilib.opt
Normal file
@ -0,0 +1,4 @@
|
||||
# Add libgcc multilib variant without red-zone requirement
|
||||
|
||||
MULTILIB_OPTIONS += mno-red-zone
|
||||
MULTILIB_DIRNAMES += no-red-zone
|
19
patch-red-zone.diff
Normal file
19
patch-red-zone.diff
Normal file
@ -0,0 +1,19 @@
|
||||
--- config.gcc 2020-06-01 20:40:52.562801089 +0200
|
||||
+++ configm.gcc 2020-06-01 20:41:49.970576321 +0200
|
||||
@@ -180,7 +180,7 @@
|
||||
# the --with-sysroot configure option or the
|
||||
# --sysroot command line option is used this
|
||||
# will be relative to the sysroot.
|
||||
-# target_type_format_char
|
||||
+# target_type_format_char
|
||||
# The default character to be used for formatting
|
||||
# the attribute in a
|
||||
# .type symbol_name, ${t_t_f_c}<property>
|
||||
@@ -1865,6 +1865,7 @@
|
||||
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h"
|
||||
;;
|
||||
x86_64-*-elf*)
|
||||
+ tmake_file="${tmake_file} i386/t-x86_64-elf" # include the new multilib configuration to prevent red-zone
|
||||
tm_file="${tm_file} i386/unix.h i386/att.h dbxelf.h elfos.h newlib-stdint.h i386/i386elf.h i386/x86-64.h"
|
||||
;;
|
||||
x86_64-*-rtems*)
|
Loading…
Reference in New Issue
Block a user