You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

64 lines
3.2 KiB

  1. #!/bin/bash
  2. # 编译配置
  3. ROOT="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # 获得 本编译脚本项目 自身所在的目录(也就是 本编译脚本项目 的根目录)
  4. TARGET="${ROOT}/target-64-sse2" # 设置编译的输出目标位置
  5. DIST="${ROOT}/distfiles" # 设置运行 本编译脚本项目 需要的依赖库目录
  6. LUX_TAG="${1%/}" # LuxCore项目目录
  7. STAGE=$2 # 设置当前编译阶段
  8. GENERIC_FLAGS="-w -mtune=generic -mno-ssse3 -mmmx -msse -msse2 -O2 -pipe -mfpmath=sse -fPIC" # 设置 将一个通用的 GCC 编译参数,作为 执行编译LuxCore项目时 的参数。
  9. LUXCORE_FLAGS="-std=c++11 -mtune=generic -mno-ssse3 -static-libgcc -mmmx -msse -msse2 -O3 -pipe \
  10. -mfpmath=sse -fvisibility=hidden -fvisibility-inlines-hidden \
  11. -ftree-vectorize -fno-math-errno -fno-signed-zeros -fno-trapping-math \
  12. -fassociative-math -fno-rounding-math -fno-signaling-nans \
  13. -fcx-limited-range -DBOOST_DISABLE_ASSERTS -floop-interchange \
  14. -floop-strip-mine -floop-block -fsee -ftree-loop-linear \
  15. -ftree-loop-distribution -ftree-loop-im -fivopts -ftracer \
  16. -fomit-frame-pointer \
  17. -DHAVE_PTHREAD_H -fPIC -fno-stack-protector" # 设置 一个特定 GCC 编译参数,作为 执行编译LuxCore项目时 的参数。
  18. CHOST="x86_64-pc-linux-gnu" # 设置编译目标 系统平台
  19. # 向系统注册环境变量,生命周期为 本编译脚本项目 运行结束 为止
  20. unset CC CXX # 注销两个变量
  21. export LDFLAGS="-static-libgcc -static-libstdc++"
  22. export PYTHON_CMD="python3.10"
  23. export PYTHON_CMD="python3"
  24. export SHELLROOT="$ROOT" # 将 本 shell项目 的根目录注册到环境变量
  25. export CORE_COUNT=$(( `grep processor /proc/cpuinfo | wc -l` + 1)) # 根据CPU信息,充许N个编译任务同时进行
  26. export MAKEOPTS="-j $CORE_COUNT" # 根据CPU信息,充许N个编译任务同时进行
  27. export CFLAGS="$GENERIC_FLAGS" # 通用的编译参数
  28. export CXXFLAGS="${CFLAGS}" # 通用的编译参数
  29. export CHOST="$7" # 特定的编译参数
  30. export CBUILD=$CHOST # 特定的编译参数
  31. CONFIGOPTS="--build=$CBUILD --host=$CHOST" # 特定的编译参数
  32. # 编译前,检查各种依赖文件包、C++标准库、python版本及其标准库 以及 编译目标目录树结构,否是已准备就续
  33. echo $BOUNDARYSTART
  34. if ! $SHELLROOT/utils/prepare "$TARGET" "$DIST"
  35. then exit 1
  36. fi
  37. echo $BOUNDARYEND
  38. # 执行 build构建脚本,如果脚本执行错误,将终止脚本运行
  39. if ! $ROOT/build "$ROOT" "$TARGET" "$WORK" "$DIST" "$LUX_TAG" "$GENERIC_FLAGS" "$LUX_FLAGS" "$CHOST" "$STAGE"
  40. then
  41. exit 1
  42. fi
  43. exit 0