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.
- pysjef-1.45.6/.clang-format +9 -0
- pysjef-1.45.6/.gitattributes +1 -0
- pysjef-1.45.6/.github/workflows/build-and-test.yml +115 -0
- pysjef-1.45.6/.github/workflows/docker-publish.yml +53 -0
- pysjef-1.45.6/.github/workflows/doxygen-gh-pages.yml +40 -0
- pysjef-1.45.6/.github/workflows/wheels.yml +73 -0
- pysjef-1.45.6/.gitignore +21 -0
- pysjef-1.45.6/CMakeLists.txt +131 -0
- pysjef-1.45.6/Doxyfile.in +2772 -0
- pysjef-1.45.6/LICENSE +23 -0
- pysjef-1.45.6/PKG-INFO +30 -0
- pysjef-1.45.6/README.md +21 -0
- pysjef-1.45.6/docker/Dockerfile +39 -0
- pysjef-1.45.6/program/CMakeLists.txt +40 -0
- pysjef-1.45.6/program/main.cpp +4 -0
- pysjef-1.45.6/program/osx-localize-binaries +43 -0
- pysjef-1.45.6/program/uninstall.in +3 -0
- pysjef-1.45.6/pyproject.toml +43 -0
- pysjef-1.45.6/sjef-program.md +57 -0
- pysjef-1.45.6/src/CMakeLists.txt +3 -0
- pysjef-1.45.6/src/pysjef/__init__.py +27 -0
- pysjef-1.45.6/src/pysjef/_version.py +24 -0
- pysjef-1.45.6/src/pysjef/container.py +198 -0
- pysjef-1.45.6/src/pysjef/node.py +92 -0
- pysjef-1.45.6/src/pysjef/node_xml.py +162 -0
- pysjef-1.45.6/src/pysjef/project.py +497 -0
- pysjef-1.45.6/src/pysjef/project_factory.py +34 -0
- pysjef-1.45.6/src/pysjef/project_wrapper.pxd +66 -0
- pysjef-1.45.6/src/pysjef/project_wrapper.pyx +462 -0
- pysjef-1.45.6/src/pysjef/select.py +544 -0
- pysjef-1.45.6/src/pysjef/settings.py +42 -0
- pysjef-1.45.6/src/pysjef/test/test_run.py +59 -0
- pysjef-1.45.6/src/pysjef/test/test_select.py +213 -0
- pysjef-1.45.6/src/pysjef/test/test_tree_view.py +25 -0
- pysjef-1.45.6/src/pysjef/test/tree_3lvl.py +88 -0
- pysjef-1.45.6/src/pysjef/tree_view.py +86 -0
- pysjef-1.45.6/src/sjef/CMakeLists.txt +48 -0
- pysjef-1.45.6/src/sjef/backend-config.cpp +312 -0
- pysjef-1.45.6/src/sjef/backend-config.h +30 -0
- pysjef-1.45.6/src/sjef/backends.md +63 -0
- pysjef-1.45.6/src/sjef/dummy.cpp +13 -0
- pysjef-1.45.6/src/sjef/sjef-backend.cpp +49 -0
- pysjef-1.45.6/src/sjef/sjef-backend.h +69 -0
- pysjef-1.45.6/src/sjef/sjef-c.cpp +537 -0
- pysjef-1.45.6/src/sjef/sjef-c.h +124 -0
- pysjef-1.45.6/src/sjef/sjef-customization.cpp +105 -0
- pysjef-1.45.6/src/sjef/sjef-program.cpp +276 -0
- pysjef-1.45.6/src/sjef/sjef-program.h +8 -0
- pysjef-1.45.6/src/sjef/sjef.cpp +1252 -0
- pysjef-1.45.6/src/sjef/sjef.h +658 -0
- pysjef-1.45.6/src/sjef/util/Job.cpp +437 -0
- pysjef-1.45.6/src/sjef/util/Job.h +92 -0
- pysjef-1.45.6/src/sjef/util/Locker.cpp +66 -0
- pysjef-1.45.6/src/sjef/util/Locker.h +62 -0
- pysjef-1.45.6/src/sjef/util/Logger.h +75 -0
- pysjef-1.45.6/src/sjef/util/Shell.cpp +344 -0
- pysjef-1.45.6/src/sjef/util/Shell.h +108 -0
- pysjef-1.45.6/src/sjef/util/util.h +44 -0
- pysjef-1.45.6/test/CMakeLists.txt +50 -0
- pysjef-1.45.6/test/He.molpro/He.inp +7 -0
- pysjef-1.45.6/test/He.molpro/Info.plist +23 -0
- pysjef-1.45.6/test/He.molpro/run/1.molpro/.Info.plist.writing_object +1 -0
- pysjef-1.45.6/test/He.molpro/run/1.molpro/.lock +0 -0
- pysjef-1.45.6/test/He.molpro/run/1.molpro/.molpro.rc.lock +0 -0
- pysjef-1.45.6/test/He.molpro/run/1.molpro/1.inp +7 -0
- pysjef-1.45.6/test/He.molpro/run/1.molpro/1.lock +0 -0
- pysjef-1.45.6/test/He.molpro/run/1.molpro/1.out +347 -0
- pysjef-1.45.6/test/He.molpro/run/1.molpro/1.stderr +0 -0
- pysjef-1.45.6/test/He.molpro/run/1.molpro/1.stdout +0 -0
- pysjef-1.45.6/test/He.molpro/run/1.molpro/1.xml +104 -0
- pysjef-1.45.6/test/He.molpro/run/1.molpro/Info.plist +17 -0
- pysjef-1.45.6/test/He.molpro/run/1.molpro/molpro.rc +1 -0
- pysjef-1.45.6/test/logger.cpp +44 -0
- pysjef-1.45.6/test/test-Locker.cpp +183 -0
- pysjef-1.45.6/test/test-Shell.cpp +205 -0
- pysjef-1.45.6/test/test-backend-config.cpp +125 -0
- pysjef-1.45.6/test/test-c-sjef-backend.c +38 -0
- pysjef-1.45.6/test/test-sjef-c.cpp +125 -0
- pysjef-1.45.6/test/test-sjef-molpro.cpp +194 -0
- pysjef-1.45.6/test/test-sjef.cpp +929 -0
- pysjef-1.45.6/test/test-sjef.h +103 -0
- pysjef-1.45.6/test/test_spaces.sh +60 -0
|
@@ -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
|
pysjef-1.45.6/.gitignore
ADDED
|
@@ -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 ()
|