pysjef 1.45.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (82) hide show
  1. pysjef-1.45.6/.clang-format +9 -0
  2. pysjef-1.45.6/.gitattributes +1 -0
  3. pysjef-1.45.6/.github/workflows/build-and-test.yml +115 -0
  4. pysjef-1.45.6/.github/workflows/docker-publish.yml +53 -0
  5. pysjef-1.45.6/.github/workflows/doxygen-gh-pages.yml +40 -0
  6. pysjef-1.45.6/.github/workflows/wheels.yml +73 -0
  7. pysjef-1.45.6/.gitignore +21 -0
  8. pysjef-1.45.6/CMakeLists.txt +131 -0
  9. pysjef-1.45.6/Doxyfile.in +2772 -0
  10. pysjef-1.45.6/LICENSE +23 -0
  11. pysjef-1.45.6/PKG-INFO +30 -0
  12. pysjef-1.45.6/README.md +21 -0
  13. pysjef-1.45.6/docker/Dockerfile +39 -0
  14. pysjef-1.45.6/program/CMakeLists.txt +40 -0
  15. pysjef-1.45.6/program/main.cpp +4 -0
  16. pysjef-1.45.6/program/osx-localize-binaries +43 -0
  17. pysjef-1.45.6/program/uninstall.in +3 -0
  18. pysjef-1.45.6/pyproject.toml +43 -0
  19. pysjef-1.45.6/sjef-program.md +57 -0
  20. pysjef-1.45.6/src/CMakeLists.txt +3 -0
  21. pysjef-1.45.6/src/pysjef/__init__.py +27 -0
  22. pysjef-1.45.6/src/pysjef/_version.py +24 -0
  23. pysjef-1.45.6/src/pysjef/container.py +198 -0
  24. pysjef-1.45.6/src/pysjef/node.py +92 -0
  25. pysjef-1.45.6/src/pysjef/node_xml.py +162 -0
  26. pysjef-1.45.6/src/pysjef/project.py +497 -0
  27. pysjef-1.45.6/src/pysjef/project_factory.py +34 -0
  28. pysjef-1.45.6/src/pysjef/project_wrapper.pxd +66 -0
  29. pysjef-1.45.6/src/pysjef/project_wrapper.pyx +462 -0
  30. pysjef-1.45.6/src/pysjef/select.py +544 -0
  31. pysjef-1.45.6/src/pysjef/settings.py +42 -0
  32. pysjef-1.45.6/src/pysjef/test/test_run.py +59 -0
  33. pysjef-1.45.6/src/pysjef/test/test_select.py +213 -0
  34. pysjef-1.45.6/src/pysjef/test/test_tree_view.py +25 -0
  35. pysjef-1.45.6/src/pysjef/test/tree_3lvl.py +88 -0
  36. pysjef-1.45.6/src/pysjef/tree_view.py +86 -0
  37. pysjef-1.45.6/src/sjef/CMakeLists.txt +48 -0
  38. pysjef-1.45.6/src/sjef/backend-config.cpp +312 -0
  39. pysjef-1.45.6/src/sjef/backend-config.h +30 -0
  40. pysjef-1.45.6/src/sjef/backends.md +63 -0
  41. pysjef-1.45.6/src/sjef/dummy.cpp +13 -0
  42. pysjef-1.45.6/src/sjef/sjef-backend.cpp +49 -0
  43. pysjef-1.45.6/src/sjef/sjef-backend.h +69 -0
  44. pysjef-1.45.6/src/sjef/sjef-c.cpp +537 -0
  45. pysjef-1.45.6/src/sjef/sjef-c.h +124 -0
  46. pysjef-1.45.6/src/sjef/sjef-customization.cpp +105 -0
  47. pysjef-1.45.6/src/sjef/sjef-program.cpp +276 -0
  48. pysjef-1.45.6/src/sjef/sjef-program.h +8 -0
  49. pysjef-1.45.6/src/sjef/sjef.cpp +1252 -0
  50. pysjef-1.45.6/src/sjef/sjef.h +658 -0
  51. pysjef-1.45.6/src/sjef/util/Job.cpp +437 -0
  52. pysjef-1.45.6/src/sjef/util/Job.h +92 -0
  53. pysjef-1.45.6/src/sjef/util/Locker.cpp +66 -0
  54. pysjef-1.45.6/src/sjef/util/Locker.h +62 -0
  55. pysjef-1.45.6/src/sjef/util/Logger.h +75 -0
  56. pysjef-1.45.6/src/sjef/util/Shell.cpp +344 -0
  57. pysjef-1.45.6/src/sjef/util/Shell.h +108 -0
  58. pysjef-1.45.6/src/sjef/util/util.h +44 -0
  59. pysjef-1.45.6/test/CMakeLists.txt +50 -0
  60. pysjef-1.45.6/test/He.molpro/He.inp +7 -0
  61. pysjef-1.45.6/test/He.molpro/Info.plist +23 -0
  62. pysjef-1.45.6/test/He.molpro/run/1.molpro/.Info.plist.writing_object +1 -0
  63. pysjef-1.45.6/test/He.molpro/run/1.molpro/.lock +0 -0
  64. pysjef-1.45.6/test/He.molpro/run/1.molpro/.molpro.rc.lock +0 -0
  65. pysjef-1.45.6/test/He.molpro/run/1.molpro/1.inp +7 -0
  66. pysjef-1.45.6/test/He.molpro/run/1.molpro/1.lock +0 -0
  67. pysjef-1.45.6/test/He.molpro/run/1.molpro/1.out +347 -0
  68. pysjef-1.45.6/test/He.molpro/run/1.molpro/1.stderr +0 -0
  69. pysjef-1.45.6/test/He.molpro/run/1.molpro/1.stdout +0 -0
  70. pysjef-1.45.6/test/He.molpro/run/1.molpro/1.xml +104 -0
  71. pysjef-1.45.6/test/He.molpro/run/1.molpro/Info.plist +17 -0
  72. pysjef-1.45.6/test/He.molpro/run/1.molpro/molpro.rc +1 -0
  73. pysjef-1.45.6/test/logger.cpp +44 -0
  74. pysjef-1.45.6/test/test-Locker.cpp +183 -0
  75. pysjef-1.45.6/test/test-Shell.cpp +205 -0
  76. pysjef-1.45.6/test/test-backend-config.cpp +125 -0
  77. pysjef-1.45.6/test/test-c-sjef-backend.c +38 -0
  78. pysjef-1.45.6/test/test-sjef-c.cpp +125 -0
  79. pysjef-1.45.6/test/test-sjef-molpro.cpp +194 -0
  80. pysjef-1.45.6/test/test-sjef.cpp +929 -0
  81. pysjef-1.45.6/test/test-sjef.h +103 -0
  82. pysjef-1.45.6/test/test_spaces.sh +60 -0
@@ -0,0 +1,9 @@
1
+ ---
2
+ Language: Cpp
3
+ BasedOnStyle: LLVM
4
+ ColumnLimit: 120
5
+ DerivePointerAlignment: true
6
+ PointerAlignment: Left
7
+ AlwaysBreakTemplateDeclarations: Yes
8
+ ...
9
+
@@ -0,0 +1 @@
1
+ CMakeLists.txt export-subst
@@ -0,0 +1,115 @@
1
+ name: Build and test
2
+
3
+ on:
4
+ push:
5
+ branches: [ "main" , "master" ]
6
+ pull_request:
7
+ branches: [ "main" , "master" ]
8
+ workflow_dispatch:
9
+
10
+ env:
11
+ CMAKE_BUILD_TYPE: Release
12
+
13
+ jobs:
14
+
15
+ cmake-build:
16
+ strategy:
17
+ fail-fast: false
18
+ matrix:
19
+ os: [ubuntu-latest, ubuntu-24.04-arm]
20
+ runs-on: ${{ matrix.os }}
21
+ container:
22
+ image: ghcr.io/${{ github.repository }}
23
+ credentials:
24
+ username: ${{ github.actor }}
25
+ password: ${{ secrets.GITHUB_TOKEN }}
26
+ timeout-minutes: 10
27
+
28
+ steps:
29
+ - uses: actions/checkout@v3
30
+
31
+ - name: Check existence of build configuration file
32
+ id: check_configuration
33
+ uses: andstor/file-existence-action@v1
34
+ with:
35
+ files: "CMakeLists.txt"
36
+
37
+ - name: ccache
38
+ uses: hendrikmuhs/ccache-action@v1.2
39
+
40
+ - name: Configure CMake
41
+ if: steps.check_configuration.outputs.files_exists == 'true'
42
+ run: |
43
+ git config --global --add safe.directory /__w/sjef/sjef
44
+ cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.CMAKE_BUILD_TYPE}} -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache --log-level=DEBUG
45
+
46
+ - name: Build
47
+ if: steps.check_configuration.outputs.files_exists == 'true'
48
+ run: cmake --build ${{github.workspace}}/build --config ${{env.CMAKE_BUILD_TYPE}}
49
+
50
+ - name: Test
51
+ if: steps.check_configuration.outputs.files_exists == 'true'
52
+ run: |
53
+ service ssh restart
54
+ service ssh status
55
+ ssh localhost hostname || ssh -v localhost hostname
56
+ cd ${{github.workspace}}/build && ctest -C ${{env.CMAKE_BUILD_TYPE}} || ctest -C ${{env.CMAKE_BUILD_TYPE}} -V --rerun-failed --output-on-failure
57
+
58
+ - name: Build doxygen
59
+ run: cmake --build ${{github.workspace}}/build --target sjef-doc
60
+
61
+ unix-python:
62
+ strategy:
63
+ fail-fast: false
64
+ matrix:
65
+ os: [ubuntu-latest, ubuntu-24.04-arm]
66
+ runs-on: ${{ matrix.os }}
67
+ container:
68
+ image: ghcr.io/${{ github.repository }}
69
+ credentials:
70
+ username: ${{ github.actor }}
71
+ password: ${{ secrets.GITHUB_TOKEN }}
72
+ timeout-minutes: 5
73
+ steps:
74
+ - uses: actions/checkout@v3
75
+ - name: Build
76
+ run: |
77
+ git config --global --add safe.directory /__w/sjef/sjef
78
+ . /opt/conda/etc/profile.d/conda.sh
79
+ python -m pip install .
80
+ - name: Test
81
+ run: |
82
+ mkdir -p /var/run/sshd
83
+ /usr/sbin/sshd
84
+ pytest
85
+ windows-python:
86
+ strategy:
87
+ fail-fast: false
88
+ matrix:
89
+ os: [ windows-latest ] #, windows-11-arm ]
90
+ runs-on: ${{ matrix.os }}
91
+ timeout-minutes: 10
92
+ steps:
93
+ - uses: actions/checkout@v3
94
+ - name: Setup Miniconda
95
+ uses: conda-incubator/setup-miniconda@v3
96
+ with:
97
+ auto-update-conda: true
98
+
99
+ - name: Environment
100
+ shell: pwsh
101
+ run: |
102
+ conda activate test
103
+ $CMAKE_INSTALL_PREFIX = $Env:CONDA_PREFIX -replace '\\','/'
104
+ echo ('CMAKE_INSTALL_PREFIX={0}' -f $CMAKE_INSTALL_PREFIX) | Out-File -FilePath $Env:GITHUB_ENV -Encoding utf8 -Append
105
+ - name: Build
106
+ shell: pwsh
107
+ run: |
108
+ conda activate test
109
+ python -m pip install .
110
+ - name: Minimal test
111
+ shell: pwsh
112
+ run: |
113
+ conda activate test
114
+ python -c "import pysjef; p=pysjef.Project('test'); print(p); print(pysjef.__version__);print(p.filename())"
115
+
@@ -0,0 +1,53 @@
1
+ name: Docker build and publish
2
+
3
+ on:
4
+ push:
5
+ paths:
6
+ - docker/Dockerfile
7
+ - .github/workflows/docker-publish.yml
8
+ workflow_dispatch:
9
+ env:
10
+ REGISTRY: ghcr.io
11
+ IMAGE_NAME: ${{ github.repository }}
12
+
13
+ jobs:
14
+ build:
15
+ runs-on: ubuntu-latest
16
+ permissions:
17
+ contents: read
18
+ packages: write
19
+
20
+ steps:
21
+ - name: Checkout repository
22
+ uses: actions/checkout@v3
23
+
24
+ - name: Setup Docker buildx
25
+ uses: docker/setup-buildx-action@v3.12.0
26
+
27
+ - name: Log into registry ${{ env.REGISTRY }}
28
+ if: github.event_name != 'pull_request'
29
+ uses: docker/login-action@v3.7.0
30
+ with:
31
+ registry: ${{ env.REGISTRY }}
32
+ username: ${{ github.actor }}
33
+ password: ${{ secrets.GITHUB_TOKEN }}
34
+
35
+ - name: Extract Docker metadata
36
+ id: meta
37
+ uses: docker/metadata-action@98669ae865ea3cffbcbaa878cf57c20bbf1c6c38
38
+ with:
39
+ images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
40
+ tags: |
41
+ type=ref,event=branch
42
+ type=ref,event=pr
43
+ latest
44
+
45
+ - name: Build and push Docker image
46
+ id: build-and-push
47
+ uses: docker/build-push-action@v6.19.2
48
+ with:
49
+ context: docker
50
+ push: ${{ github.event_name != 'pull_request' }}
51
+ tags: ${{ steps.meta.outputs.tags }}
52
+ labels: ${{ steps.meta.outputs.labels }}
53
+ platforms: linux/amd64,linux/arm64
@@ -0,0 +1,40 @@
1
+ name: Build doxygen pages and publish to github pages
2
+
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ branches:
7
+ - master
8
+
9
+ jobs:
10
+ build-and-deploy:
11
+ runs-on: ubuntu-latest
12
+ container:
13
+ # relies on repository name being all lower case
14
+ image: ghcr.io/${{ github.repository }}
15
+ credentials:
16
+ username: ${{ github.actor }}
17
+ password: ${{ secrets.GITHUB_TOKEN }}
18
+ steps:
19
+ - name: Checkout
20
+ uses: actions/checkout@v3
21
+
22
+ - name: Configure CMake
23
+ run: |
24
+ git config --global --add safe.directory ${{github.workspace}}
25
+ cmake -B ${{github.workspace}}/build
26
+
27
+ - name: Build
28
+ run: |
29
+ git config --global --add safe.directory ${{github.workspace}}
30
+ cmake --build ${{github.workspace}}/build --target sjef-doc
31
+ rsync -av ${{github.workspace}}/build/html .
32
+ mkdir -p html/DoxygenTagFiles
33
+ find ${{github.workspace}}/build -name '*.tag' -exec cp {} html/DoxygenTagFiles \;
34
+
35
+ - name: Deploy
36
+ uses: peaceiris/actions-gh-pages@v3.8.0
37
+ if: ${{ github.ref == 'refs/heads/master' || github.ref == 'refs/heads/main' }}
38
+ with:
39
+ github_token: ${{ secrets.GITHUB_TOKEN }}
40
+ publish_dir: ./html
@@ -0,0 +1,73 @@
1
+ name: wheels
2
+
3
+ on:
4
+ push:
5
+ tags: [ "[0-9]+.[0-9]+.[0-9]+" ] # matches existing tag style, e.g. 1.45.4
6
+ pull_request:
7
+ workflow_dispatch:
8
+
9
+ jobs:
10
+ build_wheels:
11
+ strategy:
12
+ fail-fast: false
13
+ matrix:
14
+ include:
15
+ - os: ubuntu-latest
16
+ - os: ubuntu-24.04-arm
17
+ - os: macos-15-intel # Intel
18
+ - os: macos-latest # Apple Silicon
19
+ - os: windows-latest
20
+ runs-on: ${{ matrix.os }}
21
+ steps:
22
+ - uses: actions/checkout@v4
23
+ with:
24
+ fetch-depth: 0 # setuptools_scm and LibraryManager both need tag history
25
+
26
+ - name: Build wheels
27
+ uses: pypa/cibuildwheel@v2.22
28
+ env:
29
+ CIBW_MACOS_DEPLOYMENT_TARGET: 11.0
30
+ CIBW_ENVIRONMENT_MACOS: "MACOSX_DEPLOYMENT_TARGET=11.0"
31
+ CIBW_BEFORE_ALL_LINUX: >
32
+ set -eux &&
33
+ if command -v yum >/dev/null 2>&1; then
34
+ yum -y install libxml2-devel libxslt-devel;
35
+ elif command -v apt-get >/dev/null 2>&1; then
36
+ apt-get update && apt-get install -y libxml2-dev libxslt1-dev;
37
+ elif command -v apk >/dev/null 2>&1; then
38
+ apk add --no-cache libxml2-dev libxslt-dev;
39
+ fi
40
+
41
+ - uses: actions/upload-artifact@v4
42
+ with:
43
+ name: wheels-${{ matrix.os }}
44
+ path: wheelhouse/*.whl
45
+
46
+ build_sdist:
47
+ runs-on: ubuntu-latest
48
+ steps:
49
+ - uses: actions/checkout@v4
50
+ with:
51
+ fetch-depth: 0
52
+ - run: pipx run build --sdist
53
+ - uses: actions/upload-artifact@v4
54
+ with:
55
+ name: sdist
56
+ path: dist/*.tar.gz
57
+
58
+ publish:
59
+ needs: [ build_wheels, build_sdist ]
60
+ if: startsWith(github.ref, 'refs/tags/')
61
+ runs-on: ubuntu-latest
62
+ environment:
63
+ name: pypi
64
+ url: https://pypi.org/p/pysjef/
65
+ permissions:
66
+ id-token: write # trusted publishing to PyPI, no API token needed
67
+ contents: read
68
+ steps:
69
+ - uses: actions/download-artifact@v4
70
+ with:
71
+ path: dist
72
+ merge-multiple: true
73
+ - uses: pypa/gh-action-pypi-publish@release/v1
@@ -0,0 +1,21 @@
1
+ build/
2
+ .idea
3
+ record.txt
4
+ cmake-build*/
5
+ dependencies/*/
6
+ *_lockfile
7
+ env/
8
+ __pycache__/
9
+ *.pyc
10
+ *.so
11
+ *.vim
12
+ *.sw*
13
+ ycm_extra_conf.py
14
+ _build/
15
+ cy.sh
16
+ scrap/
17
+ .ipynb_checkpoints
18
+ .vs
19
+ CMakeSettings.json
20
+ Doxyfile.in.bak
21
+ .DS_Store
@@ -0,0 +1,131 @@
1
+ cmake_minimum_required(VERSION 3.15)
2
+ project(sjef LANGUAGES CXX C)
3
+ set(CMAKE_CXX_STANDARD 17)
4
+ set(CMAKE_CXX_STANDARD_REQUIRED ON)
5
+ set(CMAKE_POSITION_INDEPENDENT_CODE ON)
6
+
7
+ include(FetchContent)
8
+ FetchContent_Declare(
9
+ LibraryManager
10
+ GIT_REPOSITORY https://github.com/molpro/library-manager.git
11
+ GIT_TAG 71c0165d48924610b65edbfbd99e336bfc7909df
12
+ )
13
+ FetchContent_MakeAvailable(LibraryManager)
14
+
15
+ LibraryManager_Project(DEFAULT_VERSION "$Format:%(describe:tags)$")
16
+ message(VERBOSE "PROJECT_VERSION=${PROJECT_VERSION}")
17
+ message(VERBOSE "PROJECT_VERSION_FULL=${PROJECT_VERSION_FULL}")
18
+
19
+ option(BUILD_TESTS "Whether to build tests or not" OFF)
20
+ option(BUILD_PROGRAM "Whether to build sjef command-line program or not" ON)
21
+
22
+ project(sjef LANGUAGES CXX C VERSION ${PROJECT_VERSION})
23
+ set(SJEF_VERSION ${PROJECT_VERSION_FULL})
24
+ set(CMAKE_OSX_DEPLOYMENT_TARGET "10.15" CACHE STRING "Minimum macOS deployment target")
25
+
26
+ set(PROGRAM_FILENAME "sjef")
27
+ set(PROGRAM_NAME "sjef-program")
28
+
29
+ if (MSVC)
30
+ add_compile_options(/EHsc /permissive-)
31
+
32
+ # Define Windows target architecture
33
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
34
+ add_compile_options(/D_WIN64)
35
+ else()
36
+ add_compile_options(/D_WIN32)
37
+ endif()
38
+
39
+ # Define minimum Windows version
40
+ add_compile_definitions(_WIN32_WINNT=0x0601)
41
+ endif ()
42
+
43
+ option(BUILD_PYTHON "Whether to build the Python bindings or not" ON)
44
+ set(CMAKE_POLICY_DEFAULT_CMP0048 NEW)
45
+ if (BUILD_PYTHON)
46
+ set (BUILD_SHARED_LIBS OFF)
47
+ endif()
48
+
49
+
50
+ set(BOOST_BUILD_HINTS "")
51
+ foreach(prefix IN LISTS CMAKE_PREFIX_PATH)
52
+ if(IS_DIRECTORY "${prefix}/libboost_headers/include/boost")
53
+ set(BOOST_BUILD_HINTS "${prefix}/libboost_headers/include")
54
+ break()
55
+ endif()
56
+ endforeach()
57
+
58
+ if(BOOST_BUILD_HINTS)
59
+ message(STATUS "Using libboost-headers from: ${BOOST_BUILD_HINTS}")
60
+ add_library(Boost::boost INTERFACE IMPORTED)
61
+ target_include_directories(Boost::boost INTERFACE "${BOOST_BUILD_HINTS}")
62
+ else()
63
+ if(POLICY CMP0167)
64
+ cmake_policy(SET CMP0167 NEW)
65
+ endif()
66
+ find_package(Boost REQUIRED)
67
+ endif()
68
+
69
+
70
+ add_subdirectory(src)
71
+
72
+ if (BUILD_PYTHON)
73
+ set (BUILD_SHARED_LIBS OFF)
74
+ find_package(Python COMPONENTS Interpreter Development.Module REQUIRED)
75
+ find_program(CYTHON_EXECUTABLE cython REQUIRED)
76
+
77
+ set(CYTHON_SRC ${CMAKE_CURRENT_SOURCE_DIR}/src/pysjef/project_wrapper.pyx)
78
+ set(CYTHON_CPP ${CMAKE_CURRENT_SOURCE_DIR}/src/pysjef/project_wrapper.cpp)
79
+
80
+ add_custom_command(OUTPUT ${CYTHON_CPP}
81
+ COMMAND ${CYTHON_EXECUTABLE} --cplus -3 -I ${CMAKE_CURRENT_SOURCE_DIR}/src ${CYTHON_SRC} -o ${CYTHON_CPP}
82
+ DEPENDS ${CYTHON_SRC}
83
+ COMMENT "Generating C++ code from Cython"
84
+ )
85
+ python_add_library(project_wrapper MODULE ${CYTHON_CPP} WITH_SOABI)
86
+ target_link_libraries(project_wrapper PRIVATE sjef)
87
+ target_include_directories(project_wrapper PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
88
+ install(TARGETS project_wrapper DESTINATION pysjef)
89
+
90
+ endif()
91
+
92
+ if (BUILD_TESTS)
93
+ enable_testing()
94
+ add_subdirectory(test)
95
+ endif ()
96
+
97
+ if (BUILD_PROGRAM)
98
+ add_subdirectory(program)
99
+ endif ()
100
+
101
+ option(BUILD_DOCUMENTATION "Generate documentation" ON)
102
+ if (BUILD_DOCUMENTATION)
103
+ find_package(Doxygen)
104
+ if (DOXYGEN_FOUND)
105
+ configure_file(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY)
106
+ add_custom_target(${PROJECT_NAME}-doc ALL
107
+ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/html/index.html
108
+ )
109
+ file(GLOB_RECURSE headers src/*.h */*.md *.md src/*.cpp)
110
+ add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/html/index.html
111
+ COMMAND ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
112
+ DEPENDS ${headers} ${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists.txt ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile
113
+ WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}
114
+ COMMENT "Generating API documentation with Doxygen" VERBATIM
115
+ )
116
+ endif (DOXYGEN_FOUND)
117
+ endif ()
118
+
119
+ add_custom_target(_version.py
120
+ COMMAND echo "__version__ = \"${CMAKE_PROJECT_VERSION}\"" > _version.py
121
+ )
122
+
123
+
124
+ if (WIN32)
125
+ FetchContent_Declare(rsync
126
+ GIT_REPOSITORY https://github.com/molpro/cwrsync
127
+ GIT_TAG main
128
+ )
129
+ FetchContent_MakeAvailable(rsync)
130
+ install(DIRECTORY ${rsync_SOURCE_DIR}/ DESTINATION ./rsync PATTERN .git EXCLUDE)
131
+ endif ()