nix build: xo-reader: build + install docs+examples + build fix

This commit is contained in:
Roland Conybeare 2025-09-22 12:47:00 -04:00
commit d719705f2e
5 changed files with 50 additions and 12 deletions

View file

@ -77,8 +77,6 @@ let
in in
{ {
xo-reader = self.callPackage pkgs/xo-reader.nix {};
xo-jit = self.callPackage pkgs/xo-jit.nix { #stdenv = jitStdenv; xo-jit = self.callPackage pkgs/xo-jit.nix { #stdenv = jitStdenv;
#clang = llvmPackages2.clang; #clang = llvmPackages2.clang;
llvm = llvmPackages1.llvm; }; llvm = llvmPackages1.llvm; };
@ -131,6 +129,8 @@ let
xo-expression = self.callPackage pkgs/xo-expression.nix { buildExamples = true; }; xo-expression = self.callPackage pkgs/xo-expression.nix { buildExamples = true; };
xo-pyexpression = self.callPackage pkgs/xo-pyexpression.nix {}; xo-pyexpression = self.callPackage pkgs/xo-pyexpression.nix {};
xo-tokenizer = self.callPackage pkgs/xo-tokenizer.nix { buildDocs = true; buildExamples = true; }; 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-pyjit = self.callPackage pkgs/xo-pyjit.nix {};
# #
xo-userenv = self.callPackage pkgs/xo-userenv.nix {}; xo-userenv = self.callPackage pkgs/xo-userenv.nix {};

View file

@ -1,8 +1,15 @@
{ {
# dependencies # 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: stdenv.mkDerivation (finalattrs:
@ -12,11 +19,35 @@ stdenv.mkDerivation (finalattrs:
src = ../xo-reader; 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; doCheck = true;
nativeBuildInputs = [ cmake catch2
xo-cmake propagatedBuildInputs = [ ];
xo-expression
xo-tokenizer 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
];
}) })

View file

@ -23,6 +23,13 @@ add_subdirectory(examples)
add_subdirectory(utest) add_subdirectory(utest)
xo_export_cmake_config(${PROJECT_NAME} ${PROJECT_VERSION} ${PROJECT_NAME}Targets) 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, # docs targets depends on other library/utest/exec targets,
# must come after them # must come after them

View file

@ -5,7 +5,7 @@ set(SELF_SRCS exprrepl.cpp)
if (XO_ENABLE_EXAMPLES) if (XO_ENABLE_EXAMPLES)
xo_add_executable(${SELF_EXE} ${SELF_SRCS}) xo_add_executable(${SELF_EXE} ${SELF_SRCS})
xo_dependency(${SELF_EXE} xo_reader) xo_self_dependency(${SELF_EXE} xo_reader)
endif() endif()
# end CMakeLists.txt # end CMakeLists.txt

View file

@ -5,7 +5,7 @@ set(SELF_SRCS exprreplxx.cpp)
if (XO_ENABLE_EXAMPLES) if (XO_ENABLE_EXAMPLES)
xo_add_executable(${SELF_EXE} ${SELF_SRCS}) 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) xo_external_target_dependency(${SELF_EXE} replxx replxx::replxx)
find_package(Threads REQUIRED) find_package(Threads REQUIRED)