diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml new file mode 100644 index 00000000..0e4ee7b0 --- /dev/null +++ b/.github/workflows/build.yml @@ -0,0 +1,89 @@ +name: build + +on: + push: + branches: [ unstable ] + pull_request: + branches: [ unstable ] + +jobs: + build: + + strategy: + matrix: + include: + - {os: ubuntu-20.04, cc: gcc-10, cxx: g++-10} + - {os: ubuntu-20.04, cc: clang-10, cxx: clang++-10} + - {os: macos-10.15, cc: gcc-10, cxx: g++-10} + - {os: macos-10.15, cc: /usr/local/opt/llvm/bin/clang, cxx: /usr/local/opt/llvm/bin/clang++} + + runs-on: ${{ matrix.os }} + + steps: + - uses: actions/checkout@v2 + + - name: Install ubuntu dependencies + if: matrix.os == 'ubuntu-20.04' + run: > + sudo apt-get install + clang-10 + g++-10 + gfortran + hdf5-tools + libblas-dev + libboost-dev + libclang-10-dev + libc++-10-dev + libc++abi-10-dev + libfftw3-dev + libgfortran4 + libgmp-dev + libhdf5-dev + liblapack-dev + libopenmpi-dev + openmpi-bin + openmpi-common + openmpi-doc + python3-clang-10 + python3-dev + python3-mako + python3-matplotlib + python3-mpi4py + python3-numpy + python3-pip + python3-scipy + python3-sphinx + python3-nbsphinx + + - name: Install homebrew dependencies + if: matrix.os == 'macos-10.15' + run: | + brew install gcc@10 llvm@10 boost fftw hdf5 open-mpi openblas numpy scipy mpi4py + pip3 install mako + pip3 install -r requirements.txt + + - name: Build & Install TRIQS + env: + CC: ${{ matrix.cc }} + CXX: ${{ matrix.cxx }} + run: | + git clone https://github.com/TRIQS/triqs --branch unstable + mkdir triqs/build && cd triqs/build + cmake .. -DBuild_Tests=OFF -DCMAKE_INSTALL_PREFIX=$HOME/install + make -j1 install VERBOSE=1 + cd ../ + + - name: Build dft_tools + env: + CC: ${{ matrix.cc }} + CXX: ${{ matrix.cxx }} + run: | + source $HOME/install/share/triqsvars.sh + mkdir build && cmake -B build + cmake --build build -j2 + + - name: Test dft_tools + run: | + source $HOME/install/share/triqsvars.sh + cd build + ctest -j2 --output-on-failure diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index 7ffe737b..00000000 --- a/.travis.yml +++ /dev/null @@ -1,34 +0,0 @@ - -language: cpp -sudo: required -dist: bionic - -compiler: - - gcc - - clang - -before_install: - - sudo apt-get update - - sudo apt-get install -y --allow-unauthenticated libblas-dev libboost-all-dev libfftw3-dev libgfortran3 libhdf5-serial-dev libgmp-dev liblapack-dev libopenmpi-dev libclang-dev python-clang-6.0 python-dev python-h5py python-mako python-matplotlib python-mpi4py python-numpy python-scipy python-sphinx libjs-mathjax libnfft3-dev - -install: true - -script: - - export INSTALL_DIR=$HOME/root_install # We install outside the repository - # ===== Set up TRIQS - - cd $TRAVIS_BUILD_DIR - - git clone https://github.com/TRIQS/triqs --branch unstable - - mkdir triqs/build && cd triqs/build - - cmake .. -DBuild_Tests=OFF -DCMAKE_INSTALL_PREFIX=$INSTALL_DIR - - make -j2 install - - source $INSTALL_DIR/share/triqsvars.sh - # ===== Set up triqs_dft_tools and test - - cd $TRAVIS_BUILD_DIR - - mkdir build && cd build - - cmake .. -DASAN=ON -DUBSAN=ON - - export UBSAN_SYMBOLIZER_PATH=$(which llvm-symbolizer) - - export ASAN_SYMBOLIZER_PATH=$(which llvm-symbolizer) - - export UBSAN_OPTIONS=symbolize=1:print_stacktrace=1 - - export ASAN_OPTIONS=symbolize=1:detect_leaks=0 - - export CTEST_OUTPUT_ON_FAILURE=1 - - make -j2 && make test diff --git a/Jenkinsfile b/Jenkinsfile index 9338c5d1..cfb28fc9 100644 --- a/Jenkinsfile +++ b/Jenkinsfile @@ -102,6 +102,7 @@ for (int i = 0; i < osxPlatforms.size(); i++) { } /****************** wrap-up */ +def error = null try { parallel platforms if (keepInstall) { node("docker") { @@ -150,13 +151,13 @@ try { } } } } } catch (err) { + error = err +} finally { /* send email on build failure (declarative pipeline's post section would work better) */ - if (env.BRANCH_NAME != "jenkins") emailext( + if ((error != null || currentBuild.currentResult != 'SUCCESS') && env.BRANCH_NAME != "jenkins") emailext( subject: "\$PROJECT_NAME - Build # \$BUILD_NUMBER - FAILED", body: """\$PROJECT_NAME - Build # \$BUILD_NUMBER - FAILED -$err - Check console output at \$BUILD_URL to view full results. Building \$BRANCH_NAME for \$CAUSE @@ -168,11 +169,11 @@ Changes: End of build log: \${BUILD_LOG,maxLines=60} """, - to: 'mzingl@flatironinstitute.org, hstrand@flatironinstitute.org, nwentzell@flatironinstitute.org, dsimon@flatironinstitute.org', + to: 'mzingl@flatironinstitute.org, ahampel@flatironinstitute.org, nwentzell@flatironinstitute.org, dsimon@flatironinstitute.org', recipientProviders: [ [$class: 'DevelopersRecipientProvider'], ], replyTo: '$DEFAULT_REPLYTO' ) - throw err + if (error != null) throw error } diff --git a/deps/CMakeLists.txt b/deps/CMakeLists.txt index 25c49960..dad295fd 100644 --- a/deps/CMakeLists.txt +++ b/deps/CMakeLists.txt @@ -17,7 +17,8 @@ include(external_dependency.cmake) # to locate the package in the system. # Skip this step if Build_Deps option is set. # 2. Try to find a directory containing the sources -# at ${PROJECT_SOURCE_DIR}/deps/name. If found +# at ${CMAKE_CURRENT_SOURCE_DIR}/name and +# ${CMAKE_SOURCE_DIR}/deps/name. If found # build it as a cmake sub-project. # 3. If GIT_REPO is provided, git clone the sources, # and build them as a cmake sub-project. @@ -34,7 +35,7 @@ include(external_dependency.cmake) # In particular the dependency will not be installed. if(NOT DEFINED Build_Deps) - set(Build_Deps "Never" CACHE STRING "Do we build dependencies from source? [Never/Always/IfNotFound]") + set(Build_Deps "IfNotFound" CACHE STRING "Do we build dependencies from source? [Never/Always/IfNotFound]") else() set(Build_Deps_Opts "Never" "Always" "IfNotFound") if(NOT ${Build_Deps} IN_LIST Build_Deps_Opts) diff --git a/deps/external_dependency.cmake b/deps/external_dependency.cmake index d29225eb..19dd26dc 100644 --- a/deps/external_dependency.cmake +++ b/deps/external_dependency.cmake @@ -1,25 +1,38 @@ -################################################################################### +# Copyright (c) 2020 Simons Foundation # -# TRIQS_DFT_TOOLS: a Toolbox for Research in Interacting Quantum Systems +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # -# Copyright (C) 2020 Simons Foundation -# authors: N. Wentzell +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# TRIQS_DFT_TOOLS is free software: you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation, either version 3 of the License, or (at your option) any later -# version. -# -# TRIQS_DFT_TOOLS is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -# details. -# -# You should have received a copy of the GNU General Public License along with -# TRIQS_DFT_TOOLS. If not, see . -# -################################################################################### +# You may obtain a copy of the License at +# https://www.gnu.org/licenses/gpl-3.0.txt + +# Consider ROOT env variables in find_package +if(POLICY CMP0074) + cmake_policy(SET CMP0074 NEW) +endif() + +# Make sure that imported targets are always global +get_property(IMPORTED_ALWAYS_GLOBAL GLOBAL PROPERTY IMPORTED_ALWAYS_GLOBAL) +if(NOT IMPORTED_ALWAYS_GLOBAL) + function(add_library) + set(_args ${ARGN}) + if ("${_args}" MATCHES ";IMPORTED") + list(APPEND _args GLOBAL) + endif() + _add_library(${_args}) + endfunction() + set_property(GLOBAL PROPERTY IMPORTED_ALWAYS_GLOBAL TRUE) +endif() + +# Define External Dependency Function function(external_dependency) cmake_parse_arguments(ARG "EXCLUDE_FROM_ALL;BUILD_ALWAYS" "VERSION;GIT_REPO;GIT_TAG" "" ${ARGN}) @@ -51,6 +64,9 @@ function(external_dependency) if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/${ARGV0}) message(STATUS "Found sources for dependency ${ARGV0} at ${CMAKE_CURRENT_SOURCE_DIR}/${ARGV0}") add_subdirectory(${ARGV0} ${subdir_opts}) + elseif(IS_DIRECTORY ${CMAKE_SOURCE_DIR}/deps/${ARGV0}) + message(STATUS "Found sources for dependency ${ARGV0} at ${CMAKE_SOURCE_DIR}/deps/${ARGV0}") + add_subdirectory(${ARGV0} ${subdir_opts}) elseif(ARG_GIT_REPO) set(bin_dir ${CMAKE_CURRENT_BINARY_DIR}/${ARGV0}) set(src_dir ${bin_dir}_src) diff --git a/doc/install.rst b/doc/install.rst index 0def24bd..a3956d3c 100644 --- a/doc/install.rst +++ b/doc/install.rst @@ -48,13 +48,6 @@ Installation steps $ git clone https://github.com/TRIQS/dft_tools dft_tools.src -#. Make sure that all additional dependencies are installed on your system and available in your environment. - Alternatively build the dependencies from source instead with:: - - $ (cd deps && ./download.sh) - - In this case they will be installed together with your application. - #. Create and move to a new directory where you will compile the code:: $ mkdir dft_tools.build && cd dft_tools.build diff --git a/doc/themes/agogo/static/bgfooter.png b/doc/themes/agogo/static/bgfooter.png new file mode 100644 index 00000000..9ce5bdd9 Binary files /dev/null and b/doc/themes/agogo/static/bgfooter.png differ diff --git a/doc/themes/agogo/static/bgtop.png b/doc/themes/agogo/static/bgtop.png new file mode 100644 index 00000000..a0d4709b Binary files /dev/null and b/doc/themes/agogo/static/bgtop.png differ diff --git a/doc/themes/triqs/static/bodybg.png b/doc/themes/triqs/static/bodybg.png new file mode 100644 index 00000000..506b6f90 Binary files /dev/null and b/doc/themes/triqs/static/bodybg.png differ diff --git a/doc/themes/triqs/static/footerbg.png b/doc/themes/triqs/static/footerbg.png new file mode 100644 index 00000000..d1922b44 Binary files /dev/null and b/doc/themes/triqs/static/footerbg.png differ diff --git a/doc/themes/triqs/static/headerbg.png b/doc/themes/triqs/static/headerbg.png new file mode 100644 index 00000000..6d3e1d5e Binary files /dev/null and b/doc/themes/triqs/static/headerbg.png differ diff --git a/doc/themes/triqs/static/listitem.png b/doc/themes/triqs/static/listitem.png new file mode 100644 index 00000000..e45715f9 Binary files /dev/null and b/doc/themes/triqs/static/listitem.png differ diff --git a/doc/themes/triqs/static/relbg.png b/doc/themes/triqs/static/relbg.png new file mode 100644 index 00000000..47225851 Binary files /dev/null and b/doc/themes/triqs/static/relbg.png differ diff --git a/packaging/TRIQS-triqs_dft_tools-3.0.0-foss-2019a-Python-3.7.2.eb b/packaging/TRIQS-triqs_dft_tools-3.0.0-foss-2019a-Python-3.7.2.eb new file mode 100644 index 00000000..40ba51f6 --- /dev/null +++ b/packaging/TRIQS-triqs_dft_tools-3.0.0-foss-2019a-Python-3.7.2.eb @@ -0,0 +1,70 @@ +easyblock = 'CMakeMake' + +name = 'TRIQS-dft_tools' +version = '3.0.0' +versionsuffix = '-Python-%(pyver)s' + +homepage = 'https://triqs.github.io/dft_tools/' +description = """ + TRIQS (Toolbox for Research on Interacting Quantum Systems) is a + scientific project providing a set of C++ and Python libraries to + develop new tools for the study of interacting quantum systems. + + This TRIQS-based-based application is aimed at ab-initio calculations + for correlated materials, combining realistic DFT band-structure calculation + with the dynamical mean-field theory. Together with the necessary tools to + perform the DMFT self-consistency loop for realistic multi-band problems, + the package provides a full-fledged charge self-consistent interface to the + Wien2K package. In addition, if Wien2k is not available, it provides a generic + interface for one-shot DFT+DMFT calculations, where only the single-particle + Hamiltonian in orbital space has to be provided. +""" + +docurls = ['https://triqs.github.io/dft_tools/%(version_major_minor)s.x/'] +software_license = 'LicenseGPLv3' + +toolchain = {'name': 'foss', 'version': '2019a'} +toolchainopts = {'pic': True, 'usempi': True} + +source_urls = ['https://github.com/TRIQS/dft_tools/releases/download/%(version)s/'] +sources = ['dft_tools-%(version)s.tar.gz'] +checksums = ['PUT HERE THE SHA256 OF THE RELEASE TARBALL'] + +dependencies = [ + ('Python', '3.7.2'), + ('SciPy-bundle', '2019.03'), + ('Boost', '1.70.0'), + ('Clang', '8.0.0'), + ('GMP', '6.1.2'), + ('Mako', '1.0.8'), + ('h5py', '2.9.0'), + ('TRIQS', '3.0.0', versionsuffix), +] + +builddependencies = [ + ('CMake', '3.13.3') +] + +separate_build_dir = True + +runtest = 'test' + +sanity_check_paths = { + 'files': ['bin/dmftproj', 'lib/libtriqs_dft_tools_c.%s' % SHLIB_EXT], + 'dirs': ['include/triqs_dft_tools', 'bin', 'lib', 'share', + 'lib/python%(pyshortver)s/site-packages/triqs_dft_tools'], +} + +sanity_check_commands = ["python -c 'import triqs_dft_tools'"] + +modextrapaths = { + 'CPLUS_INCLUDE_PATH': 'include', + 'PYTHONPATH': 'lib/python%(pyshortver)s/site-packages', + 'CMAKE_PREFIX_PATH': 'lib/cmake/triqs_dft_tools', +} +modextravars = { + 'TRIQS_DFT_TOOLS_ROOT': '%(installdir)s', + 'TRIQS_DFT_TOOLS_VERSION': '%(version)s', +} + +moduleclass = 'phys' diff --git a/packaging/conda/build.sh b/packaging/conda/build.sh new file mode 100644 index 00000000..e3d1f540 --- /dev/null +++ b/packaging/conda/build.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash + +mkdir build +cd build + +# Openmpi Specific environment setup - Cf. https://github.com/conda-forge/libnetcdf-feedstock/pull/80 +export OMPI_MCA_btl=self,tcp +export OMPI_MCA_plm=isolated +export OMPI_MCA_rmaps_base_oversubscribe=yes +export OMPI_MCA_btl_vader_single_copy_mechanism=none +mpiexec="mpiexec --allow-run-as-root" + +source $PREFIX/share/triqsvars.sh + +cmake \ + -DCMAKE_INSTALL_PREFIX=$PREFIX \ + -DCMAKE_BUILD_TYPE=Release \ + .. + +make -j${CPU_COUNT} VERBOSE=1 +CTEST_OUTPUT_ON_FAILURE=1 ctest +make install diff --git a/packaging/conda/conda_build_config.yaml b/packaging/conda/conda_build_config.yaml new file mode 100644 index 00000000..289631fa --- /dev/null +++ b/packaging/conda/conda_build_config.yaml @@ -0,0 +1,3 @@ +mpi: + - mpich + - openmpi diff --git a/packaging/conda/meta.yaml b/packaging/conda/meta.yaml new file mode 100644 index 00000000..288a30f5 --- /dev/null +++ b/packaging/conda/meta.yaml @@ -0,0 +1,55 @@ +{% set version = "3.0.0" %} + +package: + name: triqs_dft_tools + version: {{ version }} + +source: + url: https://github.com/TRIQS/dft_tools/releases/download/{{ version }}/dft_tools-{{ version }}.tar.gz + sha256: PUT HERE THE SHA256 OF YOUR RELEASE TARBALL + +build: + number: 0 + skip: True # [win or py<30] + +requirements: + build: + - cmake + - make + - {{ compiler('c') }} + - {{ compiler('cxx') }} + - {{ compiler('fortran') }} + host: + - triqs {{ '.'.join(version.split('.')[:2]) }} + - boost-cpp + - {{ mpi }} + - libblas + - liblapack + - python + run: + - {{ pin_compatible("triqs", max_pin="x.x") }} + - {{ mpi }} + - libblas + - liblapack + - python + +test: + commands: + - export OMPI_MCA_btl=self,tcp + - export OMPI_MCA_plm=isolated + - export OMPI_MCA_rmaps_base_oversubscribe=yes + - export OMPI_MCA_btl_vader_single_copy_mechanism=none + - export mpiexec="mpiexec --allow-run-as-root" + - python -c "import triqs_dft_tools" + +about: + home: https://triqs.github.io/dft_tools + license: GPL-3.0-or-later + license_family: GPL + license_file: LICENSE.txt + summary: 'Toolbox for ab initio calculations of correlated materials' + +extra: + recipe-maintainers: + - wentzell + - pgunn diff --git a/share/cmake/extract_flags.cmake b/share/cmake/extract_flags.cmake index dfcf67b0..ed5b6c1f 100644 --- a/share/cmake/extract_flags.cmake +++ b/share/cmake/extract_flags.cmake @@ -1,24 +1,18 @@ -################################################################################### +# Copyright (c) 2019-2020 Simons Foundation # -# TRIQS: a Toolbox for Research in Interacting Quantum Systems +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. # -# Copyright (C) 2019-2020 Simons Foundation -# author: N. Wentzell +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. # -# TRIQS is free software: you can redistribute it and/or modify it under the -# terms of the GNU General Public License as published by the Free Software -# Foundation, either version 3 of the License, or (at your option) any later -# version. -# -# TRIQS is distributed in the hope that it will be useful, but WITHOUT ANY -# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS -# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more -# details. -# -# You should have received a copy of the GNU General Public License along with -# TRIQS. If not, see . -# -################################################################################### +# You may obtain a copy of the License at +# https://www.gnu.org/licenses/gpl-3.0.txt + # Recursively fetch all targets that the interface of a target depends upon macro(get_all_interface_targets name target) @@ -89,7 +83,8 @@ macro(extract_flags) endif() endforeach() - # We have to replace generator expressions explicitly + # ==== We have to replace generator expressions explicitly ==== + if(ARG_BUILD_INTERFACE) string(REGEX REPLACE "\\$" "\\1" ${target}_LDFLAGS "${${target}_LDFLAGS}") string(REGEX REPLACE "\\$" "\\1" ${target}_CXXFLAGS "${${target}_CXXFLAGS}") @@ -97,6 +92,25 @@ macro(extract_flags) string(REGEX REPLACE "\\$" "\\1" ${target}_LDFLAGS "${${target}_LDFLAGS}") string(REGEX REPLACE "\\$" "\\1" ${target}_CXXFLAGS "${${target}_CXXFLAGS}") endif() + + if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU") + string(REGEX REPLACE "\\$<\\$:([^ ]*)>" "\\1" ${target}_LDFLAGS "${${target}_LDFLAGS}") + string(REGEX REPLACE "\\$<\\$:([^ ]*)>" "\\1" ${target}_CXXFLAGS "${${target}_CXXFLAGS}") + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang") + string(REGEX REPLACE "\\$<\\$:([^ ]*)>" "\\1" ${target}_LDFLAGS "${${target}_LDFLAGS}") + string(REGEX REPLACE "\\$<\\$:([^ ]*)>" "\\1" ${target}_CXXFLAGS "${${target}_CXXFLAGS}") + elseif(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang") + string(REGEX REPLACE "\\$<\\$:([^ ]*)>" "\\1" ${target}_LDFLAGS "${${target}_LDFLAGS}") + string(REGEX REPLACE "\\$<\\$:([^ ]*)>" "\\1" ${target}_CXXFLAGS "${${target}_CXXFLAGS}") + endif() + + # Remove all remaining generator expressions string(REGEX REPLACE " [^ ]*\\$<[^ ]*:[^>]*>" "" ${target}_LDFLAGS "${${target}_LDFLAGS}") string(REGEX REPLACE " [^ ]*\\$<[^ ]*:[^>]*>" "" ${target}_CXXFLAGS "${${target}_CXXFLAGS}") + + # Filter out system directories from LDFLAGS and CXXFLAGS + string(REGEX REPLACE " -L/usr/lib " " " ${target}_LDFLAGS "${${target}_LDFLAGS}") + string(REGEX REPLACE " -I/usr/include " " " ${target}_CXXFLAGS "${${target}_CXXFLAGS}") + string(REGEX REPLACE " -isystem/usr/include " " " ${target}_CXXFLAGS "${${target}_CXXFLAGS}") + endmacro() diff --git a/share/cmake/triqs_dft_tools-config.cmake.in b/share/cmake/triqs_dft_tools-config.cmake.in index e9101328..940e75f6 100644 --- a/share/cmake/triqs_dft_tools-config.cmake.in +++ b/share/cmake/triqs_dft_tools-config.cmake.in @@ -15,13 +15,18 @@ set(@PROJECT_NAME@_GIT_HASH @PROJECT_GIT_HASH@ CACHE STRING "@PROJECT_NAME@ git set(@PROJECT_NAME@_ROOT @CMAKE_INSTALL_PREFIX@ CACHE STRING "@PROJECT_NAME@ root directory") ## Find the target dependencies -#include(CMakeFindDependencyMacro) -#find_dependency(... HINTS @CMAKE_INSTALL_PREFIX@) +#function(find_dep) +# get_property(${ARGV0}_FOUND GLOBAL PROPERTY ${ARGV0}_FOUND) +# if(NOT ${ARGV0}_FOUND) +# find_package(${ARGN} REQUIRED HINTS @CMAKE_INSTALL_PREFIX@) +# endif() +#endfunction() +#find_dep(depname 1.0) # Include the exported targets of this project include(@CMAKE_INSTALL_PREFIX@/lib/cmake/@PROJECT_NAME@/@PROJECT_NAME@-targets.cmake) -message(STATUS "Found @PROJECT_NAME@-config.cmake with version @PROJECT_VERSION@, hash = @PROJECT_GIT_HASH@") +message(STATUS "Found @PROJECT_NAME@-config.cmake with version @PROJECT_VERSION@, hash = @PROJECT_GIT_HASH@, root = @CMAKE_INSTALL_PREFIX@") # Was the Project built with Documentation? set(@PROJECT_NAME@_WITH_DOCUMENTATION @Build_Documentation@ CACHE BOOL "Was @PROJECT_NAME@ build with documentation?")