diff --git a/kdeenv.ps1 b/kdeenv.ps1 index 1ce6a5088..a90771429 100644 --- a/kdeenv.ps1 +++ b/kdeenv.ps1 @@ -1,191 +1,206 @@ -# this file sets some environment variables that are needed +# this file sets some environment variables that are needed # for finding programs and libraries etc. -# by Holger Schroeder -# by Patrick Spendrin - -# you should copy kdesettings-example.bat to ..\etc\kdesettings.bat +# by patrick von Reth +# you should copy kdesettings.ini to ..\etc\kdesettings.ini # and adapt it to your needs (see that file for more info) # this file should contain all path settings - and provide thus an environment # to build and run kde programs -# this file sources the kdesettings.bat file automatically +# based on kdeenv.bat cls $dp0=[System.IO.Path]::GetDirectoryName($myInvocation.MyCommand.Definition) &{ function subst([string] $varname, [string] $path, [string] $drive) { foreach($key in $settings["Paths"].keys) { $path = $path.Replace("`$`{"+$key+"`}",$settings["Paths"][$key]) } if(!(test-path -path $path)) { mkdir $path } if( $settings["ShortPath"]["EMERGE_USE_SHORT_PATH"] -eq $true ) { if(!(test-path -path $drive)) { subst.exe $drive $path } $path=$drive } if(!$path.endswith("\")) { $path += "\" } [Environment]::SetEnvironmentVariable($varname, $path, "Process") } function readINI([string] $fileName) { $ini = @{} switch -regex -file $fileName { "^\[(.+)\]$" { $section = $matches[1].Trim() $ini[$section] = @{} } "^\s*([^#].+?)\s*=\s*(.*)" { $name,$value = $matches[1..2] $ini[$section][$name] = $value.Trim() } } $ini } +function prependPATH([string] $path) +{ + $env:PATH="$path;$env:PATH" +} + function path-mingw() { if(test-path -path "$env:KDEROOT\mingw\bin") { - $env:PATH="$env:KDEROOT\mingw\bin;$env:PATH" + prependPATH "$env:KDEROOT\mingw\bin" } else { if(test-path -path "$env:KDEROOT\mingw64\bin") { - $env:PATH="$env:KDEROOT\mingw64\bin;$env:PATH" + prependPATH "$env:KDEROOT\mingw64\bin" } else - { #dont know which version - $env:PATH="$env:KDEROOT\mingw64\bin;$env:KDEROOT\mingw\bin;$env:PATH" + { + #dont know which version + prependPATH "$env:KDEROOT\mingw64\bin" + prependPATH "$env:KDEROOT\mingw\bin" } } } function path-msvc() { if($env:VS110COMNTOOLS -eq "") { Write-Host("Couldnt find msvc installation") } #http://stackoverflow.com/questions/2124753/how-i-can-use-powershell-with-the-visual-studio-command-prompt pushd "$env:VS110COMNTOOLS\..\..\VC" cmd /c "vcvarsall.bat&set" | foreach { if ($_ -match "=") { $v = $_.split("=") set-item -force -path "ENV:\$($v[0])" -value "$($v[1])" #Write-Host("$v[0]=$v[1]") } } popd } +function setupCCACHE() +{ + if( $settings["General"]["EMERGE_USE_CCACHE"] -eq $true) + { + $env:CCACHE_DIR="$env:KDEROOT\build\CCACHE" + $env:CXX="ccache g++" + $env:CC="ccache gcc" + $env:EMERGE_MAKE_PROGRAM="jom /E" + } +} $env:EMERGE_BUILDTYPE="RelWithDebInfo" foreach($arg in $args) { if($arg.ToString().ToLower() -is @("debug","release","relwithdebinfo")) { $env:EMERGE_BUILDTYPE=$arg } else { $APPLICATION=$arg } } if(test-path -path $dp0\..\etc\kdesettings.ini) { $settings = readINI $dp0\..\etc\kdesettings.ini } else { Write-Error("$dp0\..\etc\kdesettings.ini Does not exist") } #make settings for general availible in env foreach($key in $settings["General"].keys) { [Environment]::SetEnvironmentVariable($key,$settings["General"][$key], "Process") } subst "KDEROOT" $settings["Paths"]["KDEROOT"] $settings["ShortPath"]["EMERGE_ROOT_DRIVE"] subst "DOWNLOADDIR" $settings["Paths"]["DOWNLOADDIR"] $settings["ShortPath"]["EMERGE_DOWNLOAD_DRIVE"] subst "KDESVNDIR" $settings["Paths"]["KDESVNDIR"] $settings["ShortPath"]["EMERGE_SVN_DRIVE"] subst "KDEGITDIR" $settings["Paths"]["KDEGITDIR"] $settings["ShortPath"]["EMERGE_GIT_DRIVE"] if ($settings["General"]["KDECOMPILER"] -eq "mingw4") { path-mingw + setupCCACHE } else { if(([string]$settings["General"]["KDECOMPILER"]).StartsWith("msvc")) { path-msvc } } -$env:PATH="$env:KDEROOT\bin;$env:PATH" +prependPATH "$env:KDEROOT\bin" $env:QT_PLUGIN_PATH="$env:KDEROOT\plugins;$env:KDEROOT\lib\kde4\plugins" $env:XDG_DATA_DIRS="$env:KDEROOT\share" # for emerge -$env:PATH="$env:KDEROOT\emerge\bin;$env:PATH" +prependPATH "$env:KDEROOT\emerge\bin" # for dev-utils -$env:PATH="$env:KDEROOT\dev-utils\bin;$env:PATH" +prependPATH "$env:KDEROOT\dev-utils\bin" -$env:PATH="$env:KDEROOT\bin;$env:PATH" #todo:get pythonpath from registry -$env:PATH="$env:PATH;"+$settings["Paths"]["PYTHONPATH"] +prependPATH $settings["Paths"]["PYTHONPATH"] $env:HOME=$env:USERPROFILE $env:SVN_SSH="plink" $env:GIT_SSH="plink" Write-Host("KDEROOT : ${env:KDEROOT}") Write-Host("KDECOMPILER : ${env:KDECOMPILER}") Write-Host("KDESVNDIR : ${env:KDESVNDIR}") Write-Host("KDEGITDIR : ${env:KDEGITDIR}") Write-Host("PYTHONPATH : " + $settings["Paths"]["PYTHONPATH"]) Write-Host("DOWNLOADDIR : ${env:DOWNLOADDIR}") } function emerge() { python "$env:KDEROOT\emerge\bin\emerge.py" $args } -cd $env:KDEROOT +cd $env:KDEROOT \ No newline at end of file