Update package. Pack package as nix package

This commit is contained in:
2026-04-11 13:01:37 +00:00
parent 8d8db0e972
commit ca6342eca6
7 changed files with 286 additions and 0 deletions

78
nix/bisheng-wrapper.sh Normal file
View File

@@ -0,0 +1,78 @@
#!/bin/bash
set -eu -o pipefail
# Bisheng compiler wrapper - similar to NixOS cc-wrapper
# This script injects NIX_CFLAGS_COMPILE and other Nix-managed flags
if (( "${NIX_DEBUG:-0}" >= 7 )); then
set -x
fi
# Source flag accumulation from dependencies
if [ -z "${NIX_CC_WRAPPER_FLAGS_SET_bisheng:-}" ]; then
if [ -f "@out@/nix-support/add-flags.sh" ]; then
source @out@/nix-support/add-flags.sh
fi
fi
# Build extra flags
extraAfter=()
extraBefore=()
# Add sysroot for C standard library headers (critical for bisheng)
ASCEND_TOOLKIT_HOME="${ASCEND_TOOLKIT_HOME:-}"
if [ -n "$ASCEND_TOOLKIT_HOME" ] && [ -d "$ASCEND_TOOLKIT_HOME/tools/hcc/sysroot" ]; then
extraBefore+=("--sysroot=$ASCEND_TOOLKIT_HOME/tools/hcc/sysroot")
fi
# Add NIX_CFLAGS_COMPILE (the main flag we care about)
if [ -n "${NIX_CFLAGS_COMPILE_bisheng:-}" ]; then
extraAfter+=($NIX_CFLAGS_COMPILE_bisheng)
elif [ -n "${NIX_CFLAGS_COMPILE:-}" ]; then
extraAfter+=($NIX_CFLAGS_COMPILE)
fi
# Add NIX_CFLAGS_COMPILE_BEFORE if set
if [ -n "${NIX_CFLAGS_COMPILE_BEFORE_bisheng:-}" ]; then
extraBefore+=($NIX_CFLAGS_COMPILE_BEFORE_bisheng)
fi
# Add linker flags if we're linking
if [ -n "${NIX_CFLAGS_LINK_bisheng:-}" ]; then
extraAfter+=($NIX_CFLAGS_LINK_bisheng)
fi
# Convert LDFLAGS to -Wl, format
if [ -n "${NIX_LDFLAGS_bisheng:-}" ]; then
for flag in $NIX_LDFLAGS_bisheng; do
extraBefore+=("-Wl,$flag")
done
fi
# Source local cflags hook if it exists
if [ -f "@out@/nix-support/add-local-cc-cflags-before.sh" ]; then
source @out@/nix-support/add-local-cc-cflags-before.sh
fi
# Debug output
if (( "${NIX_DEBUG:-0}" >= 1 )); then
echo "bisheng wrapper: extra flags before:" >&2
printf " %q\n" "${extraBefore[@]}" >&2
echo "bisheng wrapper: original flags:" >&2
printf " %q\n" "$@" >&2
echo "bisheng wrapper: extra flags after:" >&2
printf " %q\n" "${extraAfter[@]}" >&2
fi
# Find the real bisheng binary
BISHENG_REAL="${BISHENG_REAL:-bisheng.real}"
if ! command -v "$BISHENG_REAL" &>/dev/null; then
# Try to find bisheng in PATH (should be the real one from toolkit)
BISHENG_REAL="$(which bisheng 2>/dev/null || echo "bisheng")"
fi
# Execute the real bisheng compiler with injected flags
exec "$BISHENG_REAL" \
"${extraBefore[@]+"${extraBefore[@]}"}" \
"$@" \
"${extraAfter[@]+"${extraAfter[@]}"}"