feat: add self-contained offline development resources
This commit is contained in:
@@ -2,8 +2,22 @@
|
||||
set -euo pipefail
|
||||
|
||||
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
|
||||
OCCT_SOURCE_DIR="${OCCT_SOURCE_DIR:-/home/mes123456/working/WebCam/occt}"
|
||||
OCCT_BUILD_DIR="${OCCT_BUILD_DIR:-${ROOT_DIR}/.cache/bitbybit/occt-history-build}"
|
||||
LOCAL_OCCT_SOURCE_DIR="${ROOT_DIR}/.cache/occt/occt"
|
||||
LEGACY_OCCT_SOURCE_DIR="/home/mes123456/working/WebCam/occt"
|
||||
if [[ -z "${OCCT_SOURCE_DIR:-}" ]]; then
|
||||
if [[ -f "${LOCAL_OCCT_SOURCE_DIR}/CMakeLists.txt" ]]; then
|
||||
OCCT_SOURCE_DIR="${LOCAL_OCCT_SOURCE_DIR}"
|
||||
else
|
||||
OCCT_SOURCE_DIR="${LEGACY_OCCT_SOURCE_DIR}"
|
||||
fi
|
||||
fi
|
||||
if [[ -z "${OCCT_BUILD_DIR:-}" ]]; then
|
||||
if [[ "${OCCT_SOURCE_DIR}" == "${LOCAL_OCCT_SOURCE_DIR}" ]]; then
|
||||
OCCT_BUILD_DIR="${ROOT_DIR}/.cache/bitbybit/occt-history-build-offline"
|
||||
else
|
||||
OCCT_BUILD_DIR="${ROOT_DIR}/.cache/bitbybit/occt-history-build"
|
||||
fi
|
||||
fi
|
||||
DIST_DIR="${OCCT_HISTORY_DIST_DIR:-${ROOT_DIR}/native/occt-history/dist}"
|
||||
PUBLIC_DIR="${OCCT_HISTORY_PUBLIC_DIR:-${ROOT_DIR}/public/native/occt-history}"
|
||||
JOBS="${JOBS:-$(nproc)}"
|
||||
|
||||
@@ -7,6 +7,9 @@ PLANEGCS_SOURCE_DIR="${FREECAD_SOURCE_DIR}/src/Mod/Sketcher/App/planegcs"
|
||||
DIST_DIR="${PLANEGCS_DIST_DIR:-${ROOT_DIR}/native/planegcs/dist}"
|
||||
PUBLIC_DIR="${PLANEGCS_PUBLIC_DIR:-${ROOT_DIR}/public/native/planegcs}"
|
||||
HOST_HEADERS_DIR="${ROOT_DIR}/.cache/bitbybit/planegcs-host-headers"
|
||||
OFFLINE_HEADERS_DIR="${ROOT_DIR}/.cache/offline-sysroot/include"
|
||||
BOOST_INCLUDE_DIR="${BOOST_INCLUDE_DIR:-$([[ -d "${OFFLINE_HEADERS_DIR}/boost" ]] && printf '%s' "${OFFLINE_HEADERS_DIR}" || printf '%s' /usr/include)}"
|
||||
EIGEN3_INCLUDE_DIR="${EIGEN3_INCLUDE_DIR:-$([[ -d "${OFFLINE_HEADERS_DIR}/eigen3" ]] && printf '%s' "${OFFLINE_HEADERS_DIR}/eigen3" || printf '%s' /usr/include/eigen3)}"
|
||||
|
||||
if [[ ! -f "${PLANEGCS_SOURCE_DIR}/GCS.cpp" ]]; then
|
||||
echo "Locked FreeCAD planegcs source not found: ${PLANEGCS_SOURCE_DIR}" >&2
|
||||
@@ -16,14 +19,17 @@ if ! command -v em++ >/dev/null; then
|
||||
echo "Emscripten em++ is required." >&2
|
||||
exit 1
|
||||
fi
|
||||
if [[ ! -d /usr/include/eigen3 ]] || [[ ! -d /usr/include/boost ]]; then
|
||||
if [[ ! -d "${EIGEN3_INCLUDE_DIR}" ]] || [[ ! -d "${BOOST_INCLUDE_DIR}/boost" ]]; then
|
||||
echo "Eigen3 and Boost headers are required." >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p "${DIST_DIR}" "${PUBLIC_DIR}" "${HOST_HEADERS_DIR}"
|
||||
if [[ -L "${HOST_HEADERS_DIR}/boost" && "$(readlink "${HOST_HEADERS_DIR}/boost")" != "${BOOST_INCLUDE_DIR}/boost" ]]; then
|
||||
rm "${HOST_HEADERS_DIR}/boost"
|
||||
fi
|
||||
if [[ ! -e "${HOST_HEADERS_DIR}/boost" ]]; then
|
||||
ln -s /usr/include/boost "${HOST_HEADERS_DIR}/boost"
|
||||
ln -s "${BOOST_INCLUDE_DIR}/boost" "${HOST_HEADERS_DIR}/boost"
|
||||
fi
|
||||
em++ \
|
||||
"${PLANEGCS_SOURCE_DIR}/Geo.cpp" \
|
||||
@@ -36,7 +42,7 @@ em++ \
|
||||
-I"${FREECAD_SOURCE_DIR}/src" \
|
||||
-I"${PLANEGCS_SOURCE_DIR}" \
|
||||
-I"${HOST_HEADERS_DIR}" \
|
||||
-I/usr/include/eigen3 \
|
||||
-I"${EIGEN3_INCLUDE_DIR}" \
|
||||
-std=c++20 -O2 -DNDEBUG -DEIGEN_NO_DEBUG -fexceptions -pthread --bind \
|
||||
-sMODULARIZE=1 -sEXPORT_ES6=1 -sENVIRONMENT=web,worker,node \
|
||||
-sPTHREAD_POOL_SIZE=2 \
|
||||
|
||||
Reference in New Issue
Block a user