axmol/setup.ps1

122 lines
3.7 KiB
PowerShell

$myRoot = $PSScriptRoot
$AX_ROOT = $myRoot
$build1kPath = Join-Path $myRoot 'tools/ci/build1k.ps1'
$prefix = Join-Path $myRoot 'tools/external'
if (!(Test-Path $prefix -PathType Container)) {
mkdir $prefix | Out-Null
}
# setup toolchains: glslcc, cmake, ninja, ndk, jdk, ...
. $build1kPath -setupOnly $true -prefix $prefix
$AX_CONSOLE_BIN = Join-Path $AX_ROOT 'tools/console/bin'
# https://learn.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_environment_variables
$IsWin = $IsWindows -or ("$env:OS" -eq 'Windows_NT')
if ($IsWin) {
if ($env:AX_ROOT -ne $AX_ROOT) {
[Environment]::SetEnvironmentVariable('AX_ROOT', $AX_ROOT, 'User')
}
$pathList = [System.Collections.ArrayList]$env:PATH.Split(';')
if (!$pathList.IndexOf($AX_CONSOLE_BIN) -eq -1) {
$pathList = [Environment]::GetEnvironmentVariable('PATH', 'User').Split(';')
$pathList.Insert(0, $AX_CONSOLE_BIN)
$PATH = $pathList -join ';'
[Environment]::SetEnvironmentVariable('PATH', $PATH, 'User')
}
}
else {
$PATH = [System.Collections.ArrayList]$env:PATH.Split(':')
if (Test-Path $PROFILE -PathType Leaf) {
$profileContent = Get-Content $PROFILE
}
else {
$profileContent = ''
}
if ($profileContent.IndexOf('$env:AX_ROOT = ') -eq -1) {
$profileContent += '$env:AX_ROOT = "{0}"{1}' -f $AX_ROOT, "`n"
}
if ($profileContent.IndexOf('$env:PATH = ') -eq -1) {
$profileContent += '$env:PATH = "{0}:$env:PATH"' -f $AX_CONSOLE_BIN
}
$profileDir = Split-Path $PROFILE -Parent
if (!(Test-Path $profileDir -PathType Container)) {
mkdir $profileDir | Out-Null
}
Set-Content $PROFILE -Value $profileContent
}
if ($IsLinux) {
b1k_print "This Shell Script will install dependencies for axmol"
Write-Host "Are you continue? (y/n) " -NoNewline
$answer = Read-Host
if ($answer -like 'y*') {
b1k_print "It will take few minutes"
sudo apt update
# for vm, libxxf86vm-dev also required
DEPENDS = @()
DEPENDS = 'libx11-dev'
DEPENDS += 'automake'
DEPENDS += 'libtool'
DEPENDS += 'cmake'
DEPENDS += 'libxmu-dev'
DEPENDS += 'libglu1-mesa-dev'
DEPENDS += 'libgl2ps-dev'
DEPENDS += 'libxi-dev'
DEPENDS += 'libzip-dev'
DEPENDS += 'libpng-dev'
DEPENDS += 'libfontconfig1-dev'
DEPENDS += 'libgtk-3-dev'
DEPENDS += 'binutils'
DEPENDS += 'libbsd-dev'
DEPENDS += 'libasound2-dev'
DEPENDS += 'libxxf86vm-dev'
DEPENDS += @('libvlc-dev', 'libvlccore-dev', 'vlc')
# if vlc encouter codec error, install
# sudo apt install ubuntu-restricted-extras
sudo apt install --allow-unauthenticated --yes $DEPENDS > /dev/null
b1k_print "Installing latest freetype for linux ..."
mkdir buildsrc
Set-Location buildsrc
git clone 'https://github.com/freetype/freetype.git'
Set-Location freetype
git checkout 'VER-2-13-0'
sh autogen.sh
./configure '--prefix=/usr' '--enable-freetype-config' '--disable-static'
sudo make install
Set-Location ..
Set-Location ..
}
}
if ($IsWin) {
$myProcess = [System.Diagnostics.Process]::GetCurrentProcess()
$parentProcess = $myProcess.Parent
if (!$parentProcess) {
$myPID = $myProcess.Id
$instance = Get-WmiObject Win32_Process -Filter "ProcessId = $myPID"
$parentProcess = Get-Process -Id $instance.ParentProcessID
}
$parentProcessName = $parentProcess.ProcessName
}
if ("$parentProcessName" -like 'explorer') {
b1k_print "setup successfully, press any key to exit."
$null = Read-Host
}
else {
b1k_print 'setup successfully.'
}