From 0a5a440bd8efdb2bef97e816a921d31175df9987 Mon Sep 17 00:00:00 2001 From: Alan de Freitas Date: Fri, 1 Aug 2025 20:12:14 -0500 Subject: [PATCH] build: external include directories are relocatable --- .github/workflows/ci.yml | 21 ++++- CMakeLists.txt | 14 ++- CMakeUserPresets.json.example | 162 +++++++++++++++++++++------------- bootstrap.py | 24 ++--- 4 files changed, 139 insertions(+), 82 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index dc0baa2940..1e35652a32 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -209,6 +209,19 @@ jobs: fi echo -E "llvm-root=$llvm_root" >> $GITHUB_OUTPUT + - name: Resolve Third-Party Directory + id: resolve-third-party-dir + run: | + set -x + cd .. + third_party_dir=$(pwd)/third-party + if [[ ${{ runner.os }} == 'Windows' ]]; then + third_party_dir=$(echo "$third_party_dir" | sed 's/\\/\//g') + third_party_dir=$(echo $third_party_dir | sed 's|^/d/|D:/|') + echo "$third_party_dir" + fi + echo -E "third-party-dir=$third_party_dir" >> $GITHUB_OUTPUT + - name: Cached LLVM Binaries id: llvm-cache uses: actions/cache@v4 @@ -365,10 +378,10 @@ jobs: install-prefix: .local extra-args: | -D MRDOCS_BUILD_DOCS=OFF - -D LLVM_ROOT=../third-party/llvm-project/install - -D Clang_ROOT=../third-party/llvm-project/install - -D duktape_ROOT=../third-party/duktape/install - -D Duktape_ROOT=../third-party/duktape/install + -D LLVM_ROOT=${{ steps.resolve-third-party-dir.outputs.third-party-dir }}/llvm-project/install + -D Clang_ROOT=${{ steps.resolve-third-party-dir.outputs.third-party-dir }}/llvm-project/install + -D duktape_ROOT=${{ steps.resolve-third-party-dir.outputs.third-party-dir }}/duktape/install + -D Duktape_ROOT=${{ steps.resolve-third-party-dir.outputs.third-party-dir }}/duktape/install ${{ runner.os == 'Windows' && '-D libxml2_ROOT=../third-party/libxml2/install' || '' }} ${{ runner.os == 'Windows' && '-D LibXml2_ROOT=../third-party/libxml2/install' || '' }} export-compile-commands: true diff --git a/CMakeLists.txt b/CMakeLists.txt index 91434ff631..85d162a50f 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -224,9 +224,17 @@ target_compile_definitions( ) # Dependencies -target_include_directories(mrdocs-core SYSTEM PUBLIC ${LLVM_INCLUDE_DIRS}) -target_include_directories(mrdocs-core SYSTEM PUBLIC ${CLANG_INCLUDE_DIRS}) -target_include_directories(mrdocs-core SYSTEM PRIVATE ${DUKTAPE_INCLUDE_DIRS}) +target_include_directories(mrdocs-core + SYSTEM PUBLIC + $ + $ + $ +) +target_include_directories(mrdocs-core + SYSTEM PRIVATE + $ + $ +) target_link_libraries(mrdocs-core PRIVATE ${DUKTAPE_LIBRARY}) # Clang diff --git a/CMakeUserPresets.json.example b/CMakeUserPresets.json.example index 94d1e00277..7994f41d23 100644 --- a/CMakeUserPresets.json.example +++ b/CMakeUserPresets.json.example @@ -55,8 +55,8 @@ "cacheVariables": { "CMAKE_CXX_COMPILER": "/usr/bin/g++", "CMAKE_C_COMPILER": "/usr/bin/gcc", - "LLVM_ROOT": "/home/$env{USER}/libraries/llvm", - "Clang_ROOT": "/home/$env{USER}/libraries/llvm", + "LLVM_ROOT": "${sourceDir}/build/third-party/llvm", + "Clang_ROOT": "${sourceDir}/build/third-party/llvm", "CMAKE_EXPORT_COMPILE_COMMANDS": "ON", "CMAKE_CXX_FLAGS": "-Wall -Wextra -Werror", "CMAKE_C_FLAGS": "-Wall -Wextra -Werror" @@ -91,8 +91,8 @@ "binaryDir": "${sourceDir}/build/${presetName}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", - "LLVM_ROOT": "/home/$env{USER}/libraries/llvm-project/llvm/install/Linux/Release", - "Clang_ROOT": "/home/$env{USER}/libraries/llvm-project/llvm/install/Linux/Release" + "LLVM_ROOT": "${sourceDir}/build/third-party/llvm-project/llvm/install/Linux/Release", + "Clang_ROOT": "${sourceDir}/build/third-party/llvm-project/llvm/install/Linux/Release" } }, { @@ -103,8 +103,8 @@ "binaryDir": "${sourceDir}/build/${presetName}", "cacheVariables": { "CMAKE_BUILD_TYPE": "RelWithDebInfo", - "LLVM_ROOT": "/home/$env{USER}/libraries/llvm-project/llvm/install/Linux/Release", - "Clang_ROOT": "/home/$env{USER}/libraries/llvm-project/llvm/install/Linux/Release" + "LLVM_ROOT": "${sourceDir}/build/third-party/llvm-project/llvm/install/Linux/Release", + "Clang_ROOT": "${sourceDir}/build/third-party/llvm-project/llvm/install/Linux/Release" } }, { @@ -131,17 +131,17 @@ "binaryDir": "${sourceDir}/build/${presetName}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", - "LLVM_ROOT": "$env{HOME}/Developer/cpp-libs/llvm-project/install/debug", - "Clang_ROOT": "$env{HOME}/Developer/cpp-libs/llvm-project/install/debug", - "duktape_ROOT": "$env{HOME}/Developer/cpp-libs/duktape/install/debug", - "Duktape_ROOT": "$env{HOME}/Developer/cpp-libs/duktape/install/debug", - "libxml2_ROOT": "$env{HOME}/Developer/cpp-libs/libxml2/install/release", - "LibXml2_ROOT": "$env{HOME}/Developer/cpp-libs/libxml2/install/release", + "LLVM_ROOT": "${sourceDir}/build/third-party/llvm-project/install/debug", + "Clang_ROOT": "${sourceDir}/build/third-party/llvm-project/install/debug", + "duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/debug", + "Duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/debug", + "libxml2_ROOT": "${sourceDir}/build/third-party/libxml2/install/release", + "LibXml2_ROOT": "${sourceDir}/build/third-party/libxml2/install/release", "MRDOCS_BUILD_TESTS": true, "MRDOCS_BUILD_DOCS": false, "MRDOCS_GENERATE_REFERENCE": false, "MRDOCS_GENERATE_ANTORA_REFERENCE": false, - "CMAKE_MAKE_PROGRAM": "$env{HOME}/Developer/cpp-libs/ninja/ninja" + "CMAKE_MAKE_PROGRAM": "${sourceDir}/build/third-party/ninja/ninja" }, "condition": { "type": "equals", @@ -161,17 +161,17 @@ "binaryDir": "${sourceDir}/build/${presetName}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", - "LLVM_ROOT": "$env{HOME}/Developer/cpp-libs/llvm-project/install/release", - "Clang_ROOT": "$env{HOME}/Developer/cpp-libs/llvm-project/install/release", - "duktape_ROOT": "$env{HOME}/Developer/cpp-libs/duktape/install/release", - "Duktape_ROOT": "$env{HOME}/Developer/cpp-libs/duktape/install/release", - "libxml2_ROOT": "$env{HOME}/Developer/cpp-libs/libxml2/install/release", - "LibXml2_ROOT": "$env{HOME}/Developer/cpp-libs/libxml2/install/release", + "LLVM_ROOT": "${sourceDir}/build/third-party/llvm-project/install/release", + "Clang_ROOT": "${sourceDir}/build/third-party/llvm-project/install/release", + "duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/release", + "Duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/release", + "libxml2_ROOT": "${sourceDir}/build/third-party/libxml2/install/release", + "LibXml2_ROOT": "${sourceDir}/build/third-party/libxml2/install/release", "MRDOCS_BUILD_TESTS": true, "MRDOCS_BUILD_DOCS": false, "MRDOCS_GENERATE_REFERENCE": false, "MRDOCS_GENERATE_ANTORA_REFERENCE": false, - "CMAKE_MAKE_PROGRAM": "$env{HOME}/Developer/cpp-libs/ninja/ninja" + "CMAKE_MAKE_PROGRAM": "${sourceDir}/build/third-party/ninja/ninja" }, "warnings": { "unusedCli": false @@ -191,17 +191,17 @@ "binaryDir": "${sourceDir}/build/${presetName}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", - "LLVM_ROOT": "$env{HOME}/Developer/cpp-libs/llvm-project/install/release", - "Clang_ROOT": "$env{HOME}/Developer/cpp-libs/llvm-project/install/release", - "duktape_ROOT": "$env{HOME}/Developer/cpp-libs/duktape/install/release", - "Duktape_ROOT": "$env{HOME}/Developer/cpp-libs/duktape/install/release", - "libxml2_ROOT": "$env{HOME}/Developer/cpp-libs/libxml2/install/release", - "LibXml2_ROOT": "$env{HOME}/Developer/cpp-libs/libxml2/install/release", + "LLVM_ROOT": "${sourceDir}/build/third-party/llvm-project/install/release", + "Clang_ROOT": "${sourceDir}/build/third-party/llvm-project/install/release", + "duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/release", + "Duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/release", + "libxml2_ROOT": "${sourceDir}/build/third-party/libxml2/install/release", + "LibXml2_ROOT": "${sourceDir}/build/third-party/libxml2/install/release", "MRDOCS_BUILD_TESTS": true, "MRDOCS_BUILD_DOCS": false, "MRDOCS_GENERATE_REFERENCE": false, "MRDOCS_GENERATE_ANTORA_REFERENCE": false, - "CMAKE_MAKE_PROGRAM": "$env{HOME}/Developer/cpp-libs/ninja/ninja" + "CMAKE_MAKE_PROGRAM": "${sourceDir}/build/third-party/ninja/ninja" }, "condition": { "type": "equals", @@ -221,19 +221,19 @@ "binaryDir": "${sourceDir}/build/${presetName}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Release", - "LLVM_ROOT": "$env{HOME}/Developer/cpp-libs/llvm-project/install/release-gcc", - "Clang_ROOT": "$env{HOME}/Developer/cpp-libs/llvm-project/install/release-gcc", - "duktape_ROOT": "$env{HOME}/Developer/cpp-libs/duktape/install/release-gcc", - "Duktape_ROOT": "$env{HOME}/Developer/cpp-libs/duktape/install/release-gcc", - "libxml2_ROOT": "$env{HOME}/Developer/cpp-libs/libxml2/install/release-gcc", - "LibXml2_ROOT": "$env{HOME}/Developer/cpp-libs/libxml2/install/release-gcc", + "LLVM_ROOT": "${sourceDir}/build/third-party/llvm-project/install/release-gcc", + "Clang_ROOT": "${sourceDir}/build/third-party/llvm-project/install/release-gcc", + "duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/release-gcc", + "Duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/release-gcc", + "libxml2_ROOT": "${sourceDir}/build/third-party/libxml2/install/release-gcc", + "LibXml2_ROOT": "${sourceDir}/build/third-party/libxml2/install/release-gcc", "MRDOCS_BUILD_TESTS": true, "MRDOCS_BUILD_DOCS": false, "MRDOCS_GENERATE_REFERENCE": false, "MRDOCS_GENERATE_ANTORA_REFERENCE": false, "CMAKE_C_COMPILER": "/usr/bin/gcc", "CMAKE_CXX_COMPILER": "/usr/bin/g++", - "CMAKE_MAKE_PROGRAM": "$env{HOME}/Developer/cpp-libs/ninja/ninja" + "CMAKE_MAKE_PROGRAM": "${sourceDir}/build/third-party/ninja/ninja" }, "warnings": { "unusedCli": false @@ -253,19 +253,19 @@ "binaryDir": "${sourceDir}/build/${presetName}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", - "LLVM_ROOT": "$env{HOME}/Developer/cpp-libs/llvm-project/install/debug-gcc-asan", - "Clang_ROOT": "$env{HOME}/Developer/cpp-libs/llvm-project/install/debug-gcc-asan", - "duktape_ROOT": "$env{HOME}/Developer/cpp-libs/duktape/install/debug-gcc-asan", - "Duktape_ROOT": "$env{HOME}/Developer/cpp-libs/duktape/install/debug-gcc-asan", - "libxml2_ROOT": "$env{HOME}/Developer/cpp-libs/libxml2/install/release-gcc", - "LibXml2_ROOT": "$env{HOME}/Developer/cpp-libs/libxml2/install/release-gcc", + "LLVM_ROOT": "${sourceDir}/build/third-party/llvm-project/install/debug-gcc-asan", + "Clang_ROOT": "${sourceDir}/build/third-party/llvm-project/install/debug-gcc-asan", + "duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/debug-gcc-asan", + "Duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/debug-gcc-asan", + "libxml2_ROOT": "${sourceDir}/build/third-party/libxml2/install/release-gcc", + "LibXml2_ROOT": "${sourceDir}/build/third-party/libxml2/install/release-gcc", "MRDOCS_BUILD_TESTS": true, "MRDOCS_BUILD_DOCS": false, "MRDOCS_GENERATE_REFERENCE": false, "MRDOCS_GENERATE_ANTORA_REFERENCE": false, "CMAKE_C_COMPILER": "/usr/bin/gcc", "CMAKE_CXX_COMPILER": "/usr/bin/g++", - "CMAKE_MAKE_PROGRAM": "$env{HOME}/Developer/cpp-libs/ninja/ninja", + "CMAKE_MAKE_PROGRAM": "${sourceDir}/build/third-party/ninja/ninja", "CMAKE_C_FLAGS": "-fsanitize=address -fno-sanitize-recover=address -fno-omit-frame-pointer", "CMAKE_CXX_FLAGS": "-fsanitize=address -fno-sanitize-recover=address -fno-omit-frame-pointer" }, @@ -287,19 +287,19 @@ "binaryDir": "${sourceDir}/build/${presetName}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", - "LLVM_ROOT": "$env{HOME}/Developer/cpp-libs/llvm-project/install/debug-gcc-ubsan", - "Clang_ROOT": "$env{HOME}/Developer/cpp-libs/llvm-project/install/debug-gcc-ubsan", - "duktape_ROOT": "$env{HOME}/Developer/cpp-libs/duktape/install/debug-gcc-ubsan", - "Duktape_ROOT": "$env{HOME}/Developer/cpp-libs/duktape/install/debug-gcc-ubsan", - "libxml2_ROOT": "$env{HOME}/Developer/cpp-libs/libxml2/install/release-gcc", - "LibXml2_ROOT": "$env{HOME}/Developer/cpp-libs/libxml2/install/release-gcc", + "LLVM_ROOT": "${sourceDir}/build/third-party/llvm-project/install/debug-gcc-ubsan", + "Clang_ROOT": "${sourceDir}/build/third-party/llvm-project/install/debug-gcc-ubsan", + "duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/debug-gcc-ubsan", + "Duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/debug-gcc-ubsan", + "libxml2_ROOT": "${sourceDir}/build/third-party/libxml2/install/release-gcc", + "LibXml2_ROOT": "${sourceDir}/build/third-party/libxml2/install/release-gcc", "MRDOCS_BUILD_TESTS": true, "MRDOCS_BUILD_DOCS": false, "MRDOCS_GENERATE_REFERENCE": false, "MRDOCS_GENERATE_ANTORA_REFERENCE": false, "CMAKE_C_COMPILER": "/usr/bin/gcc", "CMAKE_CXX_COMPILER": "/usr/bin/g++", - "CMAKE_MAKE_PROGRAM": "$env{HOME}/Developer/cpp-libs/ninja/ninja", + "CMAKE_MAKE_PROGRAM": "${sourceDir}/build/third-party/ninja/ninja", "CMAKE_C_FLAGS": "-fsanitize=undefined -fno-sanitize-recover=undefined -fno-omit-frame-pointer", "CMAKE_CXX_FLAGS": "-fsanitize=undefined -fno-sanitize-recover=undefined -fno-omit-frame-pointer" }, @@ -321,19 +321,19 @@ "binaryDir": "${sourceDir}/build/${presetName}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", - "LLVM_ROOT": "$env{HOME}/Developer/cpp-libs/llvm-project/install/debug-clang", - "Clang_ROOT": "$env{HOME}/Developer/cpp-libs/llvm-project/install/debug-clang", - "duktape_ROOT": "$env{HOME}/Developer/cpp-libs/duktape/install/debug-clang", - "Duktape_ROOT": "$env{HOME}/Developer/cpp-libs/duktape/install/debug-clang", - "libxml2_ROOT": "$env{HOME}/Developer/cpp-libs/libxml2/install/release-clang", - "LibXml2_ROOT": "$env{HOME}/Developer/cpp-libs/libxml2/install/release-clang", + "LLVM_ROOT": "${sourceDir}/build/third-party/llvm-project/install/debug-clang", + "Clang_ROOT": "${sourceDir}/build/third-party/llvm-project/install/debug-clang", + "duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/debug-clang", + "Duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/debug-clang", + "libxml2_ROOT": "${sourceDir}/build/third-party/libxml2/install/release-clang", + "LibXml2_ROOT": "${sourceDir}/build/third-party/libxml2/install/release-clang", "MRDOCS_BUILD_TESTS": true, "MRDOCS_BUILD_DOCS": false, "MRDOCS_GENERATE_REFERENCE": false, "MRDOCS_GENERATE_ANTORA_REFERENCE": false, "CMAKE_C_COMPILER": "/opt/homebrew/opt/llvm/bin/clang", "CMAKE_CXX_COMPILER": "/opt/homebrew/opt/llvm/bin/clang++", - "CMAKE_MAKE_PROGRAM": "$env{HOME}/Developer/cpp-libs/ninja/ninja", + "CMAKE_MAKE_PROGRAM": "${sourceDir}/build/third-party/ninja/ninja", "CMAKE_AR": "/opt/homebrew/opt/llvm/bin/llvm-ar", "CMAKE_CXX_COMPILER_AR": "/opt/homebrew/opt/llvm/bin/llvm-ar", "CMAKE_C_COMPILER_AR": "/opt/homebrew/opt/llvm/bin/llvm-ar", @@ -364,10 +364,10 @@ "binaryDir": "${sourceDir}/build/${presetName}", "cacheVariables": { "CMAKE_BUILD_TYPE": "Debug", - "LLVM_ROOT": "$env{HOME}/Developer/cpp-libs/llvm-project/install/debug-clang-asan", - "Clang_ROOT": "$env{HOME}/Developer/cpp-libs/llvm-project/install/debug-clang-asan", - "duktape_ROOT": "$env{HOME}/Developer/cpp-libs/duktape/install/debug-clang-asan", - "Duktape_ROOT": "$env{HOME}/Developer/cpp-libs/duktape/install/debug-clang-asan", + "LLVM_ROOT": "${sourceDir}/build/third-party/llvm-project/install/debug-clang-asan", + "Clang_ROOT": "${sourceDir}/build/third-party/llvm-project/install/debug-clang-asan", + "duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/debug-clang-asan", + "Duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/debug-clang-asan", "libxml2_ROOT": "", "LibXml2_ROOT": "", "MRDOCS_BUILD_TESTS": false, @@ -376,7 +376,7 @@ "MRDOCS_GENERATE_ANTORA_REFERENCE": false, "CMAKE_C_COMPILER": "/opt/homebrew/opt/llvm/bin/clang", "CMAKE_CXX_COMPILER": "/opt/homebrew/opt/llvm/bin/clang++", - "CMAKE_MAKE_PROGRAM": "$env{HOME}/Developer/cpp-libs/ninja/ninja", + "CMAKE_MAKE_PROGRAM": "${sourceDir}/build/third-party/ninja/ninja", "CMAKE_AR": "/opt/homebrew/opt/llvm/bin/llvm-ar", "CMAKE_CXX_COMPILER_AR": "/opt/homebrew/opt/llvm/bin/llvm-ar", "CMAKE_C_COMPILER_AR": "/opt/homebrew/opt/llvm/bin/llvm-ar", @@ -397,6 +397,48 @@ "lhs": "${hostSystemName}", "rhs": "Darwin" } + }, + { + "name": "release-macos-clang", + "generator": "Ninja", + "displayName": "Release (macOS: clang)", + "description": "Preset for building MrDocs in Release mode with the clang compiler in macOS.", + "inherits": "release", + "binaryDir": "${sourceDir}/build/${presetName}", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Release", + "LLVM_ROOT": "${sourceDir}/build/third-party/llvm-project/install/release-clang", + "Clang_ROOT": "${sourceDir}/build/third-party/llvm-project/install/release-clang", + "duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/release-clang", + "Duktape_ROOT": "${sourceDir}/build/third-party/duktape/install/release-clang", + "libxml2_ROOT": "${sourceDir}/build/third-party/libxml2/install/release-clang", + "LibXml2_ROOT": "${sourceDir}/build/third-party/libxml2/install/release-clang", + "MRDOCS_BUILD_TESTS": true, + "MRDOCS_BUILD_DOCS": false, + "MRDOCS_GENERATE_REFERENCE": false, + "MRDOCS_GENERATE_ANTORA_REFERENCE": false, + "CMAKE_C_COMPILER": "/opt/homebrew/opt/llvm/bin/clang", + "CMAKE_CXX_COMPILER": "/opt/homebrew/opt/llvm/bin/clang++", + "CMAKE_MAKE_PROGRAM": "${sourceDir}/build/third-party/ninja/ninja", + "CMAKE_AR": "/opt/homebrew/opt/llvm/bin/llvm-ar", + "CMAKE_CXX_COMPILER_AR": "/opt/homebrew/opt/llvm/bin/llvm-ar", + "CMAKE_C_COMPILER_AR": "/opt/homebrew/opt/llvm/bin/llvm-ar", + "CMAKE_RANLIB": "/opt/homebrew/opt/llvm/bin/llvm-ranlib", + "CMAKE_C_COMPILER_LINKER": "/opt/homebrew/bin/ld.lld", + "CMAKE_CXX_COMPILER_LINKER": "/opt/homebrew/bin/ld.lld", + "CMAKE_EXE_LINKER_FLAGS": "-L/opt/homebrew/opt/llvm/lib/c++ -L/opt/homebrew/opt/llvm/lib/unwind -lunwind", + "CMAKE_SHARED_LINKER_FLAGS": "-L/opt/homebrew/opt/llvm/lib/c++ -L/opt/homebrew/opt/llvm/lib/unwind -lunwind", + "CMAKE_MODULE_LINKER_FLAGS": "-L/opt/homebrew/opt/llvm/lib/c++ -L/opt/homebrew/opt/llvm/lib/unwind -lunwind", + "CMAKE_CXX_FLAGS": "-stdlib=libc++ -I/opt/homebrew/opt/llvm/include/c++/v1" + }, + "warnings": { + "unusedCli": false + }, + "condition": { + "type": "equals", + "lhs": "${hostSystemName}", + "rhs": "Darwin" + } } ] } \ No newline at end of file diff --git a/bootstrap.py b/bootstrap.py index df29caad6b..08fb7ec84d 100644 --- a/bootstrap.py +++ b/bootstrap.py @@ -79,7 +79,7 @@ class InstallOptions: mrdocs_run_tests: bool = True # Third-party dependencies - third_party_src_dir: str = "/../third-party" + third_party_src_dir: str = "/build/third-party" # Duktape duktape_src_dir: str = "/duktape" @@ -638,7 +638,7 @@ def setup_mrdocs_src_dir(self): f"Source directory '{self.options.mrdocs_src_dir}' does not exist. Create and clone MrDocs there?", True): print("Installation aborted by user.") - return + exit(1) self.prompt_option("mrdocs_branch") self.prompt_option("mrdocs_repo") self.clone_repo(self.options.mrdocs_repo, self.options.mrdocs_src_dir, branch=self.options.mrdocs_branch) @@ -671,14 +671,6 @@ def prompt_dependency_path_option(self, name): value = getattr(self.options, name) value = os.path.abspath(value) setattr(self.options, name, value) - while self.is_inside_mrdocs_dir(value): - print(f"Error: {name} '{value}' cannot be inside mrdocs_src_dir '{self.options.mrdocs_src_dir}'.") - if not self.prompt_boolean(f"Would you like to specify a different {name} directory."): - print("Installation aborted by user.") - return - value = self.reprompt_option(name) - setattr(self.options, name, value) - if not os.path.exists(value): if not self.prompt_boolean(f"'{value}' does not exist. Create it?", True): raise FileNotFoundError(f"'{value}' does not exist and user chose not to create it.") @@ -1168,14 +1160,14 @@ def create_cmake_presets(self): for key, value in new_preset["cacheVariables"].items(): if not isinstance(value, str): continue - # Replace mrdocs-src-dir parent with ${sourceParentDir} - if mrdocs_src_dir_parent and value.startswith(mrdocs_src_dir_parent): - new_value = "${sourceParentDir}" + value[len(mrdocs_src_dir_parent):] - new_preset["cacheVariables"][key] = new_value # Replace mrdocs-src-dir with ${sourceDir} - elif self.options.mrdocs_src_dir and value.startswith(self.options.mrdocs_src_dir): + if self.options.mrdocs_src_dir and value.startswith(self.options.mrdocs_src_dir): new_value = "${sourceDir}" + value[len(self.options.mrdocs_src_dir):] new_preset["cacheVariables"][key] = new_value + # Replace mrdocs-src-dir parent with ${sourceParentDir} + elif mrdocs_src_dir_parent and value.startswith(mrdocs_src_dir_parent): + new_value = "${sourceParentDir}" + value[len(mrdocs_src_dir_parent):] + new_preset["cacheVariables"][key] = new_value # Replace $HOME with $env{HOME} elif home_dir and value.startswith(home_dir): new_value = "$env{HOME}" + value[len(home_dir):] @@ -1246,6 +1238,8 @@ def install_mrdocs(self): if self.options.mrdocs_build_dir and self.prompt_option("mrdocs_run_tests"): # Look for ctest path relative to the cmake path ctest_path = os.path.join(os.path.dirname(self.options.cmake_path), "ctest") + if self.is_windows(): + ctest_path += ".exe" if not os.path.exists(ctest_path): raise FileNotFoundError( f"ctest executable not found at {ctest_path}. Please ensure CMake is installed correctly.")