From 574246f27fbd9bd7cabaa9e1bc219845c83edf28 Mon Sep 17 00:00:00 2001 From: halx99 Date: Sat, 27 Jul 2024 00:07:33 +0800 Subject: [PATCH] Update 1k --- 1k/1kiss.ps1 | 95 ++++++++++++++++++++++++-------------------- 1k/dm/CMakeLists.txt | 8 +++- 1k/dm/dm.c | 4 ++ 1k/fsync.ps1 | 2 +- 1k/install-pwsh.sh | 42 +++++++++++++------- 1k/manifest.ps1 | 2 +- 1k/setup-msvc.ps1 | 2 +- 7 files changed, 94 insertions(+), 61 deletions(-) diff --git a/1k/1kiss.ps1 b/1k/1kiss.ps1 index c253ead01..bf5d769cf 100644 --- a/1k/1kiss.ps1 +++ b/1k/1kiss.ps1 @@ -205,7 +205,7 @@ $manifest = @{ cmake = '3.23.0+'; ninja = '1.10.0+'; python = '3.8.0+'; - jdk = '11.0.23+'; + jdk = '17.0.10+'; # jdk17+ works for android cmdlinetools 7.0+ emsdk = '3.1.53+'; cmdlinetools = '7.0+'; # android cmdlinetools } @@ -225,7 +225,7 @@ $cmake_generators = @{ $channels = @{} # refer to: https://developer.android.com/studio#command-line-tools-only -$cmdlinetools_rev = '11076708' +$cmdlinetools_rev = '11076708' # 12.0 $android_sdk_tools = @{ 'build-tools' = '34.0.0' @@ -567,29 +567,31 @@ function find_prog($name, $path = $null, $mode = 'ONLY', $cmd = $null, $params = # try get match expr and preferred ver $checkVerCond = $null - $requiredMin = '' + $minimalVer = '' $preferredVer = '' $requiredVer = $manifest[$name] if ($requiredVer) { $preferredVer = $null - if ($requiredVer.EndsWith('+')) { - $preferredVer = $requiredVer.TrimEnd('+') - $checkVerCond = '$(version_ge $foundVer $preferredVer)' - } - elseif ($requiredVer -eq '*') { + if ($requiredVer -eq '*') { $checkVerCond = '$True' $preferredVer = 'latest' } else { $verArr = $requiredVer.Split('~') $isRange = $verArr.Count -gt 1 + $minimalVer = $verArr[0] $preferredVer = $verArr[$isRange] - if ($isRange -gt 1) { - $requiredMin = $verArr[0] - $checkVerCond = '$(version_in_range $foundVer $requiredMin $preferredVer)' - } - else { - $checkVerCond = '$(version_eq $foundVer $preferredVer)' + if ($preferredVer.EndsWith('+')) { + $preferredVer = $preferredVer.TrimEnd('+') + if ($minimalVer.EndsWith('+')) { $minimalVer = $minimalVer.TrimEnd('+') } + $checkVerCond = '$(version_ge $foundVer $minimalVer)' + } else { + if ($isRange) { + $checkVerCond = '$(version_in_range $foundVer $minimalVer $preferredVer)' + } + else { + $checkVerCond = '$(version_eq $foundVer $preferredVer)' + } } } if (!$checkVerCond) { @@ -623,7 +625,7 @@ function find_prog($name, $path = $null, $mode = 'ONLY', $cmd = $null, $params = else { $foundVer = "$($cmd_info.Version)" } - [void]$requiredMin + [void]$minimalVer if ($checkVerCond) { $matched = Invoke-Expression $checkVerCond if ($matched) { @@ -1662,33 +1664,6 @@ if (!$setupOnly) { # determine generator, build_dir, inst_dir for non gradlew projects if (!$is_gradlew) { - if (!$cmake_generator -and !$TARGET_OS.StartsWith('win')) { - $cmake_generator = $cmake_generators[$TARGET_OS] - if ($null -eq $cmake_generator) { - $cmake_generator = if (!$IsWin) { 'Unix Makefiles' } else { 'Ninja' } - } - } - - if ($cmake_generator) { - $using_ninja = $cmake_generator.StartsWith('Ninja') - - if (!$is_wasm) { - $CONFIG_ALL_OPTIONS += '-G', $cmake_generator - } - - if ($cmake_generator -eq 'Unix Makefiles' -or $using_ninja) { - $CONFIG_ALL_OPTIONS += "-DCMAKE_BUILD_TYPE=$optimize_flag" - } - - if ($using_ninja -and $Global:is_android) { - $CONFIG_ALL_OPTIONS += "-DCMAKE_MAKE_PROGRAM=$ninja_prog" - } - - if ($cmake_generator -eq 'Xcode') { - setup_xcode - } - } - $INST_DIR = $null $xopt_presets = 0 $xprefix_optname = '-DCMAKE_INSTALL_PREFIX=' @@ -1714,6 +1689,15 @@ if (!$setupOnly) { } ++$xopt_presets } + elseif ($opt.startsWith('-G')) { + if ($opt.Length -gt 2) { + $cmake_generator = $opt.Substring(2).Trim() + } + elseif (++$opti -lt $xopts.Count) { + $cmake_generator = $xopts[$opti] + } + ++$xopt_presets + } elseif ($opt.StartsWith($xprefix_optname)) { ++$xopt_presets $INST_DIR = $opt.SubString($xprefix_optname.Length) @@ -1723,6 +1707,33 @@ if (!$setupOnly) { } } + if (!$cmake_generator -and !$TARGET_OS.StartsWith('win')) { + $cmake_generator = $cmake_generators[$TARGET_OS] + if ($null -eq $cmake_generator) { + $cmake_generator = if (!$IsWin) { 'Unix Makefiles' } else { 'Ninja' } + } + } + + if ($cmake_generator) { + $using_ninja = $cmake_generator.StartsWith('Ninja') + + if (!$is_wasm) { + $CONFIG_ALL_OPTIONS += '-G', $cmake_generator + } + + if ($cmake_generator -eq 'Unix Makefiles' -or $using_ninja) { + $CONFIG_ALL_OPTIONS += "-DCMAKE_BUILD_TYPE=$optimize_flag" + } + + if ($using_ninja -and $Global:is_android) { + $CONFIG_ALL_OPTIONS += "-DCMAKE_MAKE_PROGRAM=$ninja_prog" + } + + if ($cmake_generator -eq 'Xcode') { + setup_xcode + } + } + if (!$BUILD_DIR) { $BUILD_DIR = resolve_out_dir 'build_' } diff --git a/1k/dm/CMakeLists.txt b/1k/dm/CMakeLists.txt index c0af8e528..b30e29374 100644 --- a/1k/dm/CMakeLists.txt +++ b/1k/dm/CMakeLists.txt @@ -6,11 +6,15 @@ project(dm) find_program(PWSH_PROG NAMES pwsh powershell NO_PACKAGE_ROOT_PATH NO_CMAKE_PATH NO_CMAKE_ENVIRONMENT_PATH NO_CMAKE_SYSTEM_PATH NO_CMAKE_FIND_ROOT_PATH) message(STATUS "CMAKE_C_COMPILER=${CMAKE_C_COMPILER}") +message(STATUS "CMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}") message(STATUS "CMAKE_C_FLAGS=${CMAKE_C_FLAGS}") -message(STATUS "ANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL}") +message(STATUS "CMAKE_CXX_FLAGS=${CMAKE_CXX_FLAGS}") +message(STATUS "CMAKE_SHARED_LINKER_FLAGS=${CMAKE_SHARED_LINKER_FLAGS}") +message(STATUS "CMAKE_SYSROOT=${CMAKE_SYSROOT}") set(cross_flags "") if(ANDROID) + message(STATUS "ANDROID_NATIVE_API_LEVEL=${ANDROID_NATIVE_API_LEVEL}") if(CMAKE_ANDROID_ARCH_ABI MATCHES "arm64-v8a") set(cross_flags "-target aarch64-none-linux-android${ANDROID_NATIVE_API_LEVEL}") elseif(CMAKE_ANDROID_ARCH_ABI MATCHES "x86_64") @@ -34,3 +38,5 @@ endif() if(NOT ${CMAKE_C_COMPILER} MATCHES ".*cl\.exe" OR "${MSVC_VERSION}" GREATER_EQUAL 1928) execute_process(COMMAND ${PWSH_PROG} "${CMAKE_CURRENT_SOURCE_DIR}/dm.ps1" "${CMAKE_C_COMPILER}" "${CMAKE_C_FLAGS} ${cross_flags}") endif() + +add_library(dm dm.c) \ No newline at end of file diff --git a/1k/dm/dm.c b/1k/dm/dm.c index e69de29bb..5c71dcff2 100644 --- a/1k/dm/dm.c +++ b/1k/dm/dm.c @@ -0,0 +1,4 @@ +long double dm2x(long double v) +{ + return v * 10.33; +} \ No newline at end of file diff --git a/1k/fsync.ps1 b/1k/fsync.ps1 index caed67d8e..6c692e256 100644 --- a/1k/fsync.ps1 +++ b/1k/fsync.ps1 @@ -57,7 +57,7 @@ if (!(Test-Path $destLoc -PathType Container)) { } if ($linkOnly) { - Write-Host "fsync.ps1: Linking $srcPath to $destPath ..." + Write-Host "fsync.ps1: Symlink $srcPath to $destPath ..." if ($IsWin -and (Test-Path $srcPath -PathType Container)) { cmd.exe /c mklink /J $destPath $srcPath } diff --git a/1k/install-pwsh.sh b/1k/install-pwsh.sh index 44454e03a..fb86bec71 100755 --- a/1k/install-pwsh.sh +++ b/1k/install-pwsh.sh @@ -12,20 +12,31 @@ mkdir -p $cacheDir pwsh_ver=$1 if [ "$pwsh_ver" = "" ] ; then - pwsh_ver='7.4.2' + pwsh_ver='7.4.4' +fi + +pwsh_min_ver=$2 +if [ "$pwsh_min_ver" = "" ] ; then + pwsh_min_ver='7.3.0' +fi + +if [[ "$pwsh_ver" < "$pwsh_min_ver" ]] ; then + pwsh_ver=$pwsh_min_ver fi function check_pwsh { - pwsh_ver=$1 + min_ver=$1 + preferred_ver=$2 if command -v pwsh >/dev/null ; then - pwsh_veri_a=$(pwsh --version) - pwsh_veri_b="PowerShell $pwsh_ver" - if [ "$pwsh_veri_b" = "$pwsh_veri_a" ] ; then - echo axmol: $pwsh_veri_a already installed. + verx=$(pwsh --version) + very="PowerShell $min_ver" + if ([ "$preferred_ver" != "$min_ver" ] && ([[ "$verx" > "$very" ]] || [ "$verx" = "$very" ])) \ + || ([ "$preferred_ver" = "$min_ver" ] && [ "$verx" = "$very" ]) ; then + echo "1kiss: $verx installed." exit 0 fi fi - echo "Installing PowerShell $pwsh_ver ..." + echo "Installing PowerShell $preferred_ver ..." } HOST_ARCH=$(uname -m) @@ -34,7 +45,7 @@ if [ "$HOST_ARCH" = 'x86_64' ] ; then fi if [ $HOST_OS = 'Darwin' ] ; then - check_pwsh $pwsh_ver + check_pwsh $pwsh_min_ver $preferred_ver pwsh_pkg="powershell-$pwsh_ver-osx-$HOST_ARCH.pkg" pwsh_pkg_out="$cacheDir/$pwsh_pkg" if [ ! -f "$pwsh_pkg_out" ] ; then @@ -45,8 +56,8 @@ if [ $HOST_OS = 'Darwin' ] ; then sudo xattr -rd com.apple.quarantine "$pwsh_pkg_out" sudo installer -pkg "$pwsh_pkg_out" -target / elif [ $HOST_OS = 'Linux' ] ; then - if which dpkg > /dev/null; then # Linux distro: deb (ubuntu) - check_pwsh $pwsh_ver + if command -v dpkg > /dev/null; then # Linux distro: deb (ubuntu) + check_pwsh $pwsh_min_ver $preferred_ver pwsh_pkg="powershell_$pwsh_ver-1.deb_amd64.deb" pwsh_pkg_out="$cacheDir/$pwsh_pkg" if [ ! -f "$pwsh_pkg_out" ] ; then @@ -55,10 +66,10 @@ elif [ $HOST_OS = 'Linux' ] ; then sudo_cmd=$(which sudo) $sudo_cmd dpkg -i "$pwsh_pkg_out" $sudo_cmd apt-get install -f - elif which pacman > /dev/null; then # Linux distro: Arch + elif command -v pacman > /dev/null; then # Linux distro: Arch # refer: https://ephos.github.io/posts/2018-9-17-Pwsh-ArchLinux # available pwsh version, refer to: https://aur.archlinux.org/packages/powershell-bin - check_pwsh $pwsh_ver + check_pwsh $pwsh_min_ver git clone https://aur.archlinux.org/powershell-bin.git $cacheDir/powershell-bin cd $cacheDir/powershell-bin makepkg -si --needed --noconfirm @@ -69,10 +80,11 @@ else exit 1 fi -if [ $? = 0 ] ; then - echo "Install PowerShell $pwsh_ver done" +if command -v pwsh >/dev/null ; then + installed_pwsh_ver=$(pwsh --version) + echo "Install PowerShell $installed_pwsh_ver succeed." else - echo "Install PowerShell fail" + echo "Install PowerShell fail, try again" if [ -f "$pwsh_pkg_out" ] ; then rm -f "$pwsh_pkg_out" fi diff --git a/1k/manifest.ps1 b/1k/manifest.ps1 index 62c5daabd..8d5a912e7 100644 --- a/1k/manifest.ps1 +++ b/1k/manifest.ps1 @@ -1,7 +1,7 @@ # Default manifest, refer in 1k/1kiss.ps1 if ($IsWin) { - $manifest['nasm'] = '2.16.01+' + $manifest['nasm'] = '2.16.03+' } else { $manifest['nasm'] = '2.15.05+' } diff --git a/1k/setup-msvc.ps1 b/1k/setup-msvc.ps1 index a0e787e13..3839c47ae 100644 --- a/1k/setup-msvc.ps1 +++ b/1k/setup-msvc.ps1 @@ -4,7 +4,7 @@ param( $vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe" $vs_installs = ConvertFrom-Json "$(&$vswhere -version '17.0' -format 'json')" $vs_installs -$vs_installer = 'C:\Program Files (x86)\Microsoft Visual Studio\Installer\setup.exe' +$vs_installer = '${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\setup.exe' $vs_path = $vs_installs[0].installationPath $msvc_comp_id = "Microsoft.VisualStudio.Component.VC.$ver.17.9.x86.x64" # refer to: https://learn.microsoft.com/en-us/visualstudio/install/workload-component-id-vs-build-tools?view=vs-2022 echo "Installing $msvc_comp_id ..."