diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 6878c76..3a440fa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -29,10 +29,7 @@ jobs: - name: Checkout uses: actions/checkout@v3 - name: Build - run: | - npm install - npm run build-wasm - npm run build + run: ./build.sh - name: Setup Pages uses: actions/configure-pages@v3 - name: Upload artifact diff --git a/.gitignore b/.gitignore index 3520493..20a6fa9 100644 --- a/.gitignore +++ b/.gitignore @@ -21,6 +21,9 @@ pnpm-debug.log* *.sln *.sw? +# When using my own VTK branch for testing/development, +# I clone VTK into dev-vtk/src and build VTK inside dev-vtk/build-vtk-wasm +dev-vtk # Wasm output out/ diff --git a/README.md b/README.md index 5d8bce4..075f527 100644 --- a/README.md +++ b/README.md @@ -1,63 +1,20 @@ -# base +# Project setup -## Project setup +## Requirements -``` -# yarn -yarn - -# npm -npm install - -# pnpm -pnpm install -``` - -### Build C++ - -``` -npm run build-wasm -``` - -### Compiles and hot-reloads for development - -``` -# yarn -yarn dev +1. docker +2. npm -# npm -npm run dev +The build process is composed of two steps. You will need to compile C++ components to generate `.wasm` files and then run some `npm` commands to bundle those into a static site. For convenience, the shell scripts provided for Windows and Unix do everything needed to build a website from a fresh clone. -# pnpm -pnpm dev -``` - -### Compiles and minifies for production - -``` -# yarn -yarn build - -# npm -npm run build +## Build -# pnpm -pnpm build +**Windows** +```sh +.\build.ps1 ``` -### Lints and fixes files - +**Unix** +```sh +./build.sh ``` -# yarn -yarn lint - -# npm -npm run lint - -# pnpm -pnpm lint -``` - -### Customize configuration - -See [Configuration Reference](https://vitejs.dev/config/). diff --git a/build.ps1 b/build.ps1 new file mode 100755 index 0000000..7c0f47f --- /dev/null +++ b/build.ps1 @@ -0,0 +1,23 @@ +$erroractionpreference = "stop" + +$sdk_version="v9.3.0-2490-g97c85d6930-20240401" +$sdk_image="kitware/vtk-wasm-sdk" +$sdk_config="Release" + +$sdk_dir="/VTK-install/$sdk_config/lib/cmake/vtk" + +docker run ` + --rm ` + -v"$pwd.Path":/vtkWasmBenchmarks ` + $sdk_image:$sdk_version ` + emcmake cmake -GNinja -S /vtkWasmBenchmarks -B /vtkWasmBenchmarks/out -DCMAKE_BUILD_TYPE=$sdk_config -DVTK_DIR=$sdk_dir + +docker run ` + --rm ` + -v"$pwd.Path":/vtkWasmBenchmarks ` + $sdk_image:$sdk_version ` + cmake --build /vtkWasmBenchmarks/out + +npm i + +npm run build diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..d5bda4c --- /dev/null +++ b/build.sh @@ -0,0 +1,33 @@ +#!/bin/sh + +set -e +set -x + +sdk_version="v9.3.0-2490-g97c85d6930-20240401" +readonly sdk_version + +sdk_image="kitware/vtk-wasm-sdk" +readonly sdk_image + +sdk_config="Release" +readonly sdk_config + +sdk_dir="/VTK-install/$sdk_config/lib/cmake/vtk" +readonly sdk_dir + +docker run \ + --rm \ + -u "$(id -u):$(id -g)" \ + -v"$PWD":/vtkWasmBenchmarks \ + $sdk_image:$sdk_version \ + emcmake cmake -GNinja -S /vtkWasmBenchmarks -B /vtkWasmBenchmarks/out -DCMAKE_BUILD_TYPE=$sdk_config -DVTK_DIR=$sdk_dir + +docker run \ + --rm \ + -v"$PWD":/vtkWasmBenchmarks \ + $sdk_image:$sdk_version \ + cmake --build /vtkWasmBenchmarks/out + +npm i + +npm run build diff --git a/package.json b/package.json index a6efa77..bcef160 100644 --- a/package.json +++ b/package.json @@ -3,9 +3,6 @@ "version": "0.0.0", "private": true, "scripts": { - "build-wasm": "npm run build-wasm:release", - "build-wasm:release": "npx itk-wasm -i kitware/vtk-wasm-sdk -b out -s . build -- Release -DDEBUGINFO=NONE -DOPTIMIZE=BEST", - "build-wasm:debug": "npx itk-wasm -i kitware/vtk-wasm-sdk -b out -s . build -- Debug -DDEBUGINFO=DEBUG_NATIVE -DOPTIMIZE=NO_OPTIMIZATION", "build": "vue-tsc --noEmit && vite build", "dev": "vite --base /", "lint": "eslint . --fix --ignore-path .gitignore"