From d719705f2e2a51daca5d5bdd2ed0dfde76f7b803 Mon Sep 17 00:00:00 2001 From: Roland Conybeare Date: Mon, 22 Sep 2025 12:47:00 -0400 Subject: [PATCH] nix build: xo-reader: build + install docs+examples + build fix --- default.nix | 4 +- pkgs/xo-reader.nix | 47 ++++++++++++++++---- xo-reader/CMakeLists.txt | 7 +++ xo-reader/examples/exprrepl/CMakeLists.txt | 2 +- xo-reader/examples/exprreplxx/CMakeLists.txt | 2 +- 5 files changed, 50 insertions(+), 12 deletions(-) diff --git a/default.nix b/default.nix index d0d0f48d..45101a2e 100644 --- a/default.nix +++ b/default.nix @@ -77,8 +77,6 @@ let in { - xo-reader = self.callPackage pkgs/xo-reader.nix {}; - xo-jit = self.callPackage pkgs/xo-jit.nix { #stdenv = jitStdenv; #clang = llvmPackages2.clang; llvm = llvmPackages1.llvm; }; @@ -131,6 +129,8 @@ let xo-expression = self.callPackage pkgs/xo-expression.nix { buildExamples = true; }; xo-pyexpression = self.callPackage pkgs/xo-pyexpression.nix {}; xo-tokenizer = self.callPackage pkgs/xo-tokenizer.nix { buildDocs = true; buildExamples = true; }; + xo-reader = self.callPackage pkgs/xo-reader.nix { buildDocs = true; buildExamples = true; }; + xo-pyjit = self.callPackage pkgs/xo-pyjit.nix {}; # xo-userenv = self.callPackage pkgs/xo-userenv.nix {}; diff --git a/pkgs/xo-reader.nix b/pkgs/xo-reader.nix index 029329b5..f110ab56 100644 --- a/pkgs/xo-reader.nix +++ b/pkgs/xo-reader.nix @@ -1,8 +1,15 @@ { # dependencies - stdenv, cmake, catch2, replxx, + lib, stdenv, cmake, catch2, replxx, - xo-cmake, xo-expression, xo-tokenizer + python3Packages, + + doxygen, sphinx, graphviz, + + xo-cmake, xo-expression, xo-tokenizer, + + buildDocs ? false, + buildExamples ? false, } : stdenv.mkDerivation (finalattrs: @@ -12,11 +19,35 @@ stdenv.mkDerivation (finalattrs: src = ../xo-reader; - cmakeFlags = ["-DCMAKE_MODULE_PATH=${xo-cmake}/share/cmake"]; + cmakeFlags = ["-DCMAKE_MODULE_PATH=${xo-cmake}/share/cmake"] + ++ lib.optionals buildDocs ["-DXO_ENABLE_DOCS=on"] + ++ lib.optionals buildExamples ["-DXO_ENABLE_EXAMPLES=on"]; + + inherit buildDocs; + inherit buildExamples; + doCheck = true; - nativeBuildInputs = [ cmake catch2 - xo-cmake - xo-expression - xo-tokenizer - ]; + + propagatedBuildInputs = [ ]; + + postBuild = lib.optionalString buildDocs '' + cmake --build . -- docs + ''; + + nativeBuildInputs = [ cmake + catch2 + xo-cmake + xo-expression + xo-tokenizer + ] + ++ lib.optionals buildExamples [ replxx ] + ++ lib.optionals buildDocs [ + doxygen + sphinx + graphviz + python3Packages.sphinx-rtd-theme + python3Packages.breathe + python3Packages.sphinxcontrib-ditaa + python3Packages.sphinxcontrib-plantuml + ]; }) diff --git a/xo-reader/CMakeLists.txt b/xo-reader/CMakeLists.txt index 8c88ff68..7e9e339f 100644 --- a/xo-reader/CMakeLists.txt +++ b/xo-reader/CMakeLists.txt @@ -23,6 +23,13 @@ add_subdirectory(examples) add_subdirectory(utest) xo_export_cmake_config(${PROJECT_NAME} ${PROJECT_VERSION} ${PROJECT_NAME}Targets) +# ---------------------------------------------------------------- + +if (XO_ENABLE_EXAMPLES) + install(TARGETS xo_expression_repl DESTINATION bin/xo/example/reader) + install(TARGETS xo_expression_replxx DESTINATION bin/xo/example/reader) +endif() + # ---------------------------------------------------------------- # docs targets depends on other library/utest/exec targets, # must come after them diff --git a/xo-reader/examples/exprrepl/CMakeLists.txt b/xo-reader/examples/exprrepl/CMakeLists.txt index 9296f119..003c9cb0 100644 --- a/xo-reader/examples/exprrepl/CMakeLists.txt +++ b/xo-reader/examples/exprrepl/CMakeLists.txt @@ -5,7 +5,7 @@ set(SELF_SRCS exprrepl.cpp) if (XO_ENABLE_EXAMPLES) xo_add_executable(${SELF_EXE} ${SELF_SRCS}) - xo_dependency(${SELF_EXE} xo_reader) + xo_self_dependency(${SELF_EXE} xo_reader) endif() # end CMakeLists.txt diff --git a/xo-reader/examples/exprreplxx/CMakeLists.txt b/xo-reader/examples/exprreplxx/CMakeLists.txt index da33e668..c7365632 100644 --- a/xo-reader/examples/exprreplxx/CMakeLists.txt +++ b/xo-reader/examples/exprreplxx/CMakeLists.txt @@ -5,7 +5,7 @@ set(SELF_SRCS exprreplxx.cpp) if (XO_ENABLE_EXAMPLES) xo_add_executable(${SELF_EXE} ${SELF_SRCS}) - xo_dependency(${SELF_EXE} xo_reader) + xo_self_dependency(${SELF_EXE} xo_reader) xo_external_target_dependency(${SELF_EXE} replxx replxx::replxx) find_package(Threads REQUIRED)