diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 21357c1b6f..09a83382e9 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -37,7 +37,7 @@ jobs: - name: Upload to Artifacts uses: actions/upload-artifact@v4 with: - name: Clover-GCC-15.1.0-${{ env.GIT_SHA }} + name: Clover-GCC-15.2.0-${{ env.GIT_SHA }} path: | *.7z CloverV2*.zip diff --git a/BaseTools/Conf/tools_def.template b/BaseTools/Conf/tools_def.template index 09d75799ab..fc32fa6afb 100644 --- a/BaseTools/Conf/tools_def.template +++ b/BaseTools/Conf/tools_def.template @@ -133,6 +133,7 @@ DEFINE GCC53_IA32_PREFIX = ENV(GCC53_BIN) DEFINE GCC53_X64_PREFIX = ENV(GCC53_BIN) DEFINE GCC131_X64_PREFIX = ENV(GCC131_BIN) DEFINE GCC151_X64_PREFIX = ENV(GCC151_BIN) +DEFINE GCC152_X64_PREFIX = ENV(GCC152_BIN) DEFINE UNIX_IASL_BIN = ENV(IASL_PREFIX)iasl DEFINE WIN_IASL_BIN = ENV(IASL_PREFIX)iasl.exe @@ -2124,6 +2125,13 @@ DEFINE GCC151_IA32_X64_DLINK_FLAGS = DEF(GCC151_IA32_X64_DLINK_COMMON),--entr DEFINE GCC151_X64_DLINK_FLAGS = DEF(GCC151_IA32_X64_DLINK_FLAGS),-melf_x86_64,-znoexecstack,--oformat=elf64-x86-64,-pie DEFINE GCC151_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) +DEFINE GCC152_X64_CC_FLAGS = DEF(GCC49_X64_CC_FLAGS) -fno-unwind-tables -Wno-incompatible-ms-struct -Wno-misleading-indentation -mms-bitfields -fno-ms-extensions -ffreestanding -fno-exceptions +DEFINE GCC152_IA32_X64_DLINK_COMMON = -nostdlib -Wl,--no-warn-rwx-segments,--gc-sections,-n,-q,--gc-sections,-z,common-page-size=0x40,--defsym=PECOFF_HEADER_SIZE=0x240,--script=$(EDK_TOOLS_PATH)/Scripts/GccBase.lds +DEFINE GCC152_IA32_X64_ASLDLINK_FLAGS = DEF(GCC152_IA32_X64_DLINK_COMMON),--entry,ReferenceAcpiTable,-u,ReferenceAcpiTable +DEFINE GCC152_IA32_X64_DLINK_FLAGS = DEF(GCC152_IA32_X64_DLINK_COMMON),--entry,$(IMAGE_ENTRY_POINT),-u,$(IMAGE_ENTRY_POINT),-Map,$(DEST_DIR_DEBUG)/$(BASE_NAME).map +DEFINE GCC152_X64_DLINK_FLAGS = DEF(GCC152_IA32_X64_DLINK_FLAGS),-melf_x86_64,-znoexecstack,--oformat=elf64-x86-64,-pie +DEFINE GCC152_ASM_FLAGS = DEF(GCC49_ASM_FLAGS) + #################################################################################### @@ -2641,6 +2649,63 @@ RELEASE_GCC151_X64_CC_FLAGS = DEF(GCC151_X64_CC_FLAGS) -Os -Werror DEBUG_GCC151_X64_CXX_FLAGS = DEF(GCC151_X64_CC_FLAGS) -g3 -O0 RELEASE_GCC151_X64_CXX_FLAGS = DEF(GCC151_X64_CC_FLAGS) -Os -Werror + +#################################################################################### +# +# GCC 15.2 - This configuration is used to compile under Linux/MacOSX to produce +# PE/COFF binaries using GCC 15.2. +# +#################################################################################### +*_GCC152_*_*_FAMILY = GCC +*_GCC152_*_*_BUILDRULEORDER = nasm S s + +*_GCC152_*_MAKE_PATH = make + +*_GCC152_*_*_DLL = ENV(GCC152_DLL) + +*_GCC152_X64_GCCLINK_PREFIX = -Wl, + +*_GCC152_*_ASL_PATH = DEF(UNIX_IASL_BIN) + +*_GCC152_*_NASM_PATH = ENV(NASM_PREFIX)nasm + +*_GCC152_*_PP_FLAGS = DEF(GCC_PP_FLAGS) +*_GCC152_*_ASLPP_FLAGS = DEF(GCC_ASLPP_FLAGS) +*_GCC152_*_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) +*_GCC152_*_VFRPP_FLAGS = DEF(GCC_VFRPP_FLAGS) +*_GCC152_*_APP_FLAGS = +*_GCC152_*_ASL_FLAGS = DEF(IASL_FLAGS) +*_GCC152_*_ASL_OUTFLAGS = DEF(IASL_OUTFLAGS) + +################## +# GCC152 X64 definitions +################## +*_GCC152_X64_OBJCOPY_PATH = DEF(GCC152_X64_PREFIX)objcopy +*_GCC152_X64_CC_PATH = DEF(GCC152_X64_PREFIX)gcc +*_GCC152_X64_CXX_PATH = DEF(GCC152_X64_PREFIX)g++ +*_GCC152_X64_SLINK_PATH = DEF(GCC152_X64_PREFIX)gcc-ar +*_GCC152_X64_DLINK_PATH = DEF(GCC152_X64_PREFIX)gcc +*_GCC152_X64_ASLDLINK_PATH = DEF(GCC152_X64_PREFIX)gcc +*_GCC152_X64_ASM_PATH = DEF(GCC152_X64_PREFIX)gcc +*_GCC152_X64_PP_PATH = DEF(GCC152_X64_PREFIX)gcc +*_GCC152_X64_VFRPP_PATH = DEF(GCC152_X64_PREFIX)gcc +*_GCC152_X64_ASLCC_PATH = DEF(GCC152_X64_PREFIX)gcc +*_GCC152_X64_ASLPP_PATH = DEF(GCC152_X64_PREFIX)gcc +*_GCC152_X64_RC_PATH = DEF(GCC152_X64_PREFIX)objcopy + +*_GCC152_X64_ASLCC_FLAGS = DEF(GCC_ASLCC_FLAGS) -m64 +*_GCC152_X64_ASLDLINK_FLAGS = DEF(GCC48_IA32_X64_ASLDLINK_FLAGS),-m,elf_x86_64 +*_GCC152_X64_ASM_FLAGS = DEF(GCC152_ASM_FLAGS) -m64 +*_GCC152_X64_DLINK_FLAGS = DEF(GCC152_X64_DLINK_FLAGS) DEF(GCC152_X64_CC_FLAGS) ENV(GCC152_X64_EXTRA_CC_FLAGS) +*_GCC152_X64_RC_FLAGS = DEF(GCC_X64_RC_FLAGS) +*_GCC152_X64_OBJCOPY_FLAGS = +*_GCC152_X64_NASM_FLAGS = -f elf64 + + DEBUG_GCC152_X64_CC_FLAGS = DEF(GCC152_X64_CC_FLAGS) -g3 -O0 +RELEASE_GCC152_X64_CC_FLAGS = DEF(GCC152_X64_CC_FLAGS) -Os -Werror + DEBUG_GCC152_X64_CXX_FLAGS = DEF(GCC152_X64_CC_FLAGS) -g3 -O0 +RELEASE_GCC152_X64_CXX_FLAGS = DEF(GCC152_X64_CC_FLAGS) -Os -Werror + # # # XCODE5 support diff --git a/build_gcc15.sh b/build_gcc15.sh index cf82cd473c..ef61c654d8 100755 --- a/build_gcc15.sh +++ b/build_gcc15.sh @@ -28,7 +28,7 @@ set -u # exit with error if unbound variables # here we can change source versions of tools # export BINUTILS_VERSION=${BINUTILS_VERSION:-binutils-2.45} #2.42 -export GCC_VERSION=${GCC_VERSION:-15.1.0} +export GCC_VERSION=${GCC_VERSION:-15.2.0} # Version of libraries are from ./contrib/download_prerequisites in gcc source directory export GMP_VERSION=${GMP_VERSION:-gmp-6.3.0} #6.2.1 diff --git a/buildme b/buildme index 778d9a5bcb..008a2a4305 100755 --- a/buildme +++ b/buildme @@ -43,7 +43,7 @@ fi cd "$(dirname $([ -L $0 ] && readlink $0 || echo $0))" declare -r CLOVERROOT="$PWD" declare -r SYSNAME="$(uname)" -MYTOOLCHAIN=${1:-GCC151} +MYTOOLCHAIN=${1:-GCC152} revision=$(git describe --tags $(git rev-list --tags --max-count=1)) lsha1="not a git repo" pyversion=$(echo $COL_CYAN"Current Python version: "$COL_WHITE$($(which python3) --version)) @@ -122,9 +122,9 @@ checkTools() { if [[ "$SYSNAME" == Darwin ]]; then checkXCODE exportPaths - local GCC151_BIN="$PREFIX/cross/bin/x86_64-clover-linux-gnu-gcc" - if [[ $MYTOOLCHAIN == GCC* ]] && [[ ! -x "${GCC151_BIN}" ]]; then - if [[ $MYTOOLCHAIN == GCC151 ]]; then + local GCC152_BIN="$PREFIX/cross/bin/x86_64-clover-linux-gnu-gcc" + if [[ $MYTOOLCHAIN == GCC* ]] && [[ ! -x "${GCC152_BIN}" ]]; then + if [[ $MYTOOLCHAIN == GCC152 ]]; then cd "${CLOVERROOT}" ./build_gcc15.sh else diff --git a/ebuild.sh b/ebuild.sh index b0db237411..ca9f51d649 100755 --- a/ebuild.sh +++ b/ebuild.sh @@ -52,7 +52,7 @@ export PYTHON_COMMAND=python3 # if building through Xcode, then TOOLCHAIN_DIR is not defined # checking if it is where CloverGrowerPro put it if [[ "$SYSNAME" == Linux ]]; then - export TOOLCHAIN=GCC151 + export TOOLCHAIN=GCC152 TOOLCHAIN_DIR=${TOOLCHAIN_DIR:-/usr} else if [[ -d ~/src/opt/local ]]; then @@ -315,6 +315,7 @@ checkCmdlineArguments() { -gcc53 | --gcc53) TOOLCHAIN=GCC53 ;; -gcc131 | --gcc131) TOOLCHAIN=GCC131 ;; -gcc151 | --gcc151) TOOLCHAIN=GCC151 ;; + -gcc152 | --gcc152) TOOLCHAIN=GCC152 ;; -xcode | --xcode ) TOOLCHAIN=XCODE32 ;; -x64 | --x64) printf "\`%s' is deprecated because Clover is 64 bit only. This message will be removed soon\n" "$option" 1>&2 @@ -426,15 +427,15 @@ checkToolchain() { esac if [[ "$SYSNAME" == Linux ]]; then - export GCC151_BIN="$TOOLCHAIN_DIR/bin/" - if [[ ! -x "${GCC151_BIN}gcc" ]]; then + export GCC152_BIN="$TOOLCHAIN_DIR/bin/" + if [[ ! -x "${GCC152_BIN}gcc" ]]; then echo "No clover toolchain for Linux found !" >&2 echo "Install on your system or define the TOOLCHAIN_DIR variable." >&2 exit 1 fi else - export GCC151_BIN="$TOOLCHAIN_DIR/cross/bin/x86_64-clover-linux-gnu-" - if [[ $TOOLCHAIN == GCC* ]] && [[ ! -x "${GCC151_BIN}gcc" ]]; then + export GCC152_BIN="$TOOLCHAIN_DIR/cross/bin/x86_64-clover-linux-gnu-" + if [[ $TOOLCHAIN == GCC* ]] && [[ ! -x "${GCC152_BIN}gcc" ]]; then echo "No clover toolchain found !" >&2 echo "Build it with the build_gcc15.sh script or define the TOOLCHAIN_DIR variable." >&2 exit 1 diff --git a/hebuild.sh b/hebuild.sh index 5d99b94eae..fb36531480 100755 --- a/hebuild.sh +++ b/hebuild.sh @@ -43,7 +43,7 @@ M_NOGRUB=0 M_APPLEHFS=0 # Default values -export TOOLCHAIN=GCC151 +export TOOLCHAIN=GCC152 export TARGETARCH=X64 export BUILDTARGET=RELEASE export BUILDTHREADS=$(( NUMBER_OF_CPUS + 1 )) @@ -55,7 +55,7 @@ export PYTHON_COMMAND=python3 # if building through Xcode, then TOOLCHAIN_DIR is not defined # checking if it is where CloverGrowerPro put it if [[ "$SYSNAME" == Linux ]]; then - export TOOLCHAIN=GCC151 + export TOOLCHAIN=GCC152 TOOLCHAIN_DIR=${TOOLCHAIN_DIR:-/usr} else if [[ -d ~/src/opt/local ]]; then @@ -251,6 +251,7 @@ usage() { print_option_help "-gcc53" "use GCC 5.3 toolchain, including gcc-11" print_option_help "-gcc131" "use GCC 13.1 toolchain, including gcc-14.2" print_option_help "-gcc151" "use GCC 15.1 toolchain" + print_option_help "-gcc152" "use GCC 15.2 toolchain" # print_option_help "-unixgcc" "use UNIXGCC toolchain, unsupported" # print_option_help "-xcode" "use XCode 3.2 toolchain" print_option_help "-xcode5" "use XCode 5 toolchain, " @@ -319,6 +320,7 @@ checkCmdlineArguments() { -gcc53 | --gcc53) TOOLCHAIN=GCC53 ;; -gcc131 | --gcc131) TOOLCHAIN=GCC131 ;; -gcc151 | --gcc151) TOOLCHAIN=GCC151 ;; + -gcc152 | --gcc152) TOOLCHAIN=GCC152 ;; -x64 | --x64) # printf "\`%s' is deprecated because Clover is 64 bit only. This message will be removed soon\n" "$option" 1>&2 # sleep 4 @@ -429,15 +431,15 @@ checkToolchain() { esac if [[ "$SYSNAME" == Linux ]]; then - export GCC151_BIN="$TOOLCHAIN_DIR/bin/" - if [[ ! -x "${GCC151_BIN}gcc" ]]; then + export GCC152_BIN="$TOOLCHAIN_DIR/bin/" + if [[ ! -x "${GCC152_BIN}gcc" ]]; then echo "No clover toolchain for Linux found !" >&2 echo "Install on your system or define the TOOLCHAIN_DIR variable." >&2 exit 1 fi else - export GCC151_BIN="$TOOLCHAIN_DIR/cross/bin/x86_64-clover-linux-gnu-" - if [[ $TOOLCHAIN == GCC* ]] && [[ ! -x "${GCC151_BIN}gcc" ]]; then + export GCC152_BIN="$TOOLCHAIN_DIR/cross/bin/x86_64-clover-linux-gnu-" + if [[ $TOOLCHAIN == GCC* ]] && [[ ! -x "${GCC152_BIN}gcc" ]]; then echo "No clover toolchain found !" >&2 echo "Build it with the build_gcc15.sh script or define the TOOLCHAIN_DIR variable." >&2 exit 1 diff --git a/xbuildme b/xbuildme index 6e2011b8a8..765c4cb2c0 100755 --- a/xbuildme +++ b/xbuildme @@ -89,7 +89,7 @@ echo -e "${COL_WHITE} Switch to ${COL_CYAN}XCODE${COL_WHITE} echo -e "${COL_WHITE} Depending on your ${COL_CYAN}XCODE version${COL_WHITE} the Toolset will be ${COL_CYAN}automatically chosen" echo -e "${COL_GREEN} ---------------------- ${COL_CYAN}Current Python version: ${COL_WHITE}Python 3.13.7${COL_GREEN} --------------------${COL_RESET}" declare -r CLOVERROOT="$PWD" -declare -r MYTOOLCHAIN=${1:-GCC151} +declare -r MYTOOLCHAIN=${1:-GCC152} TOOLCHAIN_DIR=${TOOLCHAIN_DIR:-"$CLOVERROOT/toolchain"}