My RosBE-Unix 2.0-RC1 changes. Don't ask me why I haven't committed them yet...

In some details:
- Add CMake, update GMP and Make, remove NASM.
- Strip off all debugging symbols from the built components.
- Remove all RBuild-specific quirks. This simplifies many scripts :-)

svn path=/trunk/RosBE/; revision=1345
This commit is contained in:
Colin Finck 2011-12-05 21:40:23 +00:00
parent 83cc893416
commit 4119fa38bb
12 changed files with 103 additions and 111 deletions

View File

@ -1,5 +1,5 @@
ReactOS Build Environment
Version 1.5 for Unix-based operating systems
Version 2.0 for Unix-based operating systems
Base package and i386 build tools
by Colin Finck (colin@reactos.org)
@ -103,9 +103,13 @@ Version Information
This version of RosBE for Unix-based operating systems uses the following
components:
* GNU Binutils v2.20-20091222 (snapshot)
* GNU Binutils v2.20.51-20091222 (snapshot)
compiled for mingw32
* CMake 2.8.5
patched with:
- http://svn.reactos.org/project-tools/trunk/RosBE/Patches/CMake-jgardou-changes-against-2.8.5.patch?p=1320
* GCC, The GNU Compiler Collection v4.4.3
compiled for mingw32
patched with:
@ -114,9 +118,16 @@ components:
NOTE: This GCC version only supports C and C++
* Make 20071219 (CVS version)
* GMP 5.0.2
patched with:
- http://svn.reactos.org/project-tools/trunk/RosBE/Patches/GMP-OSX-10.7-fixes-against-5.0.2.patch?p=1322
* Make 3.82
patched with:
- http://svn.reactos.org/project-tools/trunk/RosBE/Patches/Make-Windows-jobserver-against-3.8.2.patch?p=1321
* MinGW-Runtime 3.17
* NASM, The Netwide assembler v2.07
* MPFR 3.0.1
* W32api 3.14
@ -140,14 +151,20 @@ http://www.mingw.org
Binutils, the Binary Tools Collection
http://www.gnu.org/software/binutils
CMake, Cross Platform Make
http://www.cmake.org
GCC, the GNU Compiler Collection
http://www.gcc.org
GMP, the GNU MP Bignum library
http://www.gmplib.org
Make, the Makefile processor
http://www.gnu.org/software/make
NASM, the Netwide Assembler
http://nasm.sourceforge.net
The GNU MPFR library
http://www.mpfr.org
Credits
@ -155,9 +172,9 @@ Credits
Colin Finck (colin@reactos.org)
Thanks go also to the members of the RosBE-Windows team, namely:
Daniel Reimer (reimer.daniel@freenet.de)
Daniel Reimer (daniel.reimer@reactos.org)
Peter Ward (dralnix@gmail.com)
Pierre Schweitzer (heis_spiter@hotmail.com)
Pierre Schweitzer (pierre.schweitzer@reactos.org)
Special thanks to ROSFan, who created the nice ReactOS Build Environment
Logo.

Binary file not shown.

View File

@ -1,7 +1,7 @@
#!/bin/bash
#
# ReactOS Build Environment for Unix-based Operating Systems - Builder Tool for the Base package
# Copyright 2007-2010 Colin Finck <colin@reactos.org>
# Copyright 2007-2011 Colin Finck <colin@reactos.org>
# partially based on the BuildMingwCross script (http://www.mingw.org/MinGWiki/index.php/BuildMingwCross)
#
# Released under GNU GPL v2 or any later version.
@ -11,7 +11,7 @@
rs_host_cflags="-pipe -O2"
rs_needed_tools="bison flex gcc g++ grep makeinfo" # GNU Make has a special check
rs_target="mingw32"
rs_target_cflags="-pipe -gstabs+ -O2 -march=pentium -mtune=i686"
rs_target_cflags="-pipe -O2 -march=pentium -mtune=i686"
# Get the absolute path to the script directory
cd `dirname $0`
@ -21,8 +21,8 @@ rs_sourcedir="$rs_scriptdir/sources"
# RosBE-Unix Constants
DEFAULT_INSTALL_DIR="/usr/local/RosBE"
KNOWN_ROSBE_VERSIONS="0.3.6 1.1 1.4 1.4.2 1.5"
ROSBE_VERSION="1.5"
KNOWN_ROSBE_VERSIONS="0.3.6 1.1 1.4 1.4.2 1.5 2.0"
ROSBE_VERSION="2.0"
TARGET_ARCH="i386"
source "$rs_scriptdir/scripts/rosbelibrary.sh"
@ -184,20 +184,19 @@ else
fi
if $update; then
# No update supported for RosBE-Unix 1.5 due to lots of changes.
# No update supported for RosBE-Unix 2.0 due to lots of changes.
# Add this part back from older versions once we need to update again.
exit 1
else
rs_process_binutils=true
rs_process_buildtime=true
rs_process_cmake=true
rs_process_cpucount=true
rs_process_gcc=true
rs_process_getincludes=true
rs_process_gmp=true
rs_process_make=true
rs_process_mingw_runtime_dev=true
rs_process_mpfr=true
rs_process_nasm=true
rs_process_scut=true
rs_process_w32api=true
@ -216,15 +215,16 @@ if [ ! -w "$installdir" ]; then
exit 1
fi
rs_prefixdir="$installdir/$TARGET_ARCH"
rs_prefixdir="$installdir"
rs_archprefixdir="$installdir/$TARGET_ARCH"
rs_supportprefixdir="$installdir/support"
rs_mkdir_if_not_exists "$installdir/bin"
##### BEGIN almost shared buildtoolchain/RosBE-Unix building part #############
rs_boldmsg "Building..."
rs_mkdir_if_not_exists "$rs_prefixdir/$rs_target"
rs_mkdir_if_not_exists "$rs_prefixdir/bin"
rs_mkdir_if_not_exists "$rs_archprefixdir/$rs_target"
rs_mkdir_if_not_exists "$rs_supportprefixdir"
# Use -march=native if the host compiler supports it
@ -238,39 +238,50 @@ else
echo "no"
fi
rs_extract_module "mingw_runtime_dev" "$rs_prefixdir/$rs_target"
rs_extract_module "w32api" "$rs_prefixdir/$rs_target"
rs_extract_module "mingw_runtime_dev" "$rs_archprefixdir/$rs_target"
rs_extract_module "w32api" "$rs_archprefixdir/$rs_target"
if $rs_process_buildtime; then
rs_do_command gcc -s -o "$installdir/bin/buildtime" "$rs_scriptdir/tools/buildtime.c"
rs_do_command gcc -s -o "$rs_prefixdir/bin/buildtime" "$rs_scriptdir/tools/buildtime.c"
fi
if $rs_process_cpucount; then
rs_do_command gcc -s -o "$installdir/bin/cpucount" "$rs_scriptdir/tools/cpucount.c"
rs_do_command gcc -s -o "$rs_prefixdir/bin/cpucount" "$rs_scriptdir/tools/cpucount.c"
fi
rs_cpucount=`$installdir/bin/cpucount -x1`
if $rs_process_getincludes; then
rs_do_command gcc -s -o "$installdir/bin/getincludes" "$rs_scriptdir/tools/getincludes.c"
fi
rs_cpucount=`$rs_prefixdir/bin/cpucount -x1`
if $rs_process_scut; then
rs_do_command gcc -s -o "$installdir/bin/scut" "$rs_scriptdir/tools/scut.c"
rs_do_command gcc -s -o "$rs_prefixdir/bin/scut" "$rs_scriptdir/tools/scut.c"
fi
if rs_prepare_module "cmake"; then
export CFLAGS="$rs_host_cflags"
rs_do_command ../cmake/bootstrap --prefix="$rs_prefixdir" --parallel=$rs_cpucount
rs_do_command $rs_makecmd -j $rs_cpucount
rs_do_command $rs_makecmd install
rs_clean_module "cmake"
unset CFLAGS
fi
if rs_prepare_module "gmp"; then
rs_do_command ../gmp/configure --prefix="$rs_supportprefixdir" --disable-shared --disable-werror
export CFLAGS="$rs_host_cflags"
rs_do_command ../gmp/configure ABI=$rs_abi --prefix="$rs_supportprefixdir" --disable-shared --disable-werror
rs_do_command $rs_makecmd -j $rs_cpucount
rs_do_command $rs_makecmd check
rs_do_command $rs_makecmd install
rs_clean_module "gmp"
unset CFLAGS
fi
if rs_prepare_module "mpfr"; then
export CFLAGS="$rs_host_cflags"
rs_do_command ../mpfr/configure --prefix="$rs_supportprefixdir" --with-gmp="$rs_supportprefixdir" --disable-shared
rs_do_command ../mpfr/configure --prefix="$rs_supportprefixdir" --with-gmp="$rs_supportprefixdir" --disable-shared --disable-werror
rs_do_command $rs_makecmd -j $rs_cpucount
rs_do_command $rs_makecmd check
rs_do_command $rs_makecmd install
@ -282,7 +293,7 @@ fi
if rs_prepare_module "binutils"; then
export CFLAGS="$rs_host_cflags"
rs_do_command ../binutils/configure --prefix="$rs_prefixdir" --target="$rs_target" --disable-nls --disable-werror
rs_do_command ../binutils/configure --prefix="$rs_archprefixdir" --target="$rs_target" --disable-nls --disable-werror
rs_do_command $rs_makecmd -j $rs_cpucount
rs_do_command $rs_makecmd install
rs_clean_module "binutils"
@ -295,7 +306,7 @@ if rs_prepare_module "gcc"; then
export CFLAGS_FOR_TARGET="$rs_target_cflags"
export CXXFLAGS_FOR_TARGET="$rs_target_cflags"
rs_do_command ../gcc/configure --prefix="$rs_prefixdir" --target="$rs_target" --with-gmp="$rs_supportprefixdir" --with-mpfr="$rs_supportprefixdir" --with-pkgversion="RosBE-Unix" --enable-languages=c,c++ --enable-checking=release --enable-version-specific-runtime-libs --disable-shared --disable-nls --disable-werror
rs_do_command ../gcc/configure --prefix="$rs_archprefixdir" --target="$rs_target" --with-gmp="$rs_supportprefixdir" --with-mpfr="$rs_supportprefixdir" --with-pkgversion="RosBE-Unix" --enable-languages=c,c++ --enable-checking=release --enable-version-specific-runtime-libs --disable-shared --disable-nls --disable-werror
rs_do_command $rs_makecmd -j $rs_cpucount
rs_do_command $rs_makecmd install
rs_clean_module "gcc"
@ -308,7 +319,7 @@ fi
if rs_prepare_module "make"; then
export CFLAGS="$rs_host_cflags"
rs_do_command ../make/configure --prefix="$installdir" --disable-dependency-tracking --disable-nls --enable-case-insensitive-file-system --disable-job-server --disable-rpath --disable-werror
rs_do_command ../make/configure --prefix="$rs_prefixdir" --disable-nls --disable-werror
rs_do_command $rs_makecmd -j $rs_cpucount
rs_do_command $rs_makecmd install
rs_clean_module "make"
@ -316,34 +327,29 @@ if rs_prepare_module "make"; then
unset CFLAGS
fi
# NASM doesn't compile in a dedicated build directory, so just extract it
if rs_extract_module "nasm" "$rs_workdir"; then
export CFLAGS="$rs_host_cflags"
cd "nasm"
rs_do_command ./configure --prefix="$rs_prefixdir"
rs_do_command $rs_makecmd -j $rs_cpucount
rs_do_command $rs_makecmd install
rs_clean_module "nasm"
unset CFLAGS
fi
# Final actions
echo
rs_boldmsg "Final actions"
cd "$installdir"
echo "Removing unneeded files..."
rm -rf share
rm -rf $rs_prefixdir/include $rs_prefixdir/info $rs_prefixdir/man $rs_prefixdir/share
rm -f $rs_prefixdir/lib/* >& /dev/null
cd "$rs_prefixdir"
rm -rf doc man share/info share/man
cd "$rs_archprefixdir"
rm -rf $rs_target/doc $rs_target/share include info man share
rm -f lib/* >& /dev/null
# Keep the "include" and "lib" directories of the support files in case a subsequent RosBE-Unix package needs them
rm -rf $rs_supportprefixdir/info $rs_supportprefixdir/share
cd "$rs_supportprefixdir"
rm -rf info share
echo "Removing debugging symbols..."
cd "$rs_prefixdir"
find -executable -type f -exec strip -s {} ";" >& /dev/null
# Executables are created for the host system while most libraries are linked to target components
find -name "*.a" -type f -exec "$rs_archprefixdir/bin/mingw32-strip" -d {} ";" >& /dev/null
find -name "*.o" -type f -exec "$rs_archprefixdir/bin/mingw32-strip" -d {} ";" >& /dev/null
##### END almost shared buildtoolchain/RosBE-Unix building part ###############

View File

@ -2,7 +2,7 @@
#
# Script for initializing RosBE
# Part of RosBE for Unix-based Operating Systems
# Copyright 2007-2010 Colin Finck <colin@reactos.org>
# Copyright 2007-2011 Colin Finck <colin@reactos.org>
#
# Released under GNU GPL v2 or any later version.
@ -22,10 +22,6 @@ export CFLAGS=
export CXXFLAGS=
export LDFLAGS=
# Export the host compiler search pathes to make them available for other build tools
export ROSBE_HOST_CFLAGS=`cpp -x c -v < /dev/null 2>&1 | $_ROSBE_ROSSCRIPTDIR/bin/getincludes`
export ROSBE_HOST_CXXFLAGS=`cpp -x c++ -v < /dev/null 2>&1 | $_ROSBE_ROSSCRIPTDIR/bin/getincludes`
# Read the RosBE version
# The file "RosBE-Version" has been created by the RosBE-Builder.sh script
export _ROSBE_VERSION=`cat "$_ROSBE_ROSSCRIPTDIR/RosBE-Version"`

View File

@ -2,11 +2,9 @@
#
# Detects the CPU cores in your system and builds ReactOS with this number of threads
# Part of RosBE for Unix-based Operating Systems
# Copyright 2007-2009 Colin Finck <mail@colinfinck.de>
# Copyright 2007-2011 Colin Finck <colin@reactos.org>
#
# Released under GNU GPL v2 or any later version.
source "$_ROSBE_ROSSCRIPTDIR/build-shared.sh"
CPUCOUNT=`cpucount -x1`
buildtime make -j $CPUCOUNT $*

View File

@ -1,18 +0,0 @@
# Shared functions for build.sh and build-multi.sh
# Part of RosBE for Unix-based Operating Systems
# Copyright 2007-2009 Colin Finck <mail@colinfinck.de>
#
# Released under GNU GPL v2 or any later version.
# Check if config.template.rbuild is newer than config.rbuild
# If it is then abort the build and inform the user.
if [ -f "$_ROSBE_ROSSOURCEDIR/config.rbuild" ]; then
if [ "$_ROSBE_ROSSOURCEDIR/config.template.rbuild" -nt "$_ROSBE_ROSSOURCEDIR/config.rbuild" ]; then
echo
echo "*** config.template.rbuild is newer than config.rbuild ***"
echo "*** aborting build. Please check for changes and ***"
echo "*** update your config.rbuild. ***"
exit 1
fi
fi

View File

@ -2,10 +2,8 @@
#
# Builds ReactOS with one thread
# Part of RosBE for Unix-based Operating Systems
# Copyright 2007-2009 Colin Finck <mail@colinfinck.de>
# Copyright 2007-2011 Colin Finck <colin@reactos.org>
#
# Released under GNU GPL v2 or any later version.
source "$_ROSBE_ROSSCRIPTDIR/build-shared.sh"
buildtime make $*

View File

@ -2,26 +2,16 @@
#
# Script for cleaning the ReactOS source directory
# Part of RosBE for Unix-based Operating Systems
# Copyright 2007-2010 Colin Finck <colin@reactos.org>
# Copyright 2007-2011 Colin Finck <colin@reactos.org>
#
# Released under GNU GPL v2 or any later version.
# Check if the user set any custom filenames or pathes, otherwise locally set the appropriate variables.
ROS_AUTOMAKE="${ROS_AUTOMAKE:-makefile-$ROS_ARCH.auto}"
ROS_INTERMEDIATE="${ROS_INTERMEDIATE:-obj-$ROS_ARCH}"
ROS_OUTPUT="${ROS_OUTPUT:-output-$ROS_ARCH}"
ROS_CDOUTPUT="${ROS_CDOUTPUT:-reactos.}"
# We only care about cleaning the default output directory, if any
REACTOS_OUTPUT_PATH="output-MinGW-$ROS_ARCH"
# Do some basic sanity checks to verify that we are working in a ReactOS source tree.
# Consider that we also want to clean half-complete builds, so don't depend on too many existing files.
if [ -d "$ROS_INTERMEDIATE" ] && [ -d "$ROS_OUTPUT" ]; then
if [ -d "$REACTOS_OUTPUT_PATH" ]; then
echo "Cleaning ReactOS $ROS_ARCH source directory..."
rm -f "$ROS_AUTOMAKE"
rm -rf "$ROS_INTERMEDIATE"
rm -rf "$ROS_OUTPUT"
rm -rf "$ROS_CDOUTPUT"
rm -rf "$REACTOS_OUTPUT_PATH"
echo "Done cleaning ReactOS $ROS_ARCH source directory."
else
echo "ERROR: This directory contains no $ROS_ARCH compiler output to clean."

View File

@ -1,8 +0,0 @@
# Set architecture-specific environment variables
# Part of RosBE for Unix-based Operating Systems
# Copyright 2009-2010 Colin Finck <colin@reactos.org>
#
# Released under GNU GPL v2 or any later version.
export ROSBE_TARGET_CFLAGS=`mingw32-cpp -x c -v < /dev/null 2>&1 | $_ROSBE_ROSSCRIPTDIR/bin/getincludes`
export ROSBE_TARGET_CXXFLAGS=`mingw32-cpp -x c++ -v < /dev/null 2>&1 | $_ROSBE_ROSSCRIPTDIR/bin/getincludes`

View File

@ -1,6 +1,6 @@
# Shared functions for RosBE-Unix components
# Part of RosBE for Unix-based Operating Systems
# Copyright 2009-2010 Colin Finck <colin@reactos.org>
# Copyright 2009-2011 Colin Finck <colin@reactos.org>
#
# Released under GNU GPL v2 or any later version.
@ -21,8 +21,6 @@ change_architecture()
export PATH="$_ROSBE_ROSSCRIPTDIR/$ROS_ARCH/bin:$_ROSBE_OLDPATH"
export ROS_ARCH
source "$_ROSBE_ROSSCRIPTDIR/$ROS_ARCH/setvars.sh"
}
# Check whether we're running as root and warn the user in case we don't

View File

@ -1,6 +1,6 @@
###############################################################################
# Shared setup functions for RosBE-Windows' buildtoolchain and RosBE-Unix
# Copyright 2009 Colin Finck <colin@reactos.org>
# Copyright 2009-2011 Colin Finck <colin@reactos.org>
#
# Released under GNU GPL v2 or any later version.
###############################################################################
@ -23,6 +23,20 @@ rs_boldmsg()
# Check for several requirements, which need to be met in order to run the installation script properly
rs_check_requirements()
{
# Check for the processor architecture
local cpuarch=`uname -m`
case "$cpuarch" in
"i686")
rs_abi=32
;;
"x86_64")
rs_abi=64
;;
*)
echo "Your processor architecture is not supported by RosBE-Unix!"
exit 1;;
esac
# Test if the script directory is writable
if [ ! -w "$rs_scriptdir" ]; then
rs_redmsg "The script directory \"$rs_scriptdir\" is not writable, aborted!"
@ -65,9 +79,10 @@ rs_check_requirements()
for app in $checkapps; do
if $app -v 2>&1 | grep "GNU Make" >& /dev/null; then
rs_makecmd="$app"
# Store the complete path in $rs_makecmd to prevent collisions with our own Make.
rs_makecmd=`which $app`
rs_greenmsg "OK"
fi
fi
done
if [ "$rs_makecmd" = "" ]; then

View File

@ -61,8 +61,8 @@ tools=""
case "$package_name" in
"Base-i386")
sources+="gmp make mingw_runtime_dev mpfr nasm w32api"
tools+="cpucount getincludes scut"
sources+="cmake gmp make mingw_runtime_dev mpfr w32api"
tools+="cpucount scut"
esac
# Check if all required files exist