## Building This program is written in C++, and uses [conan](https://conan.io) to fetch dependencies. ## Linux After cloning the repository, `cd` into the repo, then run: ``` ./conan/export_libs.sh conan install . --build=missing -pr=conan/profiles/linux-x86_64 cd build/Release source generators/conanbuild.sh cmake ../.. -DCMAKE_TOOLCHAIN_FILE=generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release cmake --build . source generators/deactivate_conanbuild.sh ``` After building the project, you should place the `data` folder located in the root of the repository next to the `infinipaint` executable before running it. What I usually do is create a symbolic link of the data folder and place it in the build directory. You can also build in Debug mode by setting the `build_type` in the `conan install` command to `Debug`, and also by setting `CMAKE_BUILD_TYPE=Debug` when running CMake. ## macOS After cloning the repository, `cd` into the repo, then run: ``` ./conan/export_libs.sh conan install . --build=missing -pr=conan/profiles/macOS-arm64 cd build/Release source generators/conanbuild.sh cmake ../.. -DCMAKE_TOOLCHAIN_FILE=generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release cmake --build . source generators/deactivate_conanbuild.sh ``` This will build an app bundle that contains all the data necessary to run the program. To create a .dmg installer for the app, run: ``` cpack -G DragNDrop ``` ## Windows The windows version of this program is built on Visual Studio 2022's compiler. After cloning the repository, `cd` into the repo, then update the git submodules to get the `clip` library: ``` git submodule update --init --recursive ``` Then run: ``` .\conan\export_libs.bat conan install . --build=missing -pr=conan/profiles/win-x86_64 cd build .\generators\conanbuild.bat cmake .. -DCMAKE_TOOLCHAIN_FILE="generators\conan_toolchain.cmake" -DCMAKE_BUILD_TYPE=Release cmake --build . --config Release .\generators\deactivate_conanbuild.bat ``` After building the project, you should place the `data` folder located in the root of the repository next to the `infinipaint.exe` executable before running it. You can create an NSIS installer of the application by running: ``` cpack -G NSIS ``` ## Emscripten You can use Emscripten to build a web version of this program. Keep in mind that this version might be more buggy, and is missing a few features. In addition, I have only tried building it on a Linux machine. You'll need to setup conan toolchains. You can read about that [here](https://github.com/conan-io/conan-toolchains). After cloning the repository, `cd` into the repo, then update the git submodules to get `datachannel-wasm`: ``` git submodule update --init --recursive ``` Then run: ``` ./conan/export_libs.sh conan install . --profile:host=conan/profiles/emscripten --profile:build=default --build=missing cd build/Release ln -s ../../data data source generators/conanbuild.sh cmake ../.. -DCMAKE_TOOLCHAIN_FILE=generators/conan_toolchain.cmake -DCMAKE_BUILD_TYPE=Release cmake --build . source generators/deactivate_conanbuild.sh ``` These commands will generate a javascript file containing the entire program. An example of a website that can run and display this program can be found in `emscripteninstall/index.html`. To try this out, place `infinipaint.js`, `emscripteninstall/index.html`, and `emscripteninstall/loading.gif` in a folder, and host a webserver from that folder. The server must set these two HTTP headers: ``` Cross-Origin-Opener-Policy: same-origin Cross-Origin-Embedder-Policy: require-corp ```