From 37186b7cfaf16ee3501734382256ee7d884308b3 Mon Sep 17 00:00:00 2001 From: Colin Finck Date: Thu, 24 Jun 2021 19:00:18 +0200 Subject: [PATCH 1/5] [ROSBE-UNIX] Prepare for RosBE-Unix 2.3 --- RosBE-Unix/Base-i386/RosBE-Builder.sh | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/RosBE-Unix/Base-i386/RosBE-Builder.sh b/RosBE-Unix/Base-i386/RosBE-Builder.sh index a607e01..5a31b9e 100755 --- a/RosBE-Unix/Base-i386/RosBE-Builder.sh +++ b/RosBE-Unix/Base-i386/RosBE-Builder.sh @@ -1,10 +1,10 @@ #!/usr/bin/env bash # -# ReactOS Build Environment for Unix-based Operating Systems - Builder Tool for the Base package -# Copyright 2007-2020 Colin Finck +# ReactOS Build Environment for Unix-based Operating Systems - Builder Tool for the base package and i386 compiler +# Copyright 2007-2021 Colin Finck # partially based on the BuildMingwCross script (http://www.mingw.org/MinGWiki/index.php/BuildMingwCross) # -# Released under GNU GPL v2 or any later version. +# Released under GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) if [ -z "$BASH_VERSION" ]; then exec bash "$0" @@ -37,7 +37,7 @@ rs_sourcedir="$rs_scriptdir/sources" # RosBE-Unix Constants DEFAULT_INSTALL_DIR="/usr/local/RosBE" -ROSBE_VERSION="2.2.1" +ROSBE_VERSION="2.3" TARGET_ARCH="i386" source "$rs_scriptdir/scripts/rosbelibrary.sh" @@ -46,15 +46,15 @@ source "$rs_scriptdir/scripts/setuplibrary.sh" echo "*******************************************************************************" echo "* ReactOS Build Environment for Unix-based Operating Systems *" -echo "* Builder Tool for the Base package *" +echo "* Builder Tool for the Base package and i386 compiler *" echo "* by Colin Finck *" echo "* *" -echo "* Version $ROSBE_VERSION *" +echo "* Version $ROSBE_VERSION *" echo "*******************************************************************************" echo echo "This script compiles and installs a complete Build Environment for building" -echo "ReactOS." +echo "ReactOS for i386 (x86) processors." echo if [ "$1" = "-h" ] || [ "$1" = "-?" ] || [ "$1" = "--help" ]; then @@ -77,9 +77,6 @@ fi rs_check_requirements -reinstall=false -update=false - # Select the installation directory rs_boldmsg "Installation Directory" From b64d71cc1ecfd6cda813d9045c7585bc5065ca8b Mon Sep 17 00:00:00 2001 From: Colin Finck Date: Thu, 24 Jun 2021 19:01:30 +0200 Subject: [PATCH 2/5] [ROSBE-UNIX] Add an extra script for building the amd64 compiler. --- RosBE-Unix/Base-i386/RosBE-Builder-amd64.sh | 264 ++++++++++++++++++ RosBE-Unix/Base-i386/RosBE-Builder.sh | 3 +- RosBE-Unix/Base-i386/scripts/amd64/version.sh | 8 + 3 files changed, 274 insertions(+), 1 deletion(-) create mode 100755 RosBE-Unix/Base-i386/RosBE-Builder-amd64.sh create mode 100755 RosBE-Unix/Base-i386/scripts/amd64/version.sh diff --git a/RosBE-Unix/Base-i386/RosBE-Builder-amd64.sh b/RosBE-Unix/Base-i386/RosBE-Builder-amd64.sh new file mode 100755 index 0000000..7d8a058 --- /dev/null +++ b/RosBE-Unix/Base-i386/RosBE-Builder-amd64.sh @@ -0,0 +1,264 @@ +#!/usr/bin/env bash +# +# ReactOS Build Environment for Unix-based Operating Systems - Builder Tool for the amd64 compiler add-on +# Copyright 2021 Colin Finck +# +# Released under GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) + +if [ -z "$BASH_VERSION" ]; then + exec bash "$0" +fi + +# RosBE Setup Variables +rs_host_cc="${CC:-gcc}" +rs_host_cflags="${CFLAGS:--pipe -O2 -g0 -march=native}" +rs_host_cxx="${CXX:-g++}" +rs_host_cxxflags="${CXXFLAGS:-$rs_host_cflags}" +rs_needed_tools="as bzip2 find $CC $CXX grep m4 makeinfo python tar" # GNU Make has a special check +rs_needed_libs="zlib" +rs_target="x86_64-w64-mingw32" +rs_target_cflags="-pipe -O2 -Wl,-S -g0" +rs_target_cxxflags="$rs_target_cflags" + +# This is a cross-compiler with prefix. +rs_target_tool_prefix="${rs_target}-" + +export CC="$rs_host_cc" +export CFLAGS="$rs_host_cflags" +export CXX="$rs_host_cxx" +export CXXFLAGS="$rs_host_cxxflags" + +# Get the absolute path to the script directory +cd `dirname $0` +rs_scriptdir="$PWD" +rs_workdir="$rs_scriptdir/sources" +rs_sourcedir="$rs_scriptdir/sources" + +# RosBE-Unix Constants +DEFAULT_INSTALL_DIR="/usr/local/RosBE" +ROSBE_VERSION="2.3" +TARGET_ARCH="amd64" + +source "$rs_scriptdir/scripts/rosbelibrary.sh" +source "$rs_scriptdir/scripts/setuplibrary.sh" + + +echo "*******************************************************************************" +echo "* ReactOS Build Environment for Unix-based Operating Systems *" +echo "* Builder Tool for the amd64 compiler add-on *" +echo "* by Colin Finck *" +echo "* *" +echo "* Version $ROSBE_VERSION *" +echo "*******************************************************************************" + +echo +echo "This script compiles and installs the optional compiler add-on for building" +echo "ReactOS for amd64 (x86_64) processors." +echo + +if [ "$1" = "-h" ] || [ "$1" = "-?" ] || [ "$1" = "--help" ]; then + echo "Syntax: ./RosBE-Builder-amd64.sh [installdir]" + echo + echo " installdir - Optional parameter to specify the installation directory and" + echo " perform an unattended installation." + echo " This directory must contain a ReactOS Build Environment" + echo " installation of the same version (created by" + echo " ./RosBE-Builder.sh)" + echo + echo "Usually, you just call the script without any parameters and it will guide you" + echo "through all possible installation options." + exit 0 +fi + +# Only check for root on an interactive installation. +if [ "$1" = "" ]; then + check_root +fi + +rs_check_requirements + +# Select the installation directory +rs_boldmsg "Installation Directory" + +if [ "$1" = "" ]; then + installdir="" + + echo "Where is your ReactOS Build Environment installation?" + echo "Enter the path to the directory here or simply press ENTER to accept the default directory." + + while [ "$installdir" = "" ]; do + read -p "[$DEFAULT_INSTALL_DIR] " installdir + echo + + if [ "$installdir" = "" ]; then + installdir=$DEFAULT_INSTALL_DIR + fi + + # Make sure we have the absolute path to the installation directory + installdir=`eval echo $installdir` + + # Check if the installation directory is valid and points to the same RosBE version + installed_rosbe_version=`cat $installdir/RosBE-Version 2>/dev/null` + if [ "$installed_rosbe_version" = "" ]; then + echo "The directory \"$installdir\" does not contain a ReactOS Build Environment installation." + echo "Please enter another directory." + echo + installdir="" + elif [ "$installed_rosbe_version" != "$ROSBE_VERSION" ]; then + echo "The installed ReactOS Build Environment version ($installed_rosbe_version) does not match" + echo "the version of this add-on ($ROSBE_VERSION)." + echo "Please install the proper base package first or enter another directory." + echo + installdir="" + fi + done + + # Ready to start + rs_boldmsg "Ready to start" + + echo "Ready to build and install this ReactOS Build Environment add-on." + echo "Press Return to continue or Ctrl+C to exit." + read +else + installdir=`eval echo $1` + installed_rosbe_version=`cat $installdir/RosBE-Version 2>/dev/null` + + if [ "$installed_rosbe_version" != "$ROSBE_VERSION" ]; then + rs_redmsg "Installation directory \"$installdir\" contains ReactOS Build Environment version $installed_rosbe_version," + rs_redmsg "which doesn't match the version of this add-on ($ROSBE_VERSION). Aborted." + exit 1 + fi + + echo "Using \"$installdir\"" + echo +fi + +rs_process_binutils=true +rs_process_gcc=true +rs_process_mingw_w64=true + +rs_prefixdir="$installdir" +rs_archprefixdir="$installdir/$TARGET_ARCH" + +##### BEGIN almost shared buildtoolchain/RosBE-Unix building part ############# +rs_boldmsg "Building..." + +mkdir -p "$rs_archprefixdir/$rs_target" + +echo "Using CFLAGS=\"$CFLAGS\"" +echo "Using CXXFLAGS=\"$CXXFLAGS\"" +echo + +rs_cpucount=`$rs_prefixdir/bin/cpucount -x1` + +if rs_prepare_module "binutils"; then + rs_do_command ../binutils/configure --prefix="$rs_archprefixdir" --target="$rs_target" --with-sysroot="$rs_archprefixdir" --disable-multilib --disable-werror --enable-lto --enable-plugins --with-zlib=yes --disable-nls + rs_do_command $rs_makecmd -j $rs_cpucount + rs_do_command $rs_makecmd install + rs_clean_module "binutils" +fi + +if rs_prepare_module "mingw_w64"; then + rs_do_command ../mingw_w64/mingw-w64-headers/configure --prefix="$rs_archprefixdir/$rs_target" --host="$rs_target" + rs_do_command $rs_makecmd -j $rs_cpucount + rs_do_command $rs_makecmd install + rs_do_command ln -s -f $rs_archprefixdir/$rs_target $rs_archprefixdir/mingw + rs_clean_module "mingw_w64" +fi + +if rs_prepare_module "gcc"; then + rs_extract_module gmp $PWD/../gcc + rs_extract_module mpc $PWD/../gcc + rs_extract_module mpfr $PWD/../gcc + + cd ../gcc-build + + export CFLAGS_FOR_TARGET="$rs_target_cflags" + export CXXFLAGS_FOR_TARGET="$rs_target_cxxflags" + + rs_do_command ../gcc/configure --prefix="$rs_archprefixdir" --target="$rs_target" --with-sysroot="$rs_archprefixdir" --with-pkgversion="RosBE-Unix" --enable-languages=c,c++ --enable-fully-dynamic-string --enable-version-specific-runtime-libs --disable-shared --disable-multilib --disable-nls --disable-werror --disable-win32-registry --enable-sjlj-exceptions --disable-libstdcxx-verbose + rs_do_command $rs_makecmd -j $rs_cpucount all-gcc + rs_do_command $rs_makecmd install-gcc + rs_do_command $rs_makecmd install-lto-plugin + + if rs_prepare_module "mingw_w64"; then + export AR="$rs_archprefixdir/bin/${rs_target_tool_prefix}ar" + export AS="$rs_archprefixdir/bin/${rs_target_tool_prefix}as" + export CC="$rs_archprefixdir/bin/${rs_target_tool_prefix}gcc" + export CFLAGS="$rs_target_cflags" + export CXX="$rs_archprefixdir/bin/${rs_target_tool_prefix}g++" + export CXXFLAGS="$rs_target_cxxflags" + export DLLTOOL="$rs_archprefixdir/bin/${rs_target_tool_prefix}dlltool" + export RANLIB="$rs_archprefixdir/bin/${rs_target_tool_prefix}ranlib" + export STRIP="$rs_archprefixdir/bin/${rs_target_tool_prefix}strip" + + rs_do_command ../mingw_w64/mingw-w64-crt/configure --prefix="$rs_archprefixdir/$rs_target" --host="$rs_target" --with-sysroot="$rs_archprefixdir" + rs_do_command $rs_makecmd -j $rs_cpucount + rs_do_command $rs_makecmd install + rs_clean_module "mingw_w64" + + unset AR + unset AS + export CC="$rs_host_cc" + export CFLAGS="$rs_host_cflags" + export CXX="$rs_host_cxx" + export CXXFLAGS="$rs_host_cxxflags" + unset DLLTOOL + unset RANLIB + unset STRIP + fi + + cd "$rs_workdir/gcc-build" + rs_do_command $rs_makecmd -j $rs_cpucount + rs_do_command $rs_makecmd install + rs_clean_module "gcc" + + unset CFLAGS_FOR_TARGET + unset CXXFLAGS_FOR_TARGET +fi + +# Final actions +echo +rs_boldmsg "Final actions" + +echo "Removing unneeded files..." +cd "$rs_archprefixdir" +rm -rf $rs_target/doc $rs_target/share include info man mingw share +rm -f lib/* >& /dev/null +##### END almost shared buildtoolchain/RosBE-Unix building part ############### + +# See: https://jira.reactos.org/browse/ROSBE-35 +osname=`uname` +if [ "$osname" != "Darwin" ]; then + echo "Removing debugging symbols..." + cd "$rs_archprefixdir" + for exe in `find -executable -type f -print`; do + objcopy --only-keep-debug $exe $exe.dbg 2>/dev/null + objcopy --strip-debug $exe 2>/dev/null + objcopy --add-gnu-debuglink=$exe.dbg $exe 2>/dev/null + done + + # Executables are created for the host system while most libraries are linked to target components + for exe in `find -name "*.a" -type f -print`; do + $rs_archprefixdir/bin/${rs_target_tool_prefix}objcopy --only-keep-debug $exe $exe.dbg 2>/dev/null + $rs_archprefixdir/bin/${rs_target_tool_prefix}objcopy --strip-debug $exe 2>/dev/null + $rs_archprefixdir/bin/${rs_target_tool_prefix}objcopy --add-gnu-debuglink=$exe.dbg $exe 2>/dev/null + done + + for exe in `find -name "*.o" -type f -print`; do + $rs_archprefixdir/bin/${rs_target_tool_prefix}objcopy --only-keep-debug $exe $exe.dbg 2>/dev/null + $rs_archprefixdir/bin/${rs_target_tool_prefix}objcopy --strip-debug $exe 2>/dev/null + $rs_archprefixdir/bin/${rs_target_tool_prefix}objcopy --add-gnu-debuglink=$exe.dbg $exe 2>/dev/null + done +fi + +echo "Copying scripts..." +cp "$rs_scriptdir/scripts/amd64/"* "$installdir/amd64" +echo + +# Finish +rs_boldmsg "Finished successfully!" +echo "You can switch to the amd64 compiler within the Build Environment by typing:" +echo +echo " charch amd64" +echo diff --git a/RosBE-Unix/Base-i386/RosBE-Builder.sh b/RosBE-Unix/Base-i386/RosBE-Builder.sh index 5a31b9e..ab3582f 100755 --- a/RosBE-Unix/Base-i386/RosBE-Builder.sh +++ b/RosBE-Unix/Base-i386/RosBE-Builder.sh @@ -313,7 +313,8 @@ if [ "$osname" != "Darwin" ]; then fi echo "Copying scripts..." -cp -R "$rs_scriptdir/scripts/"* "$installdir" +cp "$rs_scriptdir/scripts/"* "$installdir" 2>/dev/null +cp "$rs_scriptdir/scripts/i386/"* "$installdir/i386" echo "Writing version..." echo "$ROSBE_VERSION" > "$installdir/RosBE-Version" diff --git a/RosBE-Unix/Base-i386/scripts/amd64/version.sh b/RosBE-Unix/Base-i386/scripts/amd64/version.sh new file mode 100755 index 0000000..05c8cde --- /dev/null +++ b/RosBE-Unix/Base-i386/scripts/amd64/version.sh @@ -0,0 +1,8 @@ +# Show the amd64 tool versions +# Part of RosBE for Unix-based Operating Systems +# Copyright 2021 Colin Finck +# +# Released under GPL-2.0-or-later (https://spdx.org/licenses/GPL-2.0-or-later) + +x86_64-w64-mingw32-gcc -v 2>&1 | grep "gcc version" +x86_64-w64-mingw32-ld -v From 4aac98dabaf7e8dc0a99941ec1b76378aa46839b Mon Sep 17 00:00:00 2001 From: Colin Finck Date: Thu, 24 Jun 2021 19:09:05 +0200 Subject: [PATCH 3/5] [ROSBE-UNIX] Update README files for 2.3 --- RosBE-Unix/Base-i386/README | 26 +++++++++++++++++++------- RosBE-Unix/Base-i386/README.odt | Bin 87273 -> 88629 bytes 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/RosBE-Unix/Base-i386/README b/RosBE-Unix/Base-i386/README index 085ac8c..7487c6f 100644 --- a/RosBE-Unix/Base-i386/README +++ b/RosBE-Unix/Base-i386/README @@ -1,6 +1,6 @@ ReactOS Build Environment - Version 2.2.1 for Unix-based operating systems - Base package and i386 build tools + Version 2.3 for Unix-based operating systems + Base package with i386 and amd64 compilers Introduction ------------- @@ -51,8 +51,8 @@ system. They are needed to build the ReactOS Build Environment. The example for Debian-based Linux distributions is "zlib1g-dev". -Installation -------------- +Installation of the Base package and i386 compiler +--------------------------------------------------- The Installation of RosBE is very simple as there are scripts that do most of the work for you. Follow these steps to compile and install RosBE for your operating system: @@ -75,6 +75,15 @@ operating system: the shortcut. +Installation of the amd64 compiler +----------------------------------- + The amd64 compiler can only be installed after you have installed the Base +package and i386 compiler. + When this is done, just run "sudo ./RosBE-Builder-amd64.sh" and follow the +instructions. The same options and variables can be used as for the base +installation script. + + Uninstallation --------------- If you want to uninstall RosBE, just delete the entire installation directory @@ -86,8 +95,10 @@ Version Information This version of RosBE for Unix-based operating systems uses the following components: - * GNU Binutils v2.34 + * GNU Binutils v2.36.1 compiled for i686-w64-mingw32 + patched with: + - https://raw.githubusercontent.com/reactos/RosBE/f9e43c3b01dcbd507e5b1454f654f4493955b131/Patches/binutils-2.36.1-jerome-gardou-optional-code-argument.patch * GCC, The GNU Compiler Collection v8.4.0 compiled for i686-w64-mingw32 @@ -109,7 +120,8 @@ components: * Mingw-w64 6.0.0 * MPC 1.1.0 * MPFR 4.0.2 - * Ninja 1.10.0 + * Ninja 1.10.2-ReactOS + (revision b661be7af3f98bd9a29caa7b35702bd5248f8ed8 from https://github.com/reactos/ninja/tree/ninja-1.10.2-reactos) Tested Operating Systems @@ -117,7 +129,7 @@ Tested Operating Systems The Build Environment has been designed to work on all Unix-based operating systems. Nevertheless, it is impossible to test it on all possible systems out there. - The current primary development and test system is Ubuntu 18.04. But users + The current primary development and test system is Ubuntu 20.04. But users also reported that it works well under other Linux systems such as Fedora or openSUSE and Unix derivates like FreeBSD or macOS. You should be able to compile the build tools on both i386 (32-bit) and diff --git a/RosBE-Unix/Base-i386/README.odt b/RosBE-Unix/Base-i386/README.odt index f44d0181652ecfafbc807aee992f7311b4fe583c..d5019e71ef87f87a22b4afdeaeed10753e9e9315 100644 GIT binary patch delta 26093 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 From c6ea52cfd5d163fd89e655953d2c1f46c02ffcc7 Mon Sep 17 00:00:00 2001 From: chirsz-ever Date: Fri, 5 Mar 2021 02:24:46 +0800 Subject: [PATCH 4/5] [ROSBE-UNIX] Use printf command to format output. --- RosBE-Unix/Base-i386/RosBE-Builder-amd64.sh | 2 +- RosBE-Unix/Base-i386/RosBE-Builder.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/RosBE-Unix/Base-i386/RosBE-Builder-amd64.sh b/RosBE-Unix/Base-i386/RosBE-Builder-amd64.sh index 7d8a058..6ed2fe6 100755 --- a/RosBE-Unix/Base-i386/RosBE-Builder-amd64.sh +++ b/RosBE-Unix/Base-i386/RosBE-Builder-amd64.sh @@ -48,7 +48,7 @@ echo "* ReactOS Build Environment for Unix-based Operating Systems echo "* Builder Tool for the amd64 compiler add-on *" echo "* by Colin Finck *" echo "* *" -echo "* Version $ROSBE_VERSION *" +printf "* Version %-8s *\n" $ROSBE_VERSION echo "*******************************************************************************" echo diff --git a/RosBE-Unix/Base-i386/RosBE-Builder.sh b/RosBE-Unix/Base-i386/RosBE-Builder.sh index ab3582f..ffcc9aa 100755 --- a/RosBE-Unix/Base-i386/RosBE-Builder.sh +++ b/RosBE-Unix/Base-i386/RosBE-Builder.sh @@ -49,7 +49,7 @@ echo "* ReactOS Build Environment for Unix-based Operating Systems echo "* Builder Tool for the Base package and i386 compiler *" echo "* by Colin Finck *" echo "* *" -echo "* Version $ROSBE_VERSION *" +printf "* Version %-8s *\n" $ROSBE_VERSION echo "*******************************************************************************" echo From c95179df457ee430d09729af917321bf96eadb0a Mon Sep 17 00:00:00 2001 From: Colin Finck Date: Sat, 26 Jun 2021 08:46:19 +0200 Subject: [PATCH 5/5] [ROSBE-UNIX] Apply c6ea52cfd5d163fd89e655953d2c1f46c02ffcc7 to RosBE.sh as well --- RosBE-Unix/Base-i386/scripts/RosBE.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/RosBE-Unix/Base-i386/scripts/RosBE.sh b/RosBE-Unix/Base-i386/scripts/RosBE.sh index 4862a37..0a066dc 100755 --- a/RosBE-Unix/Base-i386/scripts/RosBE.sh +++ b/RosBE-Unix/Base-i386/scripts/RosBE.sh @@ -46,7 +46,7 @@ echo "************************************************************************** echo "* ReactOS Build Environment for Unix-based Operating Systems *" echo "* by Colin Finck *" echo "* *" -echo "* Version $_ROSBE_VERSION *" +printf "* Version %-8s *\n" $_ROSBE_VERSION echo "*******************************************************************************" echo echo "For a list of all included commands, type: \"help\""