First run through the PS1 Scripts to get them in sync to Colin's fixes again. Not tested yet.

svn path=/trunk/tools/RosBE/; revision=984
This commit is contained in:
Daniel Reimer 2009-05-11 00:40:11 +00:00
parent 9908138509
commit 26af7217a9
16 changed files with 248 additions and 652 deletions

View File

@ -7,10 +7,8 @@
#
#
#
# Check if config.template.rbuild is newer than config.rbuild, if it is then
# abort the build and inform the user.
#
if (Test-Path ".\config.rbuild") {
if ((gi .\config.template.rbuild).LastWriteTime -gt (gi .\config.rbuild).LastWriteTime) {
""
@ -22,9 +20,7 @@ if (Test-Path ".\config.rbuild") {
}
}
#
# Check if strip, no Debug Symbols or ccache are being used and set the appropriate options.
#
if ($_ROSBE_NOSTRIP -ne $null) {
if ($_ROSBE_NOSTRIP -eq 1) {
$ENV:ROS_BUILDNOSTRIP = "yes"
@ -39,162 +35,73 @@ if ($_ROSBE_STRIP -ne $null) {
$ENV:ROS_LEAN_AND_MEAN = "no"
}
}
# Small Security Check to prevent useless apps.
if ($ENV:ROS_LEAN_AND_MEAN -eq "yes") {
if ($ENV:ROS_BUILDNOSTRIP -eq "yes") {
clear-host
"Selecting Stripping and removing Debug Symbols together will most likely cause useless apps. Please deselect one of them."
exit
}
}
if ($_ROSBE_USECCACHE -ne $null) {
if ($_ROSBE_USECCACHE -eq 1) {
$ENV:CCACHE_DIR = "$APPDATA\RosBE\.ccache"
$_ROSBE_CCACHE = "ccache "
}
$ENV:HOST_CC = "$_ROSBE_CCACHE" + "gcc"
$ENV:HOST_CPP = "$_ROSBE_CCACHE" + "g++"
#
#Target defaults to host(i386)
#
$ENV:TARGET_CC = "$_ROSBE_CCACHE" + "gcc"
$ENV:TARGET_CPP = "$_ROSBE_CCACHE" + "g++"
if ($ENV:ROS_ARCH -ne $null) {
$ENV:TARGET_CC = "$_ROSBE_CCACHE" + "$ROS_ARCH-pc-mingw32-gcc"
$ENV:TARGET_CPP = "$_ROSBE_CCACHE" + "$ROS_ARCH-pc-mingw32-g++"
}
}
#
# Check if the user has chosen to use a different object or output path and set
# it accordingly.
#
if ($_ROSBE_OBJPATH -ne $null) {
if (Test-Path "$_ROSBE_OBJPATH") {
"WARNING: The Object-Path specified doesn't seem to exist. Creating..."
if (Test-Path "makefile*.auto") {
"WARNING: makefile.auto exists. Deleting..."
clean
}
}
$ENV:ROS_INTERMEDIATE = "$_ROSBE_OBJPATH"
$ENV:ROS_TEMPORARY = "$_ROSBE_OBJPATH"
}
if ($_ROSBE_OUTPATH -ne $null) {
if (Test-Path "$_ROSBE_OUTPATH") {
"WARNING: The Output-Path specified doesn't seem to exist. Creating..."
if (Test-Path "makefile*.auto") {
"WARNING: makefile.auto exists. Deleting..."
clean
}
}
$ENV:ROS_OUTPUT = "$_ROSBE_OUTPATH"
$ENV:ROS_TEMPORARY = "$_ROSBE_OUTPATH"
}
#
if ($_ROSBE_USECCACHE -eq 1) {
$_ROSBE_CCACHE = "ccache "
} else {
$_ROSBE_CCACHE = $null
}
$ENV:HOST_CC = "$_ROSBE_CCACHE" + "gcc"
$ENV:HOST_CPP = "$_ROSBE_CCACHE" + "g++"
$ENV:TARGET_CC = "$_ROSBE_CCACHE" + "gcc"
$ENV:TARGET_CPP = "$_ROSBE_CCACHE" + "g++"
$ENV:TARGET_CC = "$_ROSBE_CCACHE" + "$ROS_PREFIX" + "gcc"
$ENV:TARGET_CPP = "$_ROSBE_CCACHE" + "$ROS_PREFIX" + "g++"
}
# Get the current date and time for use in in our build log's file name.
#
$TIMERAW = get-date -f t
$DATENAME = get-date -f dyMMyyyy
$TIMENAME = get-date -f HHmm
#
# Check if writing logs is enabled, if so check if our log directory exists, if
# it doesn't, create it.
#
if ($_ROSBE_WRITELOG -eq 1) {
if (!(Test-Path "$_ROSBE_LOGDIR")) {
$null = (New-Item -path "$_ROSBE_ROSSOURCEDIR" -name "RosBE-Logs" -type directory)
}
}
function BUILD {
if ($_ROSBE_SHOWTIME -eq 1) {
[System.Diagnostics.Stopwatch] $sw;
$sw = New-Object System.Diagnostics.StopWatch
if ($_ROSBE_WRITELOG -eq 1) {
if (!(Test-Path "$_ROSBE_LOGDIR\BuildLog-$_ROSBE_GCCVERSION-$DATENAME-$TIMENAME.txt")) {
$null = (New-Item -path "$_ROSBE_LOGDIR" -name "BuildLog-$_ROSBE_GCCVERSION-$DATENAME-$TIMENAME.txt" -type file)
}
$sw.Start()
IEX "&'$_ROSBE_MINGWMAKE' $($args)" 2>&1 | tee-object -filepath "$_ROSBE_LOGDIR\BuildLog-$_ROSBE_GCCVERSION-$DATENAME-$TIMENAME.txt"
$sw.Stop()
write-host "Total Build Time:" $sw.Elapsed.ToString()
} else {
$sw.Start()
IEX "&'$_ROSBE_MINGWMAKE' $($args)"
$sw.Stop()
write-host "Total Build Time:" $sw.Elapsed.ToString()
}
} else {
if ($_ROSBE_WRITELOG -eq 1) {
if (!(Test-Path "$_ROSBE_LOGDIR\BuildLog-$_ROSBE_GCCVERSION-$DATENAME-$TIMENAME.txt")) {
$null = (New-Item -path "$_ROSBE_LOGDIR" -name "BuildLog-$_ROSBE_GCCVERSION-$DATENAME-$TIMENAME.txt" -type file)
}
IEX "&'$_ROSBE_MINGWMAKE' $($args)" 2>&1 | tee-object -filepath "$_ROSBE_LOGDIR\BuildLog-$_ROSBE_GCCVERSION-$DATENAME-$TIMENAME.txt"
} else {
IEX "&'$_ROSBE_MINGWMAKE' $($args)"
}
}
}
function BUILDMULTI {
#
# Get the number of CPUs in the system so we know how many jobs to execute.
$CPUCOUNT = (gwmi win32_processor).numberofcores + 1
if ($_ROSBE_SHOWTIME -eq 1) {
[System.Diagnostics.Stopwatch] $sw;
$sw = New-Object System.Diagnostics.StopWatch
if ($_ROSBE_WRITELOG -eq 1) {
if (!(Test-Path "$_ROSBE_LOGDIR\BuildLog-$_ROSBE_GCCVERSION-$DATENAME-$TIMENAME.txt")) {
$null = (New-Item -path "$_ROSBE_LOGDIR" -name "BuildLog-$_ROSBE_GCCVERSION-$DATENAME-$TIMENAME.txt" -type file)
}
$sw.Start()
IEX "&'$_ROSBE_MINGWMAKE' -j $CPUCOUNT $($args)" 2>&1 | tee-object -filepath "$_ROSBE_LOGDIR\BuildLog-$_ROSBE_GCCVERSION-$DATENAME-$TIMENAME.txt"
$sw.Stop()
write-host "Total Build Time:" $sw.Elapsed.ToString()
} else {
$sw.Start()
IEX "&'$_ROSBE_MINGWMAKE' -j $CPUCOUNT $($args)"
$sw.Stop()
write-host "Total Build Time:" $sw.Elapsed.ToString()
}
} else {
if ($_ROSBE_WRITELOG -eq 1) {
if (!(Test-Path "$_ROSBE_LOGDIR\BuildLog-$_ROSBE_GCCVERSION-$DATENAME-$TIMENAME.txt")) {
$null = (New-Item -path "$_ROSBE_LOGDIR" -name "BuildLog-$_ROSBE_GCCVERSION-$DATENAME-$TIMENAME.txt" -type file)
}
IEX "&'$_ROSBE_MINGWMAKE' -j $CPUCOUNT $($args)" 2>&1 | tee-object -filepath "$_ROSBE_LOGDIR\BuildLog-$_ROSBE_GCCVERSION-$DATENAME-$TIMENAME.txt"
} else {
IEX "&'$_ROSBE_MINGWMAKE' -j $CPUCOUNT $($args)"
}
}
}
#
# Check if we are using -j or not.
#
# Check whether we were called as "makex" or "make"
if ($args[0] -eq "multi") {
$args.setvalue($null, 0)
$host.ui.RawUI.WindowTitle = "''makex $($args)'' parallel build started: $TIMERAW $ENV:ROS_ARCH"
BUILDMULTI $args
$MAKE_JOBS = "$_ROSBE_MAKEX_JOBS"
$TITLE_COMMAND = "makex $args[2]"
} else {
$host.ui.RawUI.WindowTitle = "''make $($args)'' build started: $TIMERAW $ENV:ROS_ARCH"
BUILD $args
$MAKE_JOBS = 1
$TITLE_COMMAND = "make $args[1]"
}
#
$host.ui.RawUI.WindowTitle = "'$TITLE_COMMAND' build started: $TIMERAW ($ENV:ROS_ARCH)"
# Do the actual building
if ($_ROSBE_SHOWTIME -eq 1) {
[System.Diagnostics.Stopwatch] $sw;
$sw = New-Object System.Diagnostics.StopWatch
}
if ($_ROSBE_WRITELOG -eq 1) {
$sw.Start()
IEX "&'$_ROSBE_MINGWMAKE' -j $MAKE_JOBS $($args)" 2>&1 | tee-object -filepath "$_ROSBE_LOGDIR\BuildLog-$_ROSBE_TARGET_GCCVERSION-$DATENAME-$TIMENAME.txt"
$sw.Stop()
} else {
$sw.Start()
IEX "&'$_ROSBE_MINGWMAKE' -j $MAKE_JOBS $($args)"
$sw.Stop()
}
write-host "Total Build Time:" $sw.Elapsed.ToString()
# Highlight the fact that building has ended.
#
"$_ROSBE_BASEDIR\Tools\flash.exe"
if ($_ROSBE_VERSION -ne $null) {
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
}
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
#
# Unload all used Vars.

View File

@ -10,9 +10,7 @@
$host.ui.RawUI.WindowTitle = "Cleaning..."
function remlog {
#
# Check if we have any logs to clean, if so, clean them.
#
if (Test-Path "$_ROSBE_LOGDIR") {
"Cleaning build logs..."
$null = (Remove-Item -path "$_ROSBE_LOGDIR\*.txt" -force)
@ -23,57 +21,45 @@ function remlog {
}
function rembin {
#
# Check if we have something to clean, if so, clean it.
#
#
# Apply modified obj and out paths for deletion.
#
if ($ENV:ROS_ARCH -eq $null) {
$ENV:ROS_ARCH = "i386"
}
if ($_ROSBE_OBJPATH -eq $null) {
$_ROSBE_OBJCLEANPATH = "$_ROSBE_ROSSOURCEDIR\obj-$ENV:ROS_ARCH"
$OBJCLEANPATH = "$_ROSBE_ROSSOURCEDIR\obj-$ENV:ROS_ARCH"
} else {
$_ROSBE_OBJCLEANPATH = "$_ROSBE_OBJPATH"
$OBJCLEANPATH = "$_ROSBE_OBJPATH"
}
if ($_ROSBE_OUTPATH -eq $null) {
$_ROSBE_OUTCLEANPATH = "$_ROSBE_ROSSOURCEDIR\output-$ENV:ROS_ARCH"
$OUTCLEANPATH = "$_ROSBE_ROSSOURCEDIR\output-$ENV:ROS_ARCH"
} else {
$_ROSBE_OUTCLEANPATH = "$_ROSBE_OUTPATH"
$OUTCLEANPATH = "$_ROSBE_OUTPATH"
}
if ($ENV:ROS_ARCH -eq "i386") {
$_ROSBE_MAKEFILE = "$_ROSBE_ROSSOURCEDIR\makefile-$ENV:ROS_ARCH.auto"
$MAKEFILE = "$_ROSBE_ROSSOURCEDIR\makefile-$ENV:ROS_ARCH.auto"
} else {
$_ROSBE_MAKEFILE = "$_ROSBE_ROSSOURCEDIR\makefile.auto"
$MAKEFILE = "$_ROSBE_ROSSOURCEDIR\makefile.auto"
}
if (Test-Path "$_ROSBE_MAKEFILE") {
$null = (Remove-Item "$_ROSBE_MAKEFILE" -force)
if (Test-Path "$MAKEFILE") {
$null = (Remove-Item "$MAKEFILE" -force)
}
if (Test-Path "$_ROSBE_OBJCLEANPATH\.") {
if (Test-Path "$OBJCLEANPATH\.") {
"Cleaning ReactOS $ENV:ROS_ARCH source directory..."
if (Test-Path "$_ROSBE_OBJCLEANPATH\.") {
$null = (Remove-Item "$_ROSBE_OBJCLEANPATH" -recurse -force)
if (Test-Path "$OBJCLEANPATH\.") {
$null = (Remove-Item "$OBJCLEANPATH" -recurse -force)
}
if (Test-Path "$_ROSBE_OUTCLEANPATH\.") {
$null = (Remove-Item "$_ROSBE_OUTCLEANPATH" -recurse -force)
if (Test-Path "$OUTCLEANPATH\.") {
$null = (Remove-Item "$OUTCLEANPATH" -recurse -force)
}
"Done cleaning ReactOS $ENV:ROS_ARCH source directory."
} else {
"ERROR: There is no $ENV:ROS_ARCH compiler output to clean."
}
if ($ENV:ROS_ARCH -eq "i386") {
$ENV:ROS_ARCH = $null
}
if (Test-Path "$_ROSBE_ROSSOURCEDIR\reactos") {
$null = (Remove-Item "$_ROSBE_ROSSOURCEDIR\reactos" -recurse -force)
}
@ -85,9 +71,9 @@ function end {
#
# Unload all used Vars.
#
$_ROSBE_OBJCLEANPATH = $null
$_ROSBE_OUTCLEANPATH = $null
$_ROSBE_MAKEFILE = $null
$OBJCLEANPATH = $null
$OUTCLEANPATH = $null
$MAKEFILE = $null
exit
}

View File

@ -10,15 +10,11 @@
$host.ui.RawUI.WindowTitle = "ReactOS Build Configurator"
function settitle {
if ($_ROSBE_VERSION -ne $null) {
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
}
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
exit
}
#
# Receive the first Parameter and decide what to do.
#
if ($args[0] -eq "delete") {
"config.rbuild will be permanently deleted. All your settings will be gone."
"Continue?"
@ -57,16 +53,12 @@ elseif ($args[0] -ne $null) {
settitle
}
#
# Check if config.rbuild already exists. If not, get a working copy.
#
if (!(Test-Path "$ENV:APPDATA\RosBE\config.rbuild")) {
copy-item ".\config.template.rbuild" "$ENV:APPDATA\RosBE\config.rbuild"
}
#
# Help prevent non-useful bug reports/questions.
#
""
"*** Configurations other than release/debug are not useful for ***"
"*** posting bug reports, and generally not very useful for ***"
@ -77,10 +69,8 @@ if (!(Test-Path "$ENV:APPDATA\RosBE\config.rbuild")) {
$YESNO = Read-Host "(yes), (no)"
if (($YESNO -ne "yes") -and ($YESNO -ne "y")) {settitle}
#
# Check if config.template.rbuild is newer than config.rbuild, if it is then
# inform the user and offer an update.
#
if (Test-Path ".\config.rbuild") {
if ((gi .\config.template.rbuild).LastWriteTime -gt (gi .\config.rbuild).LastWriteTime) {
""
@ -95,14 +85,10 @@ if (Test-Path ".\config.rbuild") {
}
}
#
# Prepare XML Parser.
#
[xml] $XML = get-content "$ENV:APPDATA\RosBE\config.rbuild"
#
# Start with reading settings from config.rbuild and let the user edit them.
#
"Sub-Architecture to build for."
"Default is: none"
""
@ -246,9 +232,7 @@ if ($BUILD_MP_CH -eq $null) {
}
clear-host
#
# Generate a config.rbuild, copy it to the Source Tree and delete temp files.
#
$xml.group.property | ? { $_.Name -eq "SARCH" } | % { $_.Value = "$SARCH_CH"}
$xml.group.property | ? { $_.Name -eq "OARCH" } | % { $_.Value = "$OARCH_CH"}
$xml.group.property | ? { $_.Name -eq "TUNE" } | % { $_.Value = "$TUNE_CH"}
@ -263,9 +247,7 @@ $xml.group.property | ? { $_.Name -eq "BUILD_MP" } | % { $_.Value = "$BUILD_MP_C
$xml.save("$ENV:APPDATA\RosBE\config.rbuild")
copy-item "$ENV:APPDATA\RosBE\config.rbuild" ".\config.rbuild"
if ($_ROSBE_VERSION -ne $null) {
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
}
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
#
# Unload all used Vars.

View File

@ -7,9 +7,9 @@
#
#
#
# Check if we are displaying help on all commands, if so, display it.
#
# Otherwise check if we are displaying help on individual commands, if so,
# display the help for that command.
if ("$args" -eq "") {
""
"Available Commands:"
@ -73,13 +73,7 @@ if ("$args" -eq "") {
""
exit
}
#
# Now check if we are displaying help on individual commands, if so,
# display the help for that command.
#
if ("$args" -eq "make") {
} elseif ("$args" -eq "make") {
" Usage: make [OPTIONS]"
" Make does a standard build of ReactOS. OPTIONS are the standard ReactOS build"
" options:"
@ -100,9 +94,7 @@ if ("$args" -eq "make") {
" and generates a new makefile. This will take a while."
" ""module""-depends - Does a dependency check for one module with the"
" appropiate name."
exit
}
if ("$args" -eq "makex") {
} elseif ("$args" -eq "makex") {
" Usage: makex [OPTIONS]"
" Same as 'make' but automatically determines the number of CPU Cores in the"
" system and uses ""make -j x"" with the appropriate number. OPTIONS are the"
@ -127,42 +119,32 @@ if ("$args" -eq "makex") {
" NOTE: The number makex uses can be modified by editing Build.cmd"
" located in the RosBE directory, instructions for doing so are"
" contained within the file."
exit
}
if ("$args" -eq "basedir") {
} elseif ("$args" -eq "basedir") {
" Usage: basedir"
" Switches back to the ReactOS source directory."
exit
}
if (Test-Path "$_ROSBE_BASEDIR\charch.ps1") {
if ("$args" -eq "charch") {
} elseif ("$args" -eq "charch") {
if (Test-Path "$_ROSBE_BASEDIR\charch.ps1") {
" Usage: charch [OPTIONS]"
" Change the Architecture to build ReactOS for, for the current RosBE session."
" Possible Architectures are: i386, ppc, arm, amd64."
""
exit
}
}
if (Test-Path "$_ROSBE_BASEDIR\chdefdir.ps1") {
if ("$args" -eq "chdefdir") {
} elseif ("$args" -eq "chdefdir") {
if (Test-Path "$_ROSBE_BASEDIR\chdefdir.ps1") {
" Usage: chdefdir [OPTIONS]"
" Change the ReactOS source directory for the current RosBE session."
""
" previous - Switch to the previous ReactOS source directory."
exit
}
}
if (Test-Path "$_ROSBE_BASEDIR\chdefgcc.ps1") {
if ("$args" -eq "chdefgcc") {
} elseif ("$args" -eq "chdefgcc") {
if (Test-Path "$_ROSBE_BASEDIR\chdefgcc.ps1") {
" Usage: chdefgcc [PATH]"
" Change the MinGW/GCC directory for the current RosBE session."
""
" ""Path"" - Path to set the Host or Target GCC to."
" ""Type"" - Set it to ""target"" or ""host"""
exit
}
}
if ("$args" -eq "clean") {
} elseif ("$args" -eq "clean") {
" Usage: clean [logs]"
" Fully clean the ReactOS source directory."
""
@ -170,10 +152,8 @@ if ("$args" -eq "clean") {
" logs - Removes all build logs in the RosBE-Logs directory."
" All other commands will be parsed as ""make COMMAND_clean"" and cleans the"
" specific command."
exit
}
if (Test-Path "$_ROSBE_BASEDIR\Config.ps1") {
if ("$args" -eq "config") {
} elseif ("$args" -eq "config") {
if (Test-Path "$_ROSBE_BASEDIR\Config.ps1") {
" Usage: config [OPTIONS]"
" Creates a configuration file, which tells RosBE how to build the tree."
""
@ -181,16 +161,12 @@ if (Test-Path "$_ROSBE_BASEDIR\Config.ps1") {
" default settings."
" update - Deletes the old created configuration file and updates it with a"
" new, default one."
exit
}
}
if ("$args" -eq "help") {
} elseif ("$args" -eq "help") {
" Usage: help [COMMAND]"
" Shows help for the specified command or lists all available commands."
exit
}
if (Test-Path "$_ROSBE_BASEDIR\reladdr2line.ps1") {
if ("$args" -eq "raddr2line") {
} elseif ("$args" -eq "raddr2line") {
if (Test-Path "$_ROSBE_BASEDIR\reladdr2line.ps1") {
" Usage: raddr2line [FILE] [ADDRESS]"
" Translates program addresses into file names and line numbers to assist"
" developers with finding specific bugs in ReactOS. If either of the options"
@ -202,17 +178,13 @@ if (Test-Path "$_ROSBE_BASEDIR\reladdr2line.ps1") {
" sub-directories are searched."
" ADDRESS - The address to be translated."
""
exit
}
}
if (Test-Path "$_ROSBE_BASEDIR\scut.ps1") {
if ("$args" -eq "scut") {
} elseif ("$args" -eq "scut") {
if (Test-Path "$_ROSBE_BASEDIR\scut.ps1") {
IEX "&'$_ROSBE_BASEDIR\Tools\scut.exe' --help"
exit
}
}
if (Test-Path "$_ROSBE_BASEDIR\sSVN.ps1") {
if ("$args" -eq "ssvn") {
} elseif ("$args" -eq "ssvn") {
if (Test-Path "$_ROSBE_BASEDIR\sSVN.ps1") {
" Usage: ssvn [OPTIONS]"
" Creates, updates or cleans up your ReactOS source tree or shows the revision"
" number of the local and online trees."
@ -222,19 +194,15 @@ if (Test-Path "$_ROSBE_BASEDIR\sSVN.ps1") {
" create - Creates a new ReactOS source tree."
" cleanup - Cleans up and fixes errors in the source tree."
" status - Show the current local and online revision numbers."
exit
}
}
if (Test-Path "$_ROSBE_BASEDIR\options.ps1") {
if ("$args" -eq "options") {
} elseif ("$args" -eq "options") {
if (Test-Path "$_ROSBE_BASEDIR\options.ps1") {
" Usage: options"
" Starts the RosBE configurator and sets the changes active in the current."
" RosBE session."
exit
}
}
if (Test-Path "$_ROSBE_BASEDIR\update.ps1") {
if ("$args" -eq "update") {
} elseif ("$args" -eq "update") {
if (Test-Path "$_ROSBE_BASEDIR\update.ps1") {
" Usage: update [OPTIONS]"
" Updates all files of RosBE to the most recent files."
""
@ -243,10 +211,7 @@ if (Test-Path "$_ROSBE_BASEDIR\update.ps1") {
" nr X - Re/Installs Update Nr X."
" reset - Removes the Updates Cache. Not recommended."
" status - Shows the recent status of available, non installed updates."
exit
}
}
if ("$args" -ne $null) {
} else {
" Unknown command specified. No help available for $args."
exit
}

View File

@ -1,41 +0,0 @@
#
# PROJECT: RosBE - ReactOS Build Environment for Windows
# LICENSE: GNU General Public License v2. (see LICENSE.txt)
# FILE: Root/MinGW.ps1
# PURPOSE: This script provides/sets up a standard MinGW build environment.
# COPYRIGHT: Copyright 2009 Daniel Reimer <reimer.daniel@freenet.de>
#
#
if ($args -ne "") {
cls
"Unknown parameter specified. Exiting."
exit
}
(Get-Host).UI.RawUI.ForegroundColor = "Green"
(Get-Host).UI.RawUI.BackgroundColor = "Black"
clear-host
$ENV:PATH = "$ENV:SystemRoot\system32;$ENV:SystemRoot"
$global:0 = $myInvocation.MyCommand.Definition
$global:_ROSBE_BASEDIR = [System.IO.Path]::GetDirectoryName($0)
$global:_ROSBE_MODE = "MinGW"
$global:_ROSBE_ORIGINALPATH = "$ENV:PATH"
$global:_ROSBE_HOST_MINGWPATH = "$_ROSBE_BASEDIR\i386"
$global:_ROSBE_TARGET_MINGWPATH = "$_ROSBE_BASEDIR\i386"
& "$_ROSBE_BASEDIR\rosbe-gcc-env.ps1"
& "$_ROSBE_BASEDIR\version.ps1"
#
# Get the number of CPUs in the system so we know how many jobs to execute.
$CPUCOUNT = (gwmi win32_processor).numberofcores + 1
if (Test-Path "$_ROSBE_BASEDIR\chdefgcc.ps1") {
set-alias CHDEFGCC "$_ROSBE_BASEDIR\chdefgcc.ps1" -scope Global
}
set-alias MAKE "$_ROSBE_BASEDIR\Build.ps1" -scope Global
function global:MAKEX {IEX "&'$_ROSBE_BASEDIR\Build.ps1' multi"}
if (Test-Path "$_ROSBE_BASEDIR\scut.ps1") {
set-alias SCUT "$_ROSBE_BASEDIR\scut.ps1" -scope Global
}

View File

@ -8,32 +8,51 @@
#
#
#
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
# Set defaults to work with and override them if edited by the options utility.
#
(Get-Host).UI.RawUI.ForegroundColor = "Green"
(Get-Host).UI.RawUI.BackgroundColor = "Black"
clear-host
# For NT4 compatibility
if ($ENV:APPDATA.Length -lt 1) {
$ENV:APPDATA = $ENV:USERPROFILE
}
$global:_ROSBE_VERSION = "1.4.2"
# Set defaults to work with and override them if edited by
# the options utility.
if ("$ENV:ROS_ARCH" -eq "") {
set $ENV:ROS_ARCH = "i386"
} else {
set $ENV:ROS_ARCH = "$args[1]"
}
$global:0 = $myInvocation.MyCommand.Definition
$global:_ROSBE_BASEDIR = [System.IO.Path]::GetDirectoryName($0)
$global:_ROSBE_MODE = "RosBE"
$global:_ROSBE_VERSION = "1.4.2"
$global:_ROSBE_ROSSOURCEDIR = "$pwd"
$global:_ROSBE_ORIGINALPATH = "$ENV:PATH"
$global:_ROSBE_SHOWTIME = 1
$global:_ROSBE_WRITELOG = 1
$global:_ROSBE_USECCACHE = 0
$global:_ROSBE_STRIP = 0
$global:_ROSBE_NOSTRIP = 0
$global:_ROSBE_HOST_MINGWPATH = "$_ROSBE_BASEDIR\i386"
$global:_ROSBE_TARGET_MINGWPATH = "$_ROSBE_BASEDIR\i386"
$global:_ROSBE_LOGDIR = "$_ROSBE_ROSSOURCEDIR\RosBE-Logs"
$global:_ROSBE_LOGDIR = "$pwd\RosBE-Logs"
$global:_ROSBE_OBJPATH = $null
$global:_ROSBE_OUTPATH = $null
$global:_ROSBE_HOST_MINGWPATH = "$_ROSBE_BASEDIR\i386"
$global:_ROSBE_TARGET_MINGWPATH = "$_ROSBE_BASEDIR\i386"
$global:_ROSBE_ORIGINALPATH = "$ENV:PATH"
$global:_ROSBE_MINGWMAKE = "$_ROSBE_HOST_MINGWPATH\bin\mingw32-make.exe"
# Get the number of CPUs in the system so we know how many jobs to execute.
# To modify the number used, see the cpucount usage for getting to know about the possible options
$_ROSBE_MAKEX_JOBS = (gwmi win32_processor).numberofcores + 1
$ENV:CCACHE_DIR = "$ENV:APPDATA\RosBE\.ccache"
$ENV:C_INCLUDE_PATH = $null
$ENV:CPLUS_INCLUDE_PATH = $null
$ENV:LIBRARY_PATH = $null
function global:Get-WebFile {
param(
@ -46,28 +65,8 @@ function global:Get-WebFile {
$local:ErrorActionPreference = "Continue"
}
#
# Display the banner and set up the environment for the GCC 4.x.x build
# environment.
#
function RosBE {
"*******************************************************************************"
"* *"
"* ReactOS Build Environment $_ROSBE_VERSION *"
"* *"
"*******************************************************************************"
""
#
# Set the correct path for the build tools and set the MinGW make.
#
& "$_ROSBE_BASEDIR\rosbe-gcc-env.ps1"
}
#
# Load the doskey macros and delete any macros for components
# that are not actually present.
#
function LoadAliases {
function global:BASEDIR {
set-location "$_ROSBE_ROSSOURCEDIR"
@ -118,68 +117,55 @@ function LoadAliases {
}
}
#
# Check if RosBE data directory exists, if not, create it.
#
if (!(Test-Path "$ENV:APPDATA\RosBE")) {
New-Item -path "$ENV:APPDATA" -name "RosBE" -type directory
}
#
# Check if the user has used the options utility and if so, load their options.
#
# Load the user's options if any
if (Test-Path "$ENV:APPDATA\RosBE\rosbe-options.ps1") {
& "$ENV:APPDATA\RosBE\rosbe-options.ps1"
}
# arch specific settings.
if (Test-Path "$ENV:APPDATA\RosBE\rosbe-options-$args.ps1") {
& "$ENV:APPDATA\RosBE\rosbe-options-$args.ps1"
}
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
#
# Check if we are using oldmode or if any unknown parameters were specified.
#
if ($args.count -gt 0) {
if ($args -eq "oldmode") {
clear-host
$_ROSBE_MODE = "MinGW"
} else {
clear-host
$_ROSBE_ARCH = $args
# Check if writing logs is enabled, if so check if our log directory
# exists, if it doesn't, create it.
if ($_ROSBE_WRITELOG -eq 1) {
if (!(Test-Path "$_ROSBE_LOGDIR")) {
New-Item -path "$_ROSBE_LOGDIR" -type directory
}
}
RosBE
#
# Load the base directory from srclist.txt and set it as the new source
# directory.
#
# Load the doskey macros that serve as our commands.
LoadAliases
& "$_ROSBE_BASEDIR\rosbe-gcc-env.ps1"
clear-screen
"*******************************************************************************"
"* *"
"* ReactOS Build Environment $_ROSBE_VERSION *"
"* *"
"*******************************************************************************"
""
# Load the base directory from srclist.txt and set it as the
# new source directory.
if (Test-Path "$_ROSBE_BASEDIR\scut.ps1") {
& "$_ROSBE_BASEDIR\scut.ps1"
}
#
# Tell how to display the available commands.
#
""
"For a list of all included commands, type: ""help"""
"-------------------------------------------------"
""
# IEX "'$_ROSBE_BASEDIR\sSVN.ps1' status"
# ""
#
# Load the doskey macros that serve as our commands.
#
LoadAliases
#
# Look if the ReactOS source directory is empty. If so, inform the user and
# mention 'ssvn create' (only if ssvn is installed).
#
# Look if the ReactOS source directory is empty. If so,
# inform the user and mention 'ssvn create' (only if ssvn is installed).
if (!(Test-Path "$_ROSBE_BASEDIR\sSVN.ps1")) {
if ((get-childitem $_ROSBE_ROSSOURCEDIR).Count -le 0) {
"No ReactOS source detected. Please use ""ssvn create"" to download it."

View File

@ -8,47 +8,29 @@
$host.ui.RawUI.WindowTitle = "Change the Architecture to build for..."
#
# Parse the command line arguments.
# ROSBE_ARCH: Default is i386, can be set to amd64, ppc or arm.
#
#
# Refresh all needed Params by recalling the main Path setting CMD File.
#
function SYSPARAM {
# arch specific settings.
if (Test-Path "$ENV:APPDATA\RosBE\rosbe-options-$_ROSBE_ARCH.ps1") {
IEX "& '$ENV:APPDATA\RosBE\rosbe-options-$_ROSBE_ARCH.ps1'"
}
IEX "& '$_ROSBE_BASEDIR\rosbe-gcc-env.ps1'"
version
}
if ($args.count -eq 0) {
#
# If Parameters were set, parse them, if not, ask the user to add them.
#
$_1 = Read-Host "Please enter a Architecture you want to build ReactOS for: "
if ($_1.length -eq 0) {
# Parse the command line arguments.
$ARCH = Read-Host "Please enter a Architecture you want to build ReactOS for: "
if ($ARCH.length -eq 0) {
"ERROR: You must enter a Architecture."
}
} else {
$_1 = $args
$ARCH = $args
}
if ($_1 -eq "i386") {
$_ROSBE_ARCH = $null
} else {
$_ROSBE_ARCH = $_1
}
SYSPARAM
if ($_ROSBE_VERSION -ne $null) {
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
# Modify ROS_ARCH for the current environment
$ENV:ROS_ARCH = $ARCH
# Refresh all needed Params by recalling the main Path setting CMD File.
if (Test-Path "$ENV:APPDATA\RosBE\rosbe-options-$_ROSBE_ARCH.ps1") {
IEX "& '$ENV:APPDATA\RosBE\rosbe-options-$_ROSBE_ARCH.ps1'"
}
chdefgcc $ENV:ROS_ARCH target
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
#
# Unload all used Vars.
#
$_1 = $null
$ARCH = $null

View File

@ -10,36 +10,28 @@
$host.ui.RawUI.WindowTitle = "Change the current working ReactOS source directory..."
#
# Parse the command line arguments.
#
if ($args.count -eq 0) {
#
# If Parameters were set, parse them, if not, ask the user to add them.
#
$_1 = Read-Host "Please enter a ReactOS source directory, or 'previous': "
if ($_1.length -eq 0) {
$SOURCEDIR = Read-Host "Please enter a ReactOS source directory, or 'previous': "
if ($SOURCEDIR.length -eq 0) {
"ERROR: You must enter a ReactOS source directory, or 'previous'."
}
} else {
$_1 = $args
$SOURCEDIR = $args
}
if ($_1 -eq "previous") {
if ($SOURCEDIR -eq "previous") {
pop-location
} else {
if (!(Test-Path "$_1\.")) {
if (!(Test-Path "$SOURCEDIR\.")) {
"ERROR: The path specified doesn't seem to exist."
}
push-location "$_1"
push-location "$SOURCEDIR"
}
$global:_ROSBE_ROSSOURCEDIR = "$pwd"
if ($_ROSBE_VERSION -ne $null) {
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
}
$global:_ROSBE_ROSSOURCEDIR = "$pwd"
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
#
# Unload all used Vars.
#
$_1 = $null
$SOURCEDIR = $null

View File

@ -6,61 +6,57 @@
# COPYRIGHT: Copyright 2009 Daniel Reimer <reimer.daniel@freenet.de>
#
if ($_ROSBE_MODE -eq "RosBE") {
$host.ui.RawUI.WindowTitle = "Change the current MinGW/GCC Host/Target directory..."
}
$host.ui.RawUI.WindowTitle = "Change the current MinGW/GCC Host/Target directory..."
function settitle {
if ($_ROSBE_VERSION -ne $null) {
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
}
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
exit
}
function EOA {
IEX "&'$_ROSBE_BASEDIR\rosbe-gcc-env.cmd' chdefgcc"
settitle
IEX "&'$_ROSBE_BASEDIR\rosbe-gcc-env.cmd'"
version
settitle
}
#
# Parse the command line arguments.
#
$_1 = $args[0]
$_2 = $args[1]
if ($_1 -eq $null) {
$_1 = Read-Host "Please enter a MinGW/GCC directory (don't use quotes): "
if ($_1.length -eq 0) {
# Parse the command line arguments. Ask the user if certain parameters are missing.
$TOOLPATH = $args[0]
$TOOLMODE = $args[1]
if ($TOOLPATH -eq $null) {
$TOOLPATH = Read-Host "Please enter a MinGW/GCC directory (don't use quotes): "
if ($TOOLPATH.length -eq 0) {
"ERROR: You must enter a MinGW/GCC directory."
settitle
}
}
if ($_2 -eq $null) {
$_2 = Read-Host "Please specify, if this will be the Target or Host GCC: "
if ($_2.length -eq 0) {
if ($TOOLMODE -eq $null) {
$TOOLMODE = Read-Host "Please specify, if this will be the Target or Host GCC: "
if ($TOOLMODE.length -eq 0) {
"ERROR: You must enter ""target"" or ""host""."
settitle
}
}
if (Test-Path "$_ROSBE_BASEDIR\$_1\.") {
$_1 = "$_ROSBE_BASEDIR\$_1"
} elseif (!(Test-Path "$_1\.")) {
# Verify the entered values
if (Test-Path "$_ROSBE_BASEDIR\$TOOLPATH\.") {
$TOOLPATH = "$_ROSBE_BASEDIR\$TOOLPATH"
} elseif (!(Test-Path "$TOOLPATH\.")) {
"ERROR: The path specified doesn't seem to exist."
settitle
}
if (!(Test-Path "$_1\bin\*gcc.exe")) {
if (!(Test-Path "$TOOLPATH\bin\*gcc.exe")) {
"ERROR: No MinGW/GCC found in the specified path."
settitle
}
if ($_2 -eq "target") {
$_ROSBE_TARGET_MINGWPATH = $_1
# Set the values
if ($TOOLMODE -eq "target") {
$_ROSBE_TARGET_MINGWPATH = $TOOLPATH
"Target Location: $_ROSBE_TARGET_MINGWPATH"
EOA
}
if ($_2 -eq "host") {
$_ROSBE_HOST_MINGWPATH = $_1
} elseif ($TOOLMODE -eq "host") {
$_ROSBE_HOST_MINGWPATH = $TOOLPATH
"Host Location: $_ROSBE_HOST_MINGWPATH"
EOA
} else {
@ -71,5 +67,5 @@ if ($_2 -eq "host") {
#
# Unload all used Vars.
#
$_1 = $null
$_2 = $null
$TOOLPATH = $null
$TOOLMODE = $null

View File

@ -18,9 +18,7 @@ if ("$ROS_ARCH" -eq "amd64") {
$cfgfile="$ENV:APPDATA\RosBE\rosbe-options.cmd"
}
#
# Run options.exe
#
if (Test-Path "$options") {
Push-Location "$_ROSBE_BASEDIR"
@ -33,9 +31,7 @@ if (Test-Path "$options") {
"ERROR: options executable was not found."
}
if ($_ROSBE_VERSION -ne $null) {
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
}
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
$options = $null
$cfgfile = $null

View File

@ -9,69 +9,48 @@
$host.ui.RawUI.WindowTitle = "reladdr2line..."
#
# Check if the user supplied a path, if they didn't look for
# the specified file in the current directory and any
# sub-directories.
#
function CHECKPATH {
if ($_1.Contains("\")) {
$_1 = get-childitem "$_1\*" -name -recurse 2>NUL | select-string "$_1"
}
}
#
# Receive the Parameters and decide what to do.
#
$_1 = $args[0]
$_2 = $args[1]
if ($args.length -gt 2) {
"ERROR: Too many parameters specified."
}
elseif ($args.length -lt 1) {
if ($_1 -eq $null) {
$_1 = Read-Host "Please enter the path/file to be examined: "
CHECKPATH
# Receive all parameters.
$FILEPATH = $args[0]
$ADDRESS = $args[1]
if ($args.length -lt 1) {
if ($FILEPATH -eq $null) {
$FILEPATH = Read-Host "Please enter the path/file to be examined: "
if ($FILEPATH.Contains("\")) {
$FILEPATH = get-childitem "$FILEPATH\*" -name -recurse 2>NUL | select-string "$FILEPATH"
}
}
}
elseif ($args.length -lt 2) {
if ($_2 -eq $null) {
$_2 = Read-Host "Please enter the address you would like to analyze: "
if ($ADDRESS -eq $null) {
$ADDRESS = Read-Host "Please enter the address you would like to analyze: "
}
}
#
# First get the ImageBase of the File. If its smaller than the given
# Parameter, everything is ok, because it was already added onto the
# adress and can be given directly to raddr2line. If not, add it and
# give the result to raddr2line.
#
if ($_1 -eq $null) {
# Check if parameters were really given
if ($FILEPATH -eq $null) {
"ERROR: You must specify a path/file to examine."
}
if ($_2 -eq $null) {
if ($ADDRESS -eq $null) {
"ERROR: You must specify a address to analyze."
}
$baseaddr = (objdump -p $_1 | select-string "ImageBase").tostring().split()
$baseaddr = (objdump -p $FILEPATH | select-string "ImageBase").tostring().split()
$baseaddr = "0x" + ($baseaddr.get($baseaddr.length - 1))
if ($baseaddr -lt $_2) {
IEX "& '$_ROSBE_BASEDIR\Tools\raddr2line.exe' '$_1' '$_2'"
if ($baseaddr -lt $ADDRESS) {
IEX "& '$_ROSBE_BASEDIR\Tools\raddr2line.exe' '$FILEPATH' '$ADDRESS'"
} else {
$baseaddr = ($baseaddr | % {[Convert]::ToInt32($_,16)}) + ($_2 | % {[Convert]::ToInt32($_,16)})
$baseaddr = ($baseaddr | % {[Convert]::ToInt32($_,16)}) + ($ADDRESS | % {[Convert]::ToInt32($_,16)})
$relbase = "0x" + ("{0:X}" -f $baseaddr)
IEX "& '$_ROSBE_BASEDIR\Tools\raddr2line.exe' '$_1' '$relbase'"
IEX "& '$_ROSBE_BASEDIR\Tools\raddr2line.exe' '$FILEPATH' '$relbase'"
}
if ($_ROSBE_VERSION -ne $null) {
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
}
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
#
# Unload all used Vars.
#
$_1 = $null
$_2 = $null
$FILEPATH = $null
$ADDRESS = $null
$baseaddr = $null
$relbase = $null

View File

@ -7,105 +7,24 @@
#
#
#
# Check if we are running within the RosBE, and if not initialize GCC for the
# current directory.
#
if ($_ROSBE_HOST_MINGWPATH -eq $null) {
$_ROSBE_MODE = "MinGW"
$_ROSBE_HOST_MINGWPATH = "$pwd"
$_ROSBE_ORIGINALPATH = "$ENV:PATH"
}
#
# Set the Arch Variables
#
$ENV:ROS_ARCH = $null
$ENV:ROS_PREFIX = $null
$_ROSBE_OBJPATH = "$_ROSBE_i386_OBJPATH"
$_ROSBE_OUTPATH = "$_ROSBE_i386_OUTPATH"
if ($_ROSBE_ARCH -ne $null) {
$ENV:ROS_ARCH = $_ROSBE_ARCH
$ENV:ROS_PREFIX = "$_ROSBE_ARCH-pc-mingw32"
$_ROSBE_TARGET_MINGWPATH = "$_ROSBE_BASEDIR\$_ROSBE_ARCH"
# HAXX
if ($_ROSBE_ARCH -eq "arm") {
$_ROSBE_OBJPATH = "$_ROSBE_ARM_OBJPATH"
$_ROSBE_OUTPATH = "$_ROSBE_ARM_OUTPATH"
}
if ($_ROSBE_ARCH -eq "ppc") {
$_ROSBE_OBJPATH = "$_ROSBE_PPC_OBJPATH"
$_ROSBE_OUTPATH = "$_ROSBE_PPC_OUTPATH"
}
if ($_ROSBE_ARCH -eq "amd64") {
$_ROSBE_OBJPATH = "$_ROSBE_AMD64_OBJPATH"
$_ROSBE_OUTPATH = "$_ROSBE_AMD64_OUTPATH"
$ENV:ROS_PREFIX = "x86_64-pc-mingw32"
$_ROSBE_TARGET_MINGWPATH = "$_ROSBE_BASEDIR\x86_64"
}
# Check if existant arch
if (Test-Path "$_ROSBE_TARGET_MINGWPATH\.") {
"Unsupported arch specified. Fallback to Default."
pause
$_ROSBE_OBJPATH = "$_ROSBE_i386_OBJPATH"
$_ROSBE_OUTPATH = "$_ROSBE_i386_OUTPATH"
$ENV:ROS_ARCH = $null
$ENV:ROS_PREFIX = $null
$_ROSBE_TARGET_MINGWPATH = $null
}
}
#
# Set up the GCC 4.x.x build environment.
#
$ENV:PATH = "$_ROSBE_HOST_MINGWPATH\bin;$_ROSBE_TARGET_MINGWPATH\bin;$_ROSBE_ORIGINALPATH"
$global:_ROSBE_MINGWMAKE = "$_ROSBE_HOST_MINGWPATH\bin\mingw32-make.exe"
if ($ENV:ROS_ARCH -ne $null) {
& "$ENV:ROS_PREFIX-gcc" -v 2> gcctvers.tmp
$global:_ROSBE_GCCVERSION = (select-string -path .\gcctvers.tmp "gcc version") -replace ".*version ((\d|\.)+).*",'$1'
$global:_ROSBE_GCCTARGET = (select-string -path .\gcctvers.tmp "target=") -replace ".*--target=(.+?)\b.*",'$1'
# Check if we're switching to the AMD64 architecture
if ("$ENV:ROS_ARCH" -eq "amd64") {
$ENV:ROS_PREFIX = "x86_64-pc-mingw32-"
} else {
gcc -v 2> gcctvers.tmp
$global:_ROSBE_GCCVERSION = (select-string -path .\gcctvers.tmp "gcc version") -replace ".*version ((\d|\.)+).*",'$1'
$global:_ROSBE_GCCTARGET = (select-string -path .\gcctvers.tmp "target=") -replace ".*--target=(.+?)\b.*",'$1'
$ENV:ROS_PREFIX = $null
}
$ENV:PATH = "$_ROSBE_TARGET_MINGWPATH\bin;$_ROSBE_ORIGINALPATH"
& "$ENV:ROS_PREFIXgcc" -v 2> gcctvers.tmp
$global:_ROSBE_TARGET_GCCVERSION = (select-string -path .\gcctvers.tmp "gcc version") -replace ".*version ((\d|\.)+).*",'$1'
$global:_ROSBE_TARGET_GCCTARGET = (select-string -path .\gcctvers.tmp "target=") -replace ".*--target=(.+?)\b.*",'$1'
gcc -v 2> gcchvers.tmp
$global:_ROSBE_HOST_GCCVERSION = (select-string -path .\gcchvers.tmp "gcc version") -replace ".*version ((\d|\.)+).*",'$1'
$global:_ROSBE_HOST_GCCTARGET = (select-string -path .\gcchvers.tmp "target=") -replace ".*--target=(.+?)\b.*",'$1'
remove-item gcchvers.tmp
if ($_ROSBE_MODE -eq "MinGW") {
$ENV:C_INCLUDE_PATH = "$_ROSBE_HOST_MINGWPATH\include;$_ROSBE_HOST_MINGWPATH\lib\gcc\$_ROSBE_GCCTARGET\$_ROSBE_GCCVERSION\include"
$ENV:CPLUS_INCLUDE_PATH = "$_ROSBE_HOST_MINGWPATH\include;$_ROSBE_HOST_MINGWPATH\include\c++\$_ROSBE_GCCVERSION;$_ROSBE_HOST_MINGWPATH\include\c++\$_ROSBE_GCCVERSION\$_ROSBE_GCCTARGET;$_ROSBE_HOST_MINGWPATH\lib\gcc\$_ROSBE_GCCTARGET\$_ROSBE_GCCVERSION\include"
$ENV:ROSBE_HOST_CFLAGS = $null
$ENV:ROSBE_HOST_CXXFLAGS = $null
$ENV:ROSBE_TARGET_CFLAGS = $null
$ENV:ROSBE_TARGET_CXXFLAGS = $null
} else {
$ENV:C_INCLUDE_PATH = $null
$ENV:CPLUS_INCLUDE_PATH = $null
$ENV:ROSBE_HOST_CFLAGS = "-I""$_ROSBE_HOST_MINGWPATH\include"" -I""$_ROSBE_HOST_MINGWPATH\lib\gcc\$_ROSBE_HOST_GCCTARGET\$_ROSBE_HOST_GCCVERSION\include"""
$ENV:ROSBE_HOST_CXXFLAGS = "-I""$_ROSBE_HOST_MINGWPATH\include"" -I""$_ROSBE_HOST_MINGWPATH\include\c++\$_ROSBE_HOST_GCCVERSION"" -I""$_ROSBE_HOST_MINGWPATH\include\c++\$_ROSBE_HOST_GCCVERSION\$_ROSBE_HOST_GCCTARGET"" -I""$_ROSBE_HOST_MINGWPATH\lib\gcc\$_ROSBE_HOST_GCCTARGET\$_ROSBE_HOST_GCCVERSION\include"""
$ENV:ROSBE_TARGET_CFLAGS = "-I""$_ROSBE_TARGET_MINGWPATH\include"" -I""$_ROSBE_TARGET_MINGWPATH\lib\gcc\$_ROSBE_GCCTARGET\$_ROSBE_GCCVERSION\include"""
$ENV:ROSBE_TARGET_CXXFLAGS = "-I""$_ROSBE_TARGET_MINGWPATH\include"" -I""$_ROSBE_TARGET_MINGWPATH\include\c++\$_ROSBE_GCCVERSION"" -I""$_ROSBE_TARGET_MINGWPATH\include\c++\$_ROSBE_GCCVERSION\$_ROSBE_GCCTARGET"" -I""$_ROSBE_TARGET_MINGWPATH\lib\gcc\$_ROSBE_GCCTARGET\$_ROSBE_GCCVERSION\include"""
}
if ($_ROSBE_HOST_GCCVERSION -eq "3.4.5") {
$ENV:PATH = "$_ROSBE_BASEDIR\3.4.5\bin;$_ROSBE_BASEDIR\3.4.5\libexec\gcc\mingw32\3.4.5;$ENV:PATH"
$_ROSBE_MINGWMAKE = "$_ROSBE_BASEDIR\3.4.5\bin\mingw32-make.exe"
# Set all paths (needed by Windows Vista)
$ENV:C_INCLUDE_PATH = "$_ROSBE_BASEDIR\3.4.5\include;$_ROSBE_BASEDIR\3.4.5\lib\gcc\mingw32\3.4.5\include"
$ENV:CPLUS_INCLUDE_PATH = "$_ROSBE_BASEDIR\3.4.5\include;$_ROSBE_BASEDIR\3.4.5\include\c++\3.4.5;$_ROSBE_BASEDIR\3.4.5\include\c++\3.4.5\mingw32;$_ROSBE_BASEDIR\3.4.5\lib\gcc\mingw32\3.4.5\include"
$ENV:LIBRARY_PATH = "$_ROSBE_BASEDIR\3.4.5\lib;$_ROSBE_BASEDIR\3.4.5\lib\gcc\mingw32\3.4.5"
$ENV:ROSBE_HOST_CFLAGS = $null
$ENV:ROSBE_HOST_CXXFLAGS = $null
$ENV:ROSBE_TARGET_CFLAGS = $null
$ENV:ROSBE_TARGET_CXXFLAGS = $null
}
$ENV:ROSBE_HOST_CFLAGS = "-I""$_ROSBE_HOST_MINGWPATH\include"" -I""$_ROSBE_HOST_MINGWPATH\lib\gcc\$_ROSBE_HOST_GCCTARGET\$_ROSBE_HOST_GCCVERSION\include"""
$ENV:ROSBE_HOST_CXXFLAGS = "-I""$_ROSBE_HOST_MINGWPATH\include"" -I""$_ROSBE_HOST_MINGWPATH\include\c++\$_ROSBE_HOST_GCCVERSION"" -I""$_ROSBE_HOST_MINGWPATH\include\c++\$_ROSBE_HOST_GCCVERSION\$_ROSBE_HOST_GCCTARGET"" -I""$_ROSBE_HOST_MINGWPATH\lib\gcc\$_ROSBE_HOST_GCCTARGET\$_ROSBE_HOST_GCCVERSION\include"""
$ENV:ROSBE_TARGET_CFLAGS = "-I""$_ROSBE_TARGET_MINGWPATH\include"" -I""$_ROSBE_TARGET_MINGWPATH\lib\gcc\$_ROSBE_GCCTARGET\$_ROSBE_GCCVERSION\include"""
$ENV:ROSBE_TARGET_CXXFLAGS = "-I""$_ROSBE_TARGET_MINGWPATH\include"" -I""$_ROSBE_TARGET_MINGWPATH\include\c++\$_ROSBE_GCCVERSION"" -I""$_ROSBE_TARGET_MINGWPATH\include\c++\$_ROSBE_GCCVERSION\$_ROSBE_GCCTARGET"" -I""$_ROSBE_TARGET_MINGWPATH\lib\gcc\$_ROSBE_GCCTARGET\$_ROSBE_GCCVERSION\include"""

View File

@ -47,16 +47,12 @@ function UP {
}
}
#
# Receive the first parameter and decide what to do.
#
if ($args[0] -eq $null) {
"No parameter specified. Try 'help [COMMAND]'."
}
#
# These two are directly parsed to svn.
#
elseif ($args[0] -eq "update") {
$host.ui.RawUI.WindowTitle = "SVN Updating..."
"This might take a while, so please be patient."
@ -71,9 +67,7 @@ elseif ($args[0] -eq "cleanup") {
IEX "&'$_ROSBE_BASEDIR\Tools\svn.exe' cleanup"
}
#
# Check if the folder is empty. If not, output an error.
#
elseif ($args[0] -eq "create") {
$host.ui.RawUI.WindowTitle = "SVN Creating..."
if (Test-Path ".svn\.") {
@ -88,10 +82,8 @@ elseif ($args[0] -eq "create") {
}
}
#
# Output the revision of the local and online trees and tell the user if
# its up to date or not.
#
elseif ($args[0] -eq "status") {
$host.ui.RawUI.WindowTitle = "SVN Status"
"This might take a while, so please be patient."
@ -104,9 +96,7 @@ elseif ($args[0] -ne $null) {
"Unknown parameter specified. Try 'help ssvn'."
}
if ($_ROSBE_VERSION -ne $null) {
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
}
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
#
# Unload all used Vars.

View File

@ -33,9 +33,7 @@ elseif ($args[0] -eq "-h") {paramcall($args)}
elseif ($args[0] -eq "--help") {paramcall($args)}
else {parse($args)}
if ($_ROSBE_VERSION -ne $null) {
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
}
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
#
# Unload all used Vars.

View File

@ -7,16 +7,11 @@
#
#
#
# Set Title
#
$host.ui.RawUI.WindowTitle = "Updating..."
function EOC {
set-location "$_ROSBE_OPATH"
if ($_ROSBE_VERSION -ne $null) {
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
}
$host.ui.RawUI.WindowTitle = "ReactOS Build Environment $_ROSBE_VERSION"
exit
}
@ -64,14 +59,10 @@ function UPDCHECK {
}
}
#
# The Update Server.
#
$_ROSBE_URL = "http://danielreimer.5x.to/rosbe"
$_ROSBE_URL = "http://dreimer.dr.funpic.org/rosbe"
#
# Save the recent dir to cd back there at the end.
#
$_ROSBE_OPATH = "$pwd"
if (!(Test-Path "$_ROSBE_BASEDIR\Tools\7z.exe")) {
@ -82,9 +73,7 @@ if (!(Test-Path "$_ROSBE_BASEDIR\Tools\7z.exe")) {
set-location $_ROSBE_BASEDIR
#
# First check for a new Updater.
#
rename-item update.ps1 update2.ps1
get-webfile $_ROSBE_URL/update.ps1 $PWD\update.ps1
if ((gi .\update.ps1).LastWriteTime -gt (gi .\update2.ps1).LastWriteTime) {
@ -96,15 +85,15 @@ if ((gi .\update.ps1).LastWriteTime -gt (gi .\update2.ps1).LastWriteTime) {
remove-item update.ps1 -force
rename-item update2.ps1 update.ps1
}
#
# Get to the Updates Subfolder.
#
if (!(Test-Path "$ENV:APPDATA\RosBE\Updates")) {New-Item -path "$ENV:APPDATA\RosBE" -name "Updates" -type directory}
set-location "$ENV:APPDATA\RosBE\Updates"
#
# Parse the args.
#
$arg1 = $args[0]
$arg2 = $args[1]
if ("$args" -eq "") {
$_ROSBE_MULTIUPD = 1
$_ROSBE_STATCOUNT = 1
@ -112,27 +101,17 @@ if ("$args" -eq "") {
UPDCHECK
$_ROSBE_STATCOUNT += 1
}
EOC
}
if ("$args" -eq "reset") {
} elseif ("$args" -eq "reset") {
remove-item "$ENV:APPDATA\RosBE\Updates\*.*" -force -recurse -EA SilentlyContinue
remove-item "$ENV:APPDATA\RosBE\Updates\tmp\*.*" -force -recurse -EA SilentlyContinue
EOC
}
$arg1 = $args[0]
$arg2 = $args[1]
if ("$arg1" -eq "nr") {
} elseif ("$arg1" -eq "nr") {
$_ROSBE_STATCOUNT = $arg2
UPDCHECK
EOC
}
if ("$arg1" -eq "delete") {
} elseif ("$arg1" -eq "delete") {
$_ROSBE_STATCOUNT = $arg2
remove-item "$ENV:APPDATA\RosBE\Updates\$_ROSBE_VERSION-$_ROSBE_STATCOUNT.*" -force -recurse -EA SilentlyContinue
remove-item "$ENV:APPDATA\RosBE\Updates\tmp\$_ROSBE_VERSION-$_ROSBE_STATCOUNT.*" -force -recurse -EA SilentlyContinue
EOC
}
if ("$arg1" -eq "info") {
} elseif ("$arg1" -eq "info") {
$_ROSBE_STATCOUNT = $arg2
set-location tmp
if (!(Test-path "$_ROSBE_VERSION-$_ROSBE_STATCOUNT.txt")) {
@ -145,11 +124,7 @@ if ("$arg1" -eq "info") {
}
set-location ..
remove-item "tmp\*.*" -force -EA SilentlyContinue
EOC
}
$arg1 = $null
$arg2 = $null
if ("$args" -eq "status") {
} elseif ("$args" -eq "status") {
$_ROSBE_STATCOUNT = 1
if (!(test-path "tmp")) {New-Item -name "tmp" -type directory}
copy-item *.txt .\tmp\.
@ -170,13 +145,12 @@ if ("$args" -eq "status") {
} else {
"RosBE is up to Date."
}
EOC
}
if ("$args" -ne "") {
} else {
"Unknown parameter specified. Try 'help update'."
EOC
}
$arg1 = $null
$arg2 = $null
$_ROSBE_UPDFINISH = $null
$_ROSBE_OPATH = $null
$_ROSBE_UPDDATE = $null
@ -184,3 +158,4 @@ $_ROSBE_UPDATES = $null
$_ROSBE_UPDDATE2 = $null
$_ROSBE_MULTIUPD = $null
$_ROSBE_STATCOUNT = $null
EOC

View File

@ -8,40 +8,24 @@
(get-WmiObject Win32_OperatingSystem).caption
# GCC
(select-string -path .\gcctvers.tmp "gcc version") -replace ".*: (.+?)\b",'$1' | % { $str = $_ -replace '^.*14:',''}
$str
"gcc target - $_ROSBE_GCCTARGET"
remove-item gcctvers.tmp
if ($ENV:ROS_ARCH -ne $null) {
& "$_ROSBE_TARGET_MINGWPATH\bin\$ENV:ROS_PREFIX-ld" -v
} else {
& ld -v
}
# LD
& "$_ROSBE_TARGET_MINGWPATH\bin\$ENV:ROS_PREFIXld" -v
# NASM or YASM
if (Test-Path "$_ROSBE_HOST_MINGWPATH\bin\nasm.exe") {
& nasm -v
} else {
if (Test-Path "$_ROSBE_HOST_MINGWPATH\bin\yasm.exe") {
& yasm --version | select-string "yasm 0"
} else {
if ($_ROSBE_MODE -eq "RosBE") {
"ERROR: NASM or YASM is required to build ReactOS, none was found in the current MinGW/GCC."
}
}
}
if (Test-Path "$_ROSBE_HOST_MINGWPATH\bin\bison.exe") {
& bison '--version' | select-string "GNU Bison"
} else {
if ($_ROSBE_MODE -eq "RosBE") {
"WARNING: Bison will soon be required to build ReactOS, none was found in the current MinGW/GCC."
}
}
if (Test-Path "$_ROSBE_HOST_MINGWPATH\bin\flex.exe") {
$fver = (& flex '--version') -replace ".*version ((\d|\.)+).*",'$1'
"flex $fver"
} else {
if ($_ROSBE_MODE -eq "RosBE") {
"WARNING: Flex will soon be required to build ReactOS, none was found in the current MinGW/GCC."
}
& yasm --version | select-string "yasm 0"
}
# Bison, Flex and Make
& bison '--version' | select-string "GNU Bison"
$fver = (& flex '--version') -replace ".*version ((\d|\.)+).*",'$1'
"flex $fver"
& mingw32-make -v | & find "GNU Make"