Compare commits
438
Commits
2.8.5
..
update_test
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
775385815b | ||
|
|
50de3088c7 | ||
|
|
0e17d83856 | ||
|
|
21b72aaab2 | ||
|
|
7bebe2a504 | ||
|
|
c5c6821632 | ||
|
|
f607741abf | ||
|
|
1c367b9338 | ||
|
|
4d5e8db0c7 | ||
|
|
979ca2e7a4 | ||
|
|
6f9914ca14 | ||
|
|
95696c206e | ||
|
|
b12f5a30c0 | ||
|
|
f39a5b0997 | ||
|
|
157a1a7e7b | ||
|
|
d22fbac295 | ||
|
|
7302a8ab38 | ||
|
|
60d8417540 | ||
|
|
24a5e3844f | ||
|
|
675de3d66e | ||
|
|
a7c15d14df | ||
|
|
c0435ce1f4 | ||
|
|
561eab15a7 | ||
|
|
53c65285e1 | ||
|
|
943d33711e | ||
|
|
0938d6f4da | ||
|
|
43c3239a4c | ||
|
|
ab640fadfe | ||
|
|
920ec5dd04 | ||
|
|
bf58700777 | ||
|
|
3258da3917 | ||
|
|
cba7f6cd90 | ||
|
|
4167ad7da6 | ||
|
|
481505e796 | ||
|
|
79beea1bc9 | ||
|
|
264722d045 | ||
|
|
bc9516ba98 | ||
|
|
c6ef344ce5 | ||
|
|
4277666e7a | ||
|
|
0df2709eec | ||
|
|
3d4f8f1e96 | ||
|
|
5d0ba73b59 | ||
|
|
896e27bd6e | ||
|
|
033d5e5b2a | ||
|
|
0ed488b5ac | ||
|
|
25c74f1e32 | ||
|
|
b2df8bdb06 | ||
|
|
9999edf0d2 | ||
|
|
fd00536b0d | ||
|
|
918141c701 | ||
|
|
732955ba5f | ||
|
|
5fbc05d675 | ||
|
|
6e75eb24ab | ||
|
|
dbb444eceb | ||
|
|
aa5a700789 | ||
|
|
22b322d57e | ||
|
|
5901c2086e | ||
|
|
0c4efb911f | ||
|
|
7073f5e21d | ||
|
|
1f3c5b17df | ||
|
|
1baa0805d8 | ||
|
|
c27d75f3fa | ||
|
|
86457b6614 | ||
|
|
0ee1183d84 | ||
|
|
43842f962c | ||
|
|
18627d5a8e | ||
|
|
d00f5b18e1 | ||
|
|
a712d631c5 | ||
|
|
7b051c101b | ||
|
|
8cb0a1c56d | ||
|
|
b5f00f5a90 | ||
|
|
813e093e28 | ||
|
|
eb5a34f461 | ||
|
|
3c561a6824 | ||
|
|
e69b1fbc76 | ||
|
|
2301c69e6d | ||
|
|
4d9afc50bb | ||
|
|
32efb3d026 | ||
|
|
d37692aa1e | ||
|
|
16f6b5bf82 | ||
|
|
9208181d63 | ||
|
|
86fb7d34a9 | ||
|
|
5a5e05f5f6 | ||
|
|
fc2e3c1e07 | ||
|
|
7cbaac4a28 | ||
|
|
53cd231363 | ||
|
|
46c81075fc | ||
|
|
37d9a2763c | ||
|
|
d9a36cfb97 | ||
|
|
e4c8422a8a | ||
|
|
73a04e14d0 | ||
|
|
e1fb40ab83 | ||
|
|
8646398a31 | ||
|
|
dd2a46e07e | ||
|
|
5a343665f0 | ||
|
|
71f137b6d6 | ||
|
|
b9abe63d8d | ||
|
|
59398dce43 | ||
|
|
080bbbbc1a | ||
|
|
dff0841d48 | ||
|
|
9a99031190 | ||
|
|
4ab303c820 | ||
|
|
ffdfb216a8 | ||
|
|
2356a7431d | ||
|
|
495ea6e414 | ||
|
|
2b298323a6 | ||
|
|
98a776cf44 | ||
|
|
ad7e168a8c | ||
|
|
2ccad66558 | ||
|
|
c342f95d3e | ||
|
|
e3fa21f04b | ||
|
|
f3b731dd51 | ||
|
|
20f801ba2e | ||
|
|
b0a2baef8d | ||
|
|
e7b9880cbb | ||
|
|
ba24458387 | ||
|
|
c9c2a73cd6 | ||
|
|
c793b273a6 | ||
|
|
055c7eb5b2 | ||
|
|
40ff1b465b | ||
|
|
cc241b036b | ||
|
|
b6267a0e93 | ||
|
|
8f7516154f | ||
|
|
2da0457f56 | ||
|
|
62a03401c1 | ||
|
|
62a736cc67 | ||
|
|
af131132e9 | ||
|
|
b30bd9f527 | ||
|
|
3344175dea | ||
|
|
dfb27be0b4 | ||
|
|
54bd914ff1 | ||
|
|
2f3a221d45 | ||
|
|
850421c5fa | ||
|
|
489137979b | ||
|
|
aa0d0e8bfb | ||
|
|
c2083b90fd | ||
|
|
b7caaa8a3e | ||
|
|
a595fbf590 | ||
|
|
f34ddb1097 | ||
|
|
a7ac6300ab | ||
|
|
fdadaca0df | ||
|
|
5efb97311f | ||
|
|
98aa0d9193 | ||
|
|
2899f1556a | ||
|
|
1d0275f150 | ||
|
|
36d36de6a6 | ||
|
|
f8cdad5e93 | ||
|
|
e18c072673 | ||
|
|
07e9c328af | ||
|
|
0b9a6bb2b5 | ||
|
|
8ff7d51859 | ||
|
|
d9e846aca3 | ||
|
|
52b2b62ad9 | ||
|
|
d67a290cca | ||
|
|
b46d051e1d | ||
|
|
56e3221f9d | ||
|
|
7ce694f8cb | ||
|
|
1c55f603e9 | ||
|
|
488f15defe | ||
|
|
ab34dd4119 | ||
|
|
3cab8dc142 | ||
|
|
77839da3e6 | ||
|
|
4db1dafc99 | ||
|
|
6ca530c966 | ||
|
|
c6ca10036f | ||
|
|
9bc084a2cd | ||
|
|
b056af9f68 | ||
|
|
3e7b37b263 | ||
|
|
a99ae416d8 | ||
|
|
81f3ddcad4 | ||
|
|
22a06c6fa7 | ||
|
|
2b0b2ea2db | ||
|
|
dfdae10719 | ||
|
|
3dd7c37bd3 | ||
|
|
f9257a855b | ||
|
|
130614bda8 | ||
|
|
3697110a37 | ||
|
|
1ce0f10240 | ||
|
|
39b869fd2b | ||
|
|
0ccc8074c0 | ||
|
|
c1e676f44e | ||
|
|
01c306b547 | ||
|
|
b954a90444 | ||
|
|
b05b713926 | ||
|
|
8b5308a9ab | ||
|
|
e28d1e8171 | ||
|
|
cad6fc4c1c | ||
|
|
57356a4cfc | ||
|
|
eb6981287c | ||
|
|
bc44104642 | ||
|
|
c983a5a698 | ||
|
|
a714bd50f7 | ||
|
|
c56f028a1f | ||
|
|
65122bd5c9 | ||
|
|
d376cbc451 | ||
|
|
dda8450465 | ||
|
|
8ed40ff7df | ||
|
|
07d979f758 | ||
|
|
435833499d | ||
|
|
5f4fdd0b52 | ||
|
|
4c5d5810c8 | ||
|
|
c9feaf93fd | ||
|
|
5c654c65cb | ||
|
|
7e03f93823 | ||
|
|
810b6f7155 | ||
|
|
8b3557af9d | ||
|
|
62fd313b3f | ||
|
|
16e881242a | ||
|
|
171d6e3126 | ||
|
|
0477b558bf | ||
|
|
52cb2a1bf8 | ||
|
|
cad7db63d0 | ||
|
|
1fab22d730 | ||
|
|
f4172ea19c | ||
|
|
f046dbf328 | ||
|
|
0606bbe687 | ||
|
|
df57ac4e31 | ||
|
|
e0796651f7 | ||
|
|
189312068d | ||
|
|
0802564789 | ||
|
|
2a3f35af62 | ||
|
|
b0220ecf03 | ||
|
|
c61f3f1fc5 | ||
|
|
78b4afd758 | ||
|
|
88de8fe3fe | ||
|
|
ebfbfa59f0 | ||
|
|
8261440869 | ||
|
|
f3b623c922 | ||
|
|
15795b327f | ||
|
|
488afe1a2f | ||
|
|
506d601379 | ||
|
|
a3b77bceab | ||
|
|
b770656915 | ||
|
|
b5d3c54bc9 | ||
|
|
f8f1bc5be1 | ||
|
|
bfca445dfa | ||
|
|
4355f15780 | ||
|
|
e8dd79ebf1 | ||
|
|
8acda1ba26 | ||
|
|
653166ab5d | ||
|
|
1e3e39ee1a | ||
|
|
aa3a7266ec | ||
|
|
3a0ec2db83 | ||
|
|
064df41294 | ||
|
|
f9d668ca95 | ||
|
|
61fcdff5d0 | ||
|
|
cffda40fb3 | ||
|
|
407e36c4d0 | ||
|
|
3c424cb46a | ||
|
|
27c3b51018 | ||
|
|
f6ef868926 | ||
|
|
0cf3e09127 | ||
|
|
3a094e18c9 | ||
|
|
08e402cd73 | ||
|
|
e7f1390d17 | ||
|
|
c646752092 | ||
|
|
00ffbf0434 | ||
|
|
23bb902bf6 | ||
|
|
863f833b85 | ||
|
|
2fde8fa13b | ||
|
|
eb903dea68 | ||
|
|
32877632fb | ||
|
|
bc8068290e | ||
|
|
81ba092910 | ||
|
|
e40f7403f7 | ||
|
|
77e453e93f | ||
|
|
51605ecabe | ||
|
|
1af78b420a | ||
|
|
3c26b04211 | ||
|
|
2e82ef6cef | ||
|
|
51c3f8052b | ||
|
|
283be11213 | ||
|
|
aaa40c251b | ||
|
|
1994011c7e | ||
|
|
29547c2d96 | ||
|
|
f294e635cf | ||
|
|
0a1fabbf55 | ||
|
|
3f618421ed | ||
|
|
6d75bf6352 | ||
|
|
ff306731f6 | ||
|
|
4de75d599f | ||
|
|
12d47fb2bb | ||
|
|
ec4966a47f | ||
|
|
164a8b316c | ||
|
|
f1f74a19a7 | ||
|
|
400846ffa2 | ||
|
|
93d63d9c31 | ||
|
|
cec7700615 | ||
|
|
0f48167965 | ||
|
|
6b297ce98c | ||
|
|
88f88424a5 | ||
|
|
7d7635f7e1 | ||
|
|
67a8798132 | ||
|
|
7af56f874d | ||
|
|
379d51d2d7 | ||
|
|
f5f7605877 | ||
|
|
c7ee093617 | ||
|
|
7438e0ba6e | ||
|
|
3a3a06f6c5 | ||
|
|
cb13149531 | ||
|
|
3074ac7213 | ||
|
|
67fe3a3a9c | ||
|
|
7eba290299 | ||
|
|
0040a59fb8 | ||
|
|
8aed6ae33b | ||
|
|
ab5a8ddc5e | ||
|
|
0b192b855b | ||
|
|
52ae347952 | ||
|
|
233489de4b | ||
|
|
0f7ea2ea5c | ||
|
|
c741da34d2 | ||
|
|
e5e3cdfd2f | ||
|
|
a43472c05f | ||
|
|
f47f7e3635 | ||
|
|
683f1cd35e | ||
|
|
42b642d827 | ||
|
|
7756abc26f | ||
|
|
326dc9b364 | ||
|
|
10928ea64e | ||
|
|
4a52c78dc5 | ||
|
|
b19d0d4857 | ||
|
|
9e9c70b63c | ||
|
|
e61ca03011 | ||
|
|
673cf5e019 | ||
|
|
244acf7d55 | ||
|
|
3b25e1e2fa | ||
|
|
bf3df6058b | ||
|
|
d34700b6f8 | ||
|
|
43f44fc85b | ||
|
|
93c54e18ea | ||
|
|
c15e5496de | ||
|
|
db7401ae04 | ||
|
|
0ce18f4639 | ||
|
|
3d7e32dd3d | ||
|
|
9f96916716 | ||
|
|
d7ea9b12b4 | ||
|
|
39c58e9921 | ||
|
|
44773d6927 | ||
|
|
7bd5a3e976 | ||
|
|
377ff05fc8 | ||
|
|
6f63e2f9a3 | ||
|
|
40819ab189 | ||
|
|
21065f656f | ||
|
|
3bf778b276 | ||
|
|
8eabc42641 | ||
|
|
7079e41cf7 | ||
|
|
2a940d3492 | ||
|
|
71b4edac9e | ||
|
|
3f9c8c052c | ||
|
|
a34245bab4 | ||
|
|
16175fd4e1 | ||
|
|
62598fdc01 | ||
|
|
74eaa00d11 | ||
|
|
c48c639999 | ||
|
|
ca5fe9ebca | ||
|
|
3814669101 | ||
|
|
e050f65ae7 | ||
|
|
02004553ca | ||
|
|
929c181281 | ||
|
|
24074b261f | ||
|
|
263d95e166 | ||
|
|
37afe79b20 | ||
|
|
9c8585d2af | ||
|
|
839d69ca04 | ||
|
|
4c39d0140b | ||
|
|
83a85bad6d | ||
|
|
743ce65e8d | ||
|
|
7b47e8f1e6 | ||
|
|
6a94470f5a | ||
|
|
57a506219a | ||
|
|
4636bcc964 | ||
|
|
e7d217ad9c | ||
|
|
968a7f915d | ||
|
|
e0981a5884 | ||
|
|
1a9eaff9f8 | ||
|
|
102e96efdd | ||
|
|
0fcadf6ed1 | ||
|
|
5f4bdd7f0d | ||
|
|
99b039de81 | ||
|
|
007857634b | ||
|
|
9d343ed826 | ||
|
|
4163a3fef1 | ||
|
|
06f427cf5c | ||
|
|
fd003224f6 | ||
|
|
a98783681b | ||
|
|
32bf25c31c | ||
|
|
5c3a79d396 | ||
|
|
431be0ba23 | ||
|
|
95f0d972e5 | ||
|
|
d61a8d3b21 | ||
|
|
3831566982 | ||
|
|
aecf03e24a | ||
|
|
e9bbb3f165 | ||
|
|
c2eb239da2 | ||
|
|
0d3ae5240d | ||
|
|
c496ccb189 | ||
|
|
fbe282c331 | ||
|
|
9b06b06c67 | ||
|
|
07566fd1f1 | ||
|
|
aef908c072 | ||
|
|
0ea850b5f4 | ||
|
|
0676c5e399 | ||
|
|
c9972f8935 | ||
|
|
86689dcf9e | ||
|
|
43341b67b0 | ||
|
|
7aa219949f | ||
|
|
652a1f4877 | ||
|
|
8d9fe660b3 | ||
|
|
b7b9316883 | ||
|
|
32361423bf | ||
|
|
1471ac8ace | ||
|
|
e6399eb176 | ||
|
|
71c34c0acb | ||
|
|
1e4968a4f8 | ||
|
|
1782525344 | ||
|
|
ccae111380 | ||
|
|
20f3eab18a | ||
|
|
af0f9188bc | ||
|
|
a2d320d9f8 | ||
|
|
86ad7a1a6e | ||
|
|
1ae5b1b532 | ||
|
|
de54617f0c | ||
|
|
55fef0df33 | ||
|
|
dfb7832267 | ||
|
|
5a90876f5f | ||
|
|
83d5d17256 | ||
|
|
05f70c0c46 | ||
|
|
c53167db54 | ||
|
|
1e7708183a | ||
|
|
984f05bf9a | ||
|
|
1fdddeab2e | ||
|
|
7048eeaac4 | ||
|
|
4a076aa916 | ||
|
|
56ebe22921 | ||
|
|
f768503f55 | ||
|
|
760ed788fd | ||
|
|
e2ea3238f6 | ||
|
|
cb119fbf45 |
@@ -0,0 +1,303 @@
|
||||
# This file defines Continuous Integration (CI) tests for bext using the
|
||||
# Github Actions framework. Currently it defines configurations for Windows,
|
||||
# Linux and OSX.
|
||||
#
|
||||
# For more information about available platforms for testing, see:
|
||||
#
|
||||
# https://docs.github.com/en/free-pro-team@latest/actions/reference/specifications-for-github-hosted-runners
|
||||
#
|
||||
# The general rule when building in CI is to go more verbose in output settings
|
||||
# rather than less, since iterative debugging isn't practical.
|
||||
#
|
||||
# We generally want to avoid parallel building - while that will sometimes
|
||||
# catch dependency issues, it also makes the outputs far harder to interpret
|
||||
# when there is a problem. However, the full BRL-CAD dependency stack is quite
|
||||
# a long build, so in this case we are experimenting with it to see if it can
|
||||
# help our build times on the runners.
|
||||
|
||||
name: BRL-CAD
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
windows_ninja_release:
|
||||
name: MSVC - Ninja Release build
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
fail-fast: true
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Add github workspace to path
|
||||
# https://github.community/t/deprecated-add-path/136621
|
||||
run: echo "$ENV{GITHUB_WORKSPACE}" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
|
||||
|
||||
- name: Add msbuild to PATH
|
||||
uses: microsoft/setup-msbuild@v2
|
||||
|
||||
- name: Add cl.exe to PATH
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Configure
|
||||
shell: powershell
|
||||
run: |
|
||||
cmake -S . -B build -G Ninja -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Release -DENABLE_ALL=ON -DGIT_SHALLOW_CLONE=ON
|
||||
# We do the following in order to help ensure files are "flushed"
|
||||
# to disk before compilation is attempted
|
||||
# https://superuser.com/a/1553374/1286142
|
||||
powershell Write-VolumeCache C
|
||||
powershell Write-VolumeCache D
|
||||
|
||||
- name: Build
|
||||
shell: powershell
|
||||
run: |
|
||||
cd build; ninja -j2 -v
|
||||
|
||||
# TODO - if the loading isn't too extreme, it would be good to do a BRL-CAD
|
||||
# build against the output of this...
|
||||
# - name: Build - BRL-CAD
|
||||
# run: |
|
||||
# # TODO - figure out how to do this...
|
||||
|
||||
windows_ninja_debug:
|
||||
name: MSVC - Ninja Debug build
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
fail-fast: true
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Add github workspace to path
|
||||
# https://github.community/t/deprecated-add-path/136621
|
||||
run: echo "$ENV{GITHUB_WORKSPACE}" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
|
||||
|
||||
- name: Add msbuild to PATH
|
||||
uses: microsoft/setup-msbuild@v2
|
||||
|
||||
- name: Add cl.exe to PATH
|
||||
uses: ilammy/msvc-dev-cmd@v1
|
||||
|
||||
- name: Configure
|
||||
shell: powershell
|
||||
run: |
|
||||
cmake -S . -B build -G Ninja -DCMAKE_C_COMPILER="cl.exe" -DCMAKE_CXX_COMPILER="cl.exe" -DCMAKE_BUILD_TYPE=Debug -DENABLE_ALL=ON -DGIT_SHALLOW_CLONE=ON
|
||||
# We do the following in order to help ensure files are "flushed"
|
||||
# to disk before compilation is attempted
|
||||
# https://superuser.com/a/1553374/1286142
|
||||
powershell Write-VolumeCache C
|
||||
powershell Write-VolumeCache D
|
||||
|
||||
- name: Build
|
||||
shell: powershell
|
||||
run: |
|
||||
cd build; ninja -j2 -v
|
||||
|
||||
# TODO - if the loading isn't too extreme, it would be good to do a BRL-CAD
|
||||
# build against the output of this...
|
||||
# - name: Build - BRL-CAD
|
||||
# run: |
|
||||
# # TODO - figure out how to do this...
|
||||
|
||||
|
||||
windows_std_tools_release:
|
||||
name: MSVC - Standard Tools Release Build
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
fail-fast: true
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Add github workspace to path
|
||||
# https://github.community/t/deprecated-add-path/136621
|
||||
run: echo "$ENV{GITHUB_WORKSPACE}" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
|
||||
|
||||
- name: Configure
|
||||
shell: cmd
|
||||
run: |
|
||||
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat"
|
||||
cmake -S . -B build -DENABLE_ALL=ON -DGIT_SHALLOW_CLONE=ON -DCMAKE_BUILD_TYPE=Release
|
||||
# We do the following in order to help ensure files are "flushed"
|
||||
# to disk before compilation is attempted
|
||||
# https://superuser.com/a/1553374/1286142
|
||||
powershell Write-VolumeCache C
|
||||
powershell Write-VolumeCache D
|
||||
|
||||
- name: Build
|
||||
shell: cmd
|
||||
run: |
|
||||
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat"
|
||||
cmake --build build --config Release -j2
|
||||
|
||||
windows_std_tools_debug:
|
||||
name: MSVC - Standard Tools Debug Build
|
||||
runs-on: windows-latest
|
||||
strategy:
|
||||
fail-fast: true
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Add github workspace to path
|
||||
# https://github.community/t/deprecated-add-path/136621
|
||||
run: echo "$ENV{GITHUB_WORKSPACE}" | Out-File -Append -FilePath $env:GITHUB_PATH -Encoding utf8
|
||||
|
||||
- name: Configure
|
||||
shell: cmd
|
||||
run: |
|
||||
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat"
|
||||
cmake -S . -B build -DENABLE_ALL=ON -DGIT_SHALLOW_CLONE=ON -DCMAKE_BUILD_TYPE=Debug
|
||||
# We do the following in order to help ensure files are "flushed"
|
||||
# to disk before compilation is attempted
|
||||
# https://superuser.com/a/1553374/1286142
|
||||
powershell Write-VolumeCache C
|
||||
powershell Write-VolumeCache D
|
||||
|
||||
- name: Build
|
||||
shell: cmd
|
||||
run: |
|
||||
call "C:/Program Files/Microsoft Visual Studio/2022/Enterprise/VC/Auxiliary/Build/vcvars64.bat"
|
||||
cmake --build build --config Debug -j2
|
||||
|
||||
|
||||
linux_release:
|
||||
name: Ubuntu GCC Release Build
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: true
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup - System
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
run: |
|
||||
sudo apt-get update
|
||||
# Install XCB/OpenGL dev pkgs for Qt - see:
|
||||
# https://wiki.qt.io/Building_Qt_6_from_Git
|
||||
# https://doc.qt.io/qt-6/linux-requirements.html
|
||||
sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-cursor-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev
|
||||
sudo apt-get install libgl-dev
|
||||
sudo apt-get install libinput-dev
|
||||
sudo apt-get clean
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
export PATH=$ENV{GITHUB_WORKSPACE}:$PATH
|
||||
cmake -S . -G Ninja -B build -DENABLE_ALL=ON -DGIT_SHALLOW_CLONE=ON -DCMAKE_BUILD_TYPE=Release
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
export PATH=$ENV{GITHUB_WORKSPACE}:$PATH
|
||||
cd build && ninja -j2 -v
|
||||
|
||||
linux_debug:
|
||||
name: Ubuntu GCC Debug Build
|
||||
runs-on: ubuntu-latest
|
||||
strategy:
|
||||
fail-fast: true
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Setup - System
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
run: |
|
||||
sudo apt-get update
|
||||
# Install XCB/OpenGL dev pkgs for Qt - see:
|
||||
# https://wiki.qt.io/Building_Qt_6_from_Git
|
||||
# https://doc.qt.io/qt-6/linux-requirements.html
|
||||
sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-cursor-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev
|
||||
sudo apt-get install libgl-dev
|
||||
sudo apt-get install libinput-dev
|
||||
sudo apt-get clean
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
export PATH=$ENV{GITHUB_WORKSPACE}:$PATH
|
||||
cmake -S . -G Ninja -B build -DENABLE_ALL=ON -DGIT_SHALLOW_CLONE=ON -DCMAKE_BUILD_TYPE=Debug
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
export PATH=$ENV{GITHUB_WORKSPACE}:$PATH
|
||||
cd build && ninja -j2 -v
|
||||
|
||||
|
||||
osx_release:
|
||||
name: macOS Clang Release Build
|
||||
runs-on: macos-latest
|
||||
strategy:
|
||||
fail-fast: true
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Xquartz
|
||||
run: |
|
||||
brew install xquartz --cask
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
export PATH=$ENV{GITHUB_WORKSPACE}:$PATH
|
||||
export CC=clang
|
||||
export CXX=clang++
|
||||
cmake -S . -G Ninja -B build -DENABLE_ALL=ON -DGIT_SHALLOW_CLONE=ON -DCMAKE_BUILD_TYPE=Release
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
export PATH=$ENV{GITHUB_WORKSPACE}:$PATH
|
||||
cd build && ninja -j2 -v
|
||||
|
||||
osx_debug:
|
||||
name: macOS Clang Debug Build
|
||||
runs-on: macos-latest
|
||||
strategy:
|
||||
fail-fast: true
|
||||
steps:
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install Xquartz
|
||||
run: |
|
||||
brew install xquartz --cask
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
export PATH=$ENV{GITHUB_WORKSPACE}:$PATH
|
||||
export CC=clang
|
||||
export CXX=clang++
|
||||
cmake -S . -G Ninja -B build -DENABLE_ALL=ON -DGIT_SHALLOW_CLONE=ON -DCMAKE_BUILD_TYPE=Debug
|
||||
|
||||
- name: Build
|
||||
run: |
|
||||
export PATH=$ENV{GITHUB_WORKSPACE}:$PATH
|
||||
cd build && ninja -j2 -v
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
# The purpose of this particular test definition is to support on-demand
|
||||
# interactive command shells. We sometimes see problems that occur only in the
|
||||
# Github Runner environments, and in order to explore what is happening we need
|
||||
# an interactive prompt (the alternative is hours-per-cycle submit and test
|
||||
# loops, which doesn't scale at all.)
|
||||
#
|
||||
# Unlike the other BRL-CAD tests, this one is started manually from the Github
|
||||
# website. For more information see https://mxschmitt.github.io/action-tmate/
|
||||
#
|
||||
# The "recommended" way to use this action is for the dev to make a fork of
|
||||
# the repository, alter the configure and/or build logic below for their
|
||||
# particular use case (the example below is a libged-only build used to zero
|
||||
# in on a specific libged behavior) before running.
|
||||
|
||||
name: BRL-CAD Linux Interactive Debugging
|
||||
|
||||
on: [workflow_dispatch]
|
||||
|
||||
jobs:
|
||||
|
||||
linux:
|
||||
name: Ubuntu Latest GCC
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
|
||||
- name: Setup - CMake
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: Setup - System
|
||||
env:
|
||||
DEBIAN_FRONTEND: noninteractive
|
||||
run: |
|
||||
sudo apt-get update
|
||||
# Install XCB/OpenGL dev pkgs for Qt - see:
|
||||
# https://wiki.qt.io/Building_Qt_6_from_Git
|
||||
# https://doc.qt.io/qt-6/linux-requirements.html
|
||||
sudo apt-get install libfontconfig1-dev libfreetype6-dev libx11-dev libx11-xcb-dev libxext-dev libxfixes-dev libxi-dev libxrender-dev libxcb1-dev libxcb-cursor-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev
|
||||
sudo apt-get install libgl-dev
|
||||
sudo apt-get install libinput-dev
|
||||
sudo apt-get clean
|
||||
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Build Directory setup
|
||||
run: |
|
||||
cmake -E make_directory ./build_linux
|
||||
|
||||
- name: Configure
|
||||
run: |
|
||||
export PATH=$ENV{GITHUB_WORKSPACE}:$PATH
|
||||
cmake -S . -G Ninja -B build -DENABLE_ALL=ON -DGIT_SHALLOW_CLONE=ON -DCMAKE_BUILD_TYPE=Debug
|
||||
|
||||
- name: Debugging - tmate session
|
||||
uses: mxschmitt/action-tmate@v3
|
||||
|
||||
+25
@@ -0,0 +1,25 @@
|
||||
# Common build directories used in the source tree
|
||||
/build
|
||||
/.build
|
||||
/*_build
|
||||
/*-build
|
||||
/out
|
||||
|
||||
# Temporary files
|
||||
*~
|
||||
\#*\#
|
||||
.\#*
|
||||
[._]*.s[a-v][a-z]
|
||||
[._]*.sw[a-p]
|
||||
[._]s[a-v][a-z]
|
||||
[._]sw[a-p]
|
||||
|
||||
# OS specific files
|
||||
.DS_Store
|
||||
.DS_Store?
|
||||
|
||||
.vscode
|
||||
CMakeLists.txt.user
|
||||
/.vs
|
||||
/CMakeSettings.json
|
||||
/CMakeUserPresets.json
|
||||
+309
@@ -0,0 +1,309 @@
|
||||
[submodule "patch/patch"]
|
||||
path = patch/patch
|
||||
url = https://github.com/BRL-CAD/patch
|
||||
ignore = dirty
|
||||
[submodule "astyle/astyle"]
|
||||
path = astyle/astyle
|
||||
url = https://github.com/BRL-CAD/astyle
|
||||
ignore = dirty
|
||||
[submodule "lief/LIEF"]
|
||||
path = lief/LIEF
|
||||
url = https://github.com/BRL-CAD/LIEF
|
||||
branch = master
|
||||
ignore = dirty
|
||||
[submodule "lemon/lemon"]
|
||||
path = lemon/lemon
|
||||
url = https://github.com/BRL-CAD/lemon
|
||||
ignore = dirty
|
||||
[submodule "re2c/re2c"]
|
||||
path = re2c/re2c
|
||||
url = https://github.com/BRL-CAD/re2c
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "perplex/perplex"]
|
||||
path = perplex/perplex
|
||||
url = https://github.com/BRL-CAD/perplex
|
||||
ignore = dirty
|
||||
[submodule "plief/plief"]
|
||||
path = plief/plief
|
||||
url = https://github.com/BRL-CAD/plief
|
||||
ignore = dirty
|
||||
[submodule "strclear/strclear"]
|
||||
path = strclear/strclear
|
||||
url = https://github.com/BRL-CAD/strclear
|
||||
ignore = dirty
|
||||
[submodule "xmltools/xmltools"]
|
||||
path = xmltools/xmltools
|
||||
url = https://github.com/BRL-CAD/xmltools
|
||||
ignore = dirty
|
||||
[submodule "zlib/zlib"]
|
||||
path = zlib/zlib
|
||||
url = https://github.com/BRL-CAD/zlib
|
||||
ignore = dirty
|
||||
[submodule "png/libpng"]
|
||||
path = png/libpng
|
||||
url = https://github.com/BRL-CAD/libpng
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "netpbm/netpbm"]
|
||||
path = netpbm/netpbm
|
||||
url = https://github.com/BRL-CAD/netpbm
|
||||
branch = brlcad
|
||||
ignore = dirty
|
||||
[submodule "regex/regex"]
|
||||
path = regex/regex
|
||||
url = https://github.com/BRL-CAD/regex
|
||||
ignore = dirty
|
||||
[submodule "linenoise/linenoise"]
|
||||
path = linenoise/linenoise
|
||||
url = https://github.com/BRL-CAD/linenoise
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "lmdb/lmdb"]
|
||||
path = lmdb/lmdb
|
||||
url = https://github.com/BRL-CAD/lmdb
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "eigen/eigen"]
|
||||
path = eigen/eigen
|
||||
url = https://github.com/BRL-CAD/eigen
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "stepcode/stepcode"]
|
||||
path = stepcode/stepcode
|
||||
url = https://github.com/BRL-CAD/stepcode
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "sqlite3/sqlite3"]
|
||||
path = sqlite3/sqlite3
|
||||
url = https://github.com/BRL-CAD/sqlite3.git
|
||||
ignore = dirty
|
||||
[submodule "proj/PROJ"]
|
||||
path = proj/PROJ
|
||||
url = https://github.com/BRL-CAD/PROJ
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "gdal/gdal"]
|
||||
path = gdal/gdal
|
||||
url = https://github.com/BRL-CAD/gdal
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "assetimport/assimp"]
|
||||
path = assetimport/assimp
|
||||
url = https://github.com/BRL-CAD/assimp
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "opencv/opencv"]
|
||||
path = opencv/opencv
|
||||
url = https://github.com/BRL-CAD/opencv
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "openmesh/OpenMesh"]
|
||||
path = openmesh/OpenMesh
|
||||
url = https://github.com/BRL-CAD/OpenMesh
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "opennurbs/opennurbs"]
|
||||
path = opennurbs/opennurbs
|
||||
url = https://github.com/BRL-CAD/opennurbs
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "osmesa/osmesa"]
|
||||
path = osmesa/osmesa
|
||||
url = https://github.com/BRL-CAD/osmesa
|
||||
ignore = dirty
|
||||
[submodule "utahrle/utahrle"]
|
||||
path = utahrle/utahrle
|
||||
url = https://github.com/BRL-CAD/utahrle
|
||||
ignore = dirty
|
||||
[submodule "tk/tk"]
|
||||
path = tk/tk
|
||||
url = https://github.com/BRL-CAD/tk
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "itcl3/itcl"]
|
||||
path = itcl/itcl
|
||||
url = https://github.com/BRL-CAD/itcl
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "itk3/itk"]
|
||||
path = itk/itk
|
||||
url = https://github.com/BRL-CAD/itk
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "iwidgets/iwidgets"]
|
||||
path = iwidgets/iwidgets
|
||||
url = https://github.com/BRL-CAD/iwidgets
|
||||
ignore = dirty
|
||||
[submodule "tktable/tktable"]
|
||||
path = tktable/tktable
|
||||
url = https://github.com/BRL-CAD/tktable
|
||||
ignore = dirty
|
||||
[submodule "tkhtml/tkhtml"]
|
||||
path = tkhtml/tkhtml
|
||||
url = https://github.com/BRL-CAD/tkhtml
|
||||
ignore = dirty
|
||||
[submodule "qt/qt"]
|
||||
path = qt/qt
|
||||
url = https://github.com/BRL-CAD/qt
|
||||
ignore = dirty
|
||||
[submodule "flexbison/bison"]
|
||||
path = flexbison/bison
|
||||
url = https://github.com/BRL-CAD/bison
|
||||
ignore = dirty
|
||||
[submodule "flexbison/flex"]
|
||||
path = flexbison/flex
|
||||
url = https://github.com/BRL-CAD/flex
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "flexbison/winflexbison"]
|
||||
path = flexbison/winflexbison
|
||||
url = https://github.com/BRL-CAD/winflexbison
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "minizip-ng/minizip-ng"]
|
||||
path = minizip-ng/minizip-ng
|
||||
url = https://github.com/BRL-CAD/minizip-ng
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "lz4/lz4"]
|
||||
path = lz4/lz4
|
||||
url = https://github.com/BRL-CAD/lz4
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "deflate/libdeflate"]
|
||||
path = deflate/libdeflate
|
||||
url = https://github.com/BRL-CAD/libdeflate
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "fmt/fmt"]
|
||||
path = fmt/fmt
|
||||
url = https://github.com/BRL-CAD/fmt
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "yaml-cpp/yaml-cpp"]
|
||||
path = yaml-cpp/yaml-cpp
|
||||
url = https://github.com/BRL-CAD/yaml-cpp
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "pystring/pystring"]
|
||||
path = pystring/pystring
|
||||
url = https://github.com/BRL-CAD/pystring
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "expat/libexpat"]
|
||||
path = expat/libexpat
|
||||
url = https://github.com/BRL-CAD/libexpat
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "pugixml/pugixml"]
|
||||
path = pugixml/pugixml
|
||||
url = https://github.com/BRL-CAD/pugixml
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "xerces-c/xerces-c"]
|
||||
path = xerces-c/xerces-c
|
||||
url = https://github.com/BRL-CAD/xerces-c
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "icu/icu"]
|
||||
path = icu/icu
|
||||
url = https://github.com/BRL-CAD/icu
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "jpeg/libjpeg-turbo"]
|
||||
path = jpeg/libjpeg-turbo
|
||||
url = https://github.com/BRL-CAD/libjpeg-turbo
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "tiff/libtiff"]
|
||||
path = tiff/libtiff
|
||||
url = https://github.com/BRL-CAD/libtiff
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "onetbb/oneTBB"]
|
||||
path = onetbb/oneTBB
|
||||
url = https://github.com/BRL-CAD/oneTBB
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "llvm/llvm-project"]
|
||||
path = llvm/llvm-project
|
||||
url = https://github.com/BRL-CAD/llvm-project
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "zstd/zstd"]
|
||||
path = zstd/zstd
|
||||
url = https://github.com/BRL-CAD/zstd
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "boost/boost"]
|
||||
path = boost/boost
|
||||
url = https://github.com/BRL-CAD/boost
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "openexr/openexr"]
|
||||
path = openexr/openexr
|
||||
url = https://github.com/BRL-CAD/openexr
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "opencolorio/OpenColorIO"]
|
||||
path = opencolorio/OpenColorIO
|
||||
url = https://github.com/BRL-CAD/OpenColorIO
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "openimageio/oiio"]
|
||||
path = openimageio/oiio
|
||||
url = https://github.com/BRL-CAD/oiio
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "osl/OpenShadingLanguage"]
|
||||
path = osl/OpenShadingLanguage
|
||||
url = https://github.com/BRL-CAD/OpenShadingLanguage
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "embree/embree"]
|
||||
path = embree/embree
|
||||
url = https://github.com/BRL-CAD/embree
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "rkcommon/rkcommon"]
|
||||
path = rkcommon/rkcommon
|
||||
url = https://github.com/BRL-CAD/rkcommon
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "ispc/ispc"]
|
||||
path = ispc/ispc
|
||||
url = https://github.com/BRL-CAD/ispc
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "ospray/ospray"]
|
||||
path = ospray/ospray
|
||||
url = https://github.com/BRL-CAD/ospray
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "ncurses/ncurses"]
|
||||
path = ncurses/ncurses
|
||||
url = https://github.com/BRL-CAD/ncurses
|
||||
ignore = dirty
|
||||
[submodule "tcl/tcl"]
|
||||
path = tcl/tcl
|
||||
url = https://github.com/BRL-CAD/tcl.git
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "manifold/manifold"]
|
||||
path = manifold/manifold
|
||||
url = https://github.com/BRL-CAD/manifold.git
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "appleseed/appleseed"]
|
||||
path = appleseed/appleseed
|
||||
url = https://github.com/BRL-CAD/appleseed
|
||||
ignore = dirty
|
||||
[submodule "geogram/geogram"]
|
||||
path = geogram/geogram
|
||||
url = https://github.com/BRL-CAD/geogram.git
|
||||
branch = RELEASE
|
||||
ignore = dirty
|
||||
[submodule "gte/GeometricTools"]
|
||||
path = gte/GeometricTools
|
||||
url = https://github.com/BRL-CAD/GeometricTools
|
||||
-112
@@ -1,112 +0,0 @@
|
||||
language: c
|
||||
|
||||
stages:
|
||||
- windows
|
||||
- linux
|
||||
- macintosh
|
||||
|
||||
matrix:
|
||||
include:
|
||||
- stage: windows
|
||||
os: windows
|
||||
compiler: clang
|
||||
before_deploy:
|
||||
- cd Release
|
||||
- 7z a -tzip minizip-$TRAVIS_OS_NAME.zip *minizip*
|
||||
deploy: &deploy_base
|
||||
provider: releases
|
||||
api_key:
|
||||
secure: FJaUejGb9fRijDoIwLdaekcYRKCLVwyHJ2qv3kf6oaa5OTG9np73U3GYxImj20Z03GvsL2PIFJCKt3SbZ07prHL9Hf01llvH5RpbT29mepQiYbB9UZQKTh6syeHvYxWTMfw+lxMBs1QOnrYZtRzFeYQgnOSvLG2mudAnjxeBhH3duGnh9/uMW2+1UjNzld49HnR1F+AiVdZVAfKqwcZUsQENQ3svb4oNwMfAZrDMcfb5bO3aNat9EF5RBqOvtSFqrIGX6btsU/mh3acAoP2gcCjxmMcfCNlwaFYo8lcbNi4u0vW4nPUMXYfZCyc5KyIu/h/3Lu5ddVaw0ra51f25iT9e6hCBG9kBjk41Mu6AVKhebSvL2zd9/Q41BcVUbBxmGaDGORAJlCXNjqflVkAgYhRRjW5n//kN5TqObPqrIgTTbvhKTQYADQZ5Gza0zX0lZGlTZ9aT1r+gvSrX2T7DGnvz7zSKpGP4HIixPfaB9x+ZxAjohFhi47MLURtr1UhokvS3wonF5OR6dE/jHXdbS6Wi4GiHqKsWLC9a0iYrpkNZLp37byENCiOnZib/orOSerj2PgQFIGtfwt8osunxf6H1yI9A9VpysSsihmD65RvN3ii8HfTASU/K++VQdBvX7wjt2MP+KA59nKwGcobfSkB6nd7GYJhMgfOrsVfzJ4o=
|
||||
file_glob: true
|
||||
file: minizip-$TRAVIS_OS_NAME.zip
|
||||
name: $TRAVIS_TAG
|
||||
skip_cleanup: true
|
||||
on:
|
||||
tags: true
|
||||
- stage: windows
|
||||
os: windows
|
||||
compiler: gcc
|
||||
- stage: linux
|
||||
os: linux
|
||||
compiler: clang
|
||||
- stage: linux
|
||||
os: linux
|
||||
compiler: clang
|
||||
env: TOOL="-DMZ_ZLIB=OFF"
|
||||
- stage: linux
|
||||
os: linux
|
||||
compiler: clang
|
||||
env: TOOL="-DMZ_BZIP=OFF"
|
||||
- stage: linux
|
||||
os: linux
|
||||
compiler: clang
|
||||
env: TOOL="-DMZ_LZMA=OFF"
|
||||
- stage: linux
|
||||
os: linux
|
||||
compiler: clang
|
||||
env: TOOL="-DMZ_WZAES=OFF"
|
||||
- stage: linux
|
||||
os: linux
|
||||
compiler: clang
|
||||
env: TOOL="-DMZ_PKCRYPT=OFF"
|
||||
- stage: linux
|
||||
os: linux
|
||||
compiler: clang
|
||||
env: TOOL="-DMZ_COMPRESS_ONLY=ON"
|
||||
- stage: linux
|
||||
os: linux
|
||||
compiler: clang
|
||||
env: TOOL="-DMZ_DECOMPRESS_ONLY=ON"
|
||||
- stage: linux
|
||||
os: linux
|
||||
compiler: clang
|
||||
env: TOOL="-DMZ_PKCRYPT=OFF -DMZ_WZAES=OFF"
|
||||
- stage: linux
|
||||
os: linux
|
||||
compiler: clang
|
||||
env: TOOL="-DMZ_OPENSSL=ON"
|
||||
before_deploy:
|
||||
- ls *minizip* | tar -czvf minizip-$TRAVIS_OS_NAME.tar.gz -T -
|
||||
deploy:
|
||||
<<: *deploy_base
|
||||
file: minizip-$TRAVIS_OS_NAME.tar.gz
|
||||
- stage: linux
|
||||
os: linux
|
||||
compiler: gcc
|
||||
- stage: macintosh
|
||||
os: osx
|
||||
compiler: clang
|
||||
before_deploy:
|
||||
- ls *minizip* | tar -czvf minizip-$TRAVIS_OS_NAME.tar.gz -T -
|
||||
deploy:
|
||||
<<: *deploy_base
|
||||
file: minizip-$TRAVIS_OS_NAME.tar.gz
|
||||
- stage: macintosh
|
||||
os: osx
|
||||
compiler: gcc
|
||||
- stage: macintosh
|
||||
os: osx
|
||||
compiler: clang
|
||||
env: TOOL="-DMZ_LIBCOMP=ON"
|
||||
- stage: macintosh
|
||||
os: osx
|
||||
compiler: gcc
|
||||
env: TOOL="-DMZ_LIBCOMP=ON"
|
||||
- stage: macintosh
|
||||
os: osx
|
||||
compiler: clang
|
||||
before_install:
|
||||
- brew install openssl
|
||||
env: TOOL="-DMZ_OPENSSL=ON -DOPENSSL_ROOT_DIR=/usr/local/opt/openssl -DOPENSSL_INCLUDE_DIRS=/usr/local/opt/openssl/include -DOPENSSL_CRYPTO_LIBRARY=/usr/local/opt/openssl/lib/libcrypto.dylib -DOPENSSL_SSL_LIBRARY=/usr/local/opt/openssl/lib/libssl.dylib"
|
||||
|
||||
before_install:
|
||||
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then sudo apt-get -y install libbsd-dev libssl-dev; fi
|
||||
|
||||
before_script:
|
||||
- mkdir build
|
||||
- cd build
|
||||
- cmake .. -DMZ_BUILD_TEST=ON -DMZ_BUILD_UNIT_TEST=ON -DCMAKE_BUILD_TYPE=Release $TOOL
|
||||
|
||||
script:
|
||||
- cmake --build . --config Release
|
||||
- ctest --output-on-failure -C Release
|
||||
@@ -0,0 +1,85 @@
|
||||
# D L L T Y P E C H E C K . C M A K E
|
||||
# BRL-CAD
|
||||
#
|
||||
# Copyright (c) 2024 United States Government as represented by
|
||||
# the U.S. Army Research Laboratory.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above
|
||||
# copyright notice, this list of conditions and the following
|
||||
# disclaimer in the documentation and/or other materials provided
|
||||
# with the distribution.
|
||||
#
|
||||
# 3. The name of the author may not be used to endorse or promote
|
||||
# products derived from this software without specific prior written
|
||||
# permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
###
|
||||
# Utility function to check the type of dlls built by bext.
|
||||
|
||||
include(CMakeParseArguments)
|
||||
|
||||
function(DllTypeCheck btype dlldir)
|
||||
if (NOT EXISTS "${dlldir}")
|
||||
return()
|
||||
endif (NOT EXISTS "${dlldir}")
|
||||
find_program(DUMPBIN_EXEC dumpbin)
|
||||
if (NOT DUMPBIN_EXEC)
|
||||
return()
|
||||
endif (NOT DUMPBIN_EXEC)
|
||||
file(GLOB dll_files RELATIVE "${dlldir}" "${dlldir}/*.dll")
|
||||
set(non_match 0)
|
||||
foreach(dlf ${dll_files})
|
||||
message("Checking ${dlf}")
|
||||
# dumpbin doesn't like CMake style paths
|
||||
file(TO_NATIVE_PATH "${dlf}" TBFN)
|
||||
# https://stackoverflow.com/a/28304716/2037687
|
||||
execute_process(COMMAND ${DUMPBIN_EXEC} /dependents ${TBFN}
|
||||
OUTPUT_VARIABLE DB_OUT
|
||||
ERROR_VARIABLE DB_OUT)
|
||||
if ("${btype}" STREQUAL "Release")
|
||||
if ("${DB_OUT}" MATCHES ".*MSVCP[0-9]*d.dll.*" OR "${DB_OUT}" MATCHES ".*MSVCP[0-9]*D.dll.*")
|
||||
set(non_match 1)
|
||||
message("Release build specified, but ${dlf} is built as Debug.")
|
||||
endif ("${DB_OUT}" MATCHES ".*MSVCP[0-9]*d.dll.*" OR "${DB_OUT}" MATCHES ".*MSVCP[0-9]*D.dll.*")
|
||||
endif ("${btype}" STREQUAL "Release")
|
||||
if ("${btype}" STREQUAL "Debug")
|
||||
if (NOT "${DB_OUT}" MATCHES ".*MSVCP[0-9]*d.dll.*" AND NOT "${DB_OUT}" MATCHES ".*MSVCP[0-9]*D.dll.*")
|
||||
set(non_match 1)
|
||||
message("Debug build specified, but ${dlf} is built as Release.")
|
||||
endif (NOT "${DB_OUT}" MATCHES ".*MSVCP[0-9]*d.dll.*" AND NOT "${DB_OUT}" MATCHES ".*MSVCP[0-9]*D.dll.*")
|
||||
endif ("${btype}" STREQUAL "Debug")
|
||||
endforeach(dlf ${dll_files})
|
||||
if (non_match)
|
||||
message(FATAL_ERROR "Found non-matching dll files - check build logic.")
|
||||
endif (non_match)
|
||||
endfunction(DllTypeCheck btype)
|
||||
|
||||
if (CMAKE_BUILD_TYPE AND DLL_DIR)
|
||||
DllTypeCheck(${CMAKE_BUILD_TYPE} ${DLL_DIR})
|
||||
endif (CMAKE_BUILD_TYPE AND DLL_DIR)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
@@ -0,0 +1,100 @@
|
||||
#
|
||||
# This file is modeled after appleseed.
|
||||
# Visit https://appleseedhq.net/ for additional information and resources.
|
||||
#
|
||||
# This software is released under the MIT license.
|
||||
#
|
||||
# Copyright (c) 2014-2018 Esteban Tovagliari, The appleseedhq Organization
|
||||
#
|
||||
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
# of this software and associated documentation files (the "Software"), to deal
|
||||
# in the Software without restriction, including without limitation the rights
|
||||
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
# copies of the Software, and to permit persons to whom the Software is
|
||||
# furnished to do so, subject to the following conditions:
|
||||
#
|
||||
# The above copyright notice and this permission notice shall be included in
|
||||
# all copies or substantial portions of the Software.
|
||||
#
|
||||
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
# THE SOFTWARE.
|
||||
#
|
||||
|
||||
###
|
||||
# - Find ASSETIMPORT
|
||||
# Find the native ASSETIMPORT includes and library
|
||||
#
|
||||
# ASSETIMPORT_INCLUDE_DIR - where to find include headers
|
||||
# ASSETIMPORT_LIBRARIES - List of libraries when using assetimport.
|
||||
#
|
||||
###
|
||||
# - helpful cmake flags when building
|
||||
#
|
||||
# ASSETIMPORT_ROOT - path to assetimport root if it is built outside of /usr
|
||||
#
|
||||
#=============================================================================
|
||||
set(_ASSETIMPORT_SEARCHES)
|
||||
|
||||
# Search ASSETIMPORT_ROOT first if it is set.
|
||||
if(ASSETIMPORT_ROOT)
|
||||
set(_ASSETIMPORT_SEARCH_ROOT PATHS ${ASSETIMPORT_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _ASSETIMPORT_SEARCHES _ASSETIMPORT_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
set(ASSETIMPORT_NAMES assimp assimpd)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_ASSETIMPORT_SEARCHES})
|
||||
find_path(ASSETIMPORT_INCLUDE_DIR
|
||||
NAMES assimp/postprocess.h assimp/scene.h assimp/version.h assimp/config.h assimp/cimport.h
|
||||
${${search}} PATH_SUFFIXES include)
|
||||
find_library(ASSETIMPORT_LIBRARY
|
||||
NAMES ${ASSETIMPORT_NAMES}
|
||||
${${search}} PATH_SUFFIXES lib lib64 bin)
|
||||
endforeach()
|
||||
|
||||
if (NOT ASSETIMPORT_LIBRARY OR NOT ASSETIMPORT_INCLUDE_DIR)
|
||||
# Try a more generic search
|
||||
find_path(ASSETIMPORT_INCLUDE_DIR
|
||||
NAMES assimp/postprocess.h assimp/scene.h assimp/version.h assimp/config.h assimp/cimport.h
|
||||
PATH_SUFFIXES include)
|
||||
find_library(ASSETIMPORT_LIBRARY
|
||||
NAMES ${ASSETIMPORT_NAMES}
|
||||
PATH_SUFFIXES lib lib64 bin)
|
||||
endif (NOT ASSETIMPORT_LIBRARY OR NOT ASSETIMPORT_INCLUDE_DIR)
|
||||
|
||||
# Handle the QUIETLY and REQUIRED arguments and set assetimport_FOUND.
|
||||
include (FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args (ASSETIMPORT REQUIRED_VARS
|
||||
ASSETIMPORT_LIBRARY
|
||||
ASSETIMPORT_INCLUDE_DIR
|
||||
)
|
||||
|
||||
# Set the output variables.
|
||||
if (ASSETIMPORT_FOUND)
|
||||
set (ASSETIMPORT_LIBRARY "${ASSETIMPORT_LIBRARY}" CACHE PATH "Asset Import Library")
|
||||
set (ASSETIMPORT_INCLUDE_DIRS ${ASSETIMPORT_INCLUDE_DIR})
|
||||
set (ASSETIMPORT_LIBRARIES ${ASSETIMPORT_LIBRARY})
|
||||
else ()
|
||||
set (ASSETIMPORT_INCLUDE_DIRS)
|
||||
set (ASSETIMPORT_LIBRARIES)
|
||||
endif ()
|
||||
|
||||
mark_as_advanced (
|
||||
ASSETIMPORT_INCLUDE_DIR
|
||||
ASSETIMPORT_LIBRARY
|
||||
)
|
||||
|
||||
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
@@ -0,0 +1,40 @@
|
||||
# Find GeometricTools Mathematics headers
|
||||
#
|
||||
# Once done this will define
|
||||
#
|
||||
# GTE_FOUND - system has GTE Mathematics headers
|
||||
# GTE_INCLUDE_DIR - the GTE include directory
|
||||
#
|
||||
# and the following imported target:
|
||||
#
|
||||
# GTE::GTE- Provides include dir for GeometricTools Mathematics headers
|
||||
|
||||
set(_GTE_SEARCHES)
|
||||
|
||||
# Search GTE_ROOT first if it is set.
|
||||
if(GTE_ROOT)
|
||||
set(_GTE_SEARCH_ROOT PATHS ${GTE_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _GTE_SEARCHES _GTE_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_GTE_SEARCHES})
|
||||
find_path(GTE_INCLUDE_DIR NAMES GTE/Mathematics/ConvexHull3.h ${${search}} PATH_SUFFIXES include)
|
||||
endforeach()
|
||||
|
||||
mark_as_advanced(GTE_INCLUDE_DIR)
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set ZLIB_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(GTE REQUIRED_VARS GTE_INCLUDE_DIR)
|
||||
|
||||
if(GTE_FOUND)
|
||||
set(GTE_INCLUDE_DIRS ${GTE_INCLUDE_DIR})
|
||||
|
||||
if(NOT TARGET GTE::GTE)
|
||||
add_library(GTE::GTE UNKNOWN IMPORTED)
|
||||
set_target_properties(GTE::GTE PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${GTE_INCLUDE_DIRS}")
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,112 @@
|
||||
# Find Geogram
|
||||
# ------------
|
||||
#
|
||||
# Find Geogram include dirs and libraries
|
||||
#
|
||||
# This module defines the following variables:
|
||||
#
|
||||
# Geogram_FOUND - True if geogram has been found.
|
||||
# Geogram::geogram - Imported target for the main Geogram library.
|
||||
# Geogram::geogram_gfx - Imported target for Geogram graphics library.
|
||||
#
|
||||
# This module reads hints about the Geogram location from the following
|
||||
# environment variables:
|
||||
#
|
||||
# GEOGRAM_INSTALL_PREFIX - Directory where Geogram is installed.
|
||||
#
|
||||
# Authors: Jeremie Dumas
|
||||
# Pierre Moulon
|
||||
# Bruno Levy
|
||||
|
||||
set (GEOGRAM_SEARCH_PATHS
|
||||
"${GEOGRAM_ROOT}"
|
||||
${GEOGRAM_INSTALL_PREFIX}
|
||||
"$ENV{GEOGRAM_INSTALL_PREFIX}"
|
||||
"/usr/local/"
|
||||
"$ENV{PROGRAMFILES}/Geogram"
|
||||
"$ENV{PROGRAMW6432}/Geogram"
|
||||
)
|
||||
|
||||
set (GEOGRAM_SEARCH_PATHS_SYSTEM
|
||||
"/usr/lib"
|
||||
"/usr/lib/${CMAKE_LIBRARY_ARCHITECTURE}"
|
||||
)
|
||||
|
||||
find_path (GEOGRAM_INCLUDE_DIR
|
||||
geogram/basic/common.h
|
||||
PATHS ${GEOGRAM_SEARCH_PATHS}
|
||||
PATH_SUFFIXES include/geogram1
|
||||
)
|
||||
|
||||
find_library (GEOGRAM_LIBRARY
|
||||
NAMES geogram
|
||||
PATHS ${GEOGRAM_SEARCH_PATHS}
|
||||
PATH_SUFFIXES lib
|
||||
)
|
||||
|
||||
find_library (GEOGRAM_GFX_LIBRARY
|
||||
NAMES geogram_gfx
|
||||
PATHS ${GEOGRAM_SEARCH_PATHS}
|
||||
PATH_SUFFIXES lib
|
||||
)
|
||||
|
||||
# This one we search in both Geogram search path and
|
||||
# system search path since it may be already installed
|
||||
# in the system
|
||||
find_library (GEOGRAM_GLFW3_LIBRARY
|
||||
NAMES glfw3 glfw geogram_glfw3 glfw3dll glfwdll
|
||||
PATHS ${GEOGRAM_SEARCH_PATHS} ${GEOGRAM_SEARCH_PATHS_SYSTEM}
|
||||
PATH_SUFFIXES lib
|
||||
)
|
||||
|
||||
include (FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(
|
||||
GEOGRAM DEFAULT_MSG GEOGRAM_LIBRARY GEOGRAM_INCLUDE_DIR
|
||||
)
|
||||
|
||||
# Create an imported target for Geogram
|
||||
If (GEOGRAM_FOUND)
|
||||
|
||||
set(GEOGRAM_INSTALL_PREFIX ${GEOGRAM_INCLUDE_DIR}/../..)
|
||||
|
||||
if (NOT TARGET Geogram::geogram)
|
||||
add_library (Geogram::geogram UNKNOWN IMPORTED)
|
||||
|
||||
# Interface include directory
|
||||
set_target_Properties(Geogram::geogram PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${GEOGRAM_INCLUDE_DIR}"
|
||||
)
|
||||
|
||||
# Link to library file
|
||||
Set_Target_Properties(Geogram::geogram PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${GEOGRAM_LIBRARY}"
|
||||
)
|
||||
endif ()
|
||||
|
||||
if (NOT TARGET Geogram::geogram_gfx)
|
||||
add_library (Geogram::geogram_gfx UNKNOWN IMPORTED)
|
||||
|
||||
set_target_properties(Geogram::geogram_gfx PROPERTIES
|
||||
INTERFACE_LINK_LIBRARIES ${GEOGRAM_GLFW3_LIBRARY}
|
||||
)
|
||||
|
||||
# Interface include directory
|
||||
set_target_properties(Geogram::geogram_gfx PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${GEOGRAM_INCLUDE_DIR}"
|
||||
)
|
||||
|
||||
# Link to library file
|
||||
set_target_properties(Geogram::geogram_gfx PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
IMPORTED_LOCATION "${GEOGRAM_GFX_LIBRARY}"
|
||||
)
|
||||
|
||||
endif ()
|
||||
|
||||
|
||||
endif ()
|
||||
|
||||
# Hide variables from the default CMake-Gui options
|
||||
mark_as_advanced (GEOGRAM_LIBRARY GEOGRAM_GFX_LIBRARY GEOGRAM_INCLUDE_DIR)
|
||||
|
||||
@@ -0,0 +1,118 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindTCL
|
||||
-------
|
||||
|
||||
This module finds if Tcl is installed and determines where the include
|
||||
files and libraries are. It also determines what the name of the
|
||||
library is. This code sets the following variables:
|
||||
|
||||
::
|
||||
|
||||
ITCL_FOUND = Tcl was found
|
||||
ITCL_LIBRARY = path to Tcl library (tcl tcl80)
|
||||
ITCL_INCLUDE_PATH = path to where tcl.h can be found
|
||||
ITCL_STUB_LIBRARY = path to Tcl stub library
|
||||
|
||||
#]=======================================================================]
|
||||
|
||||
include(CMakeFindFrameworks)
|
||||
|
||||
set(_ITCL_SEARCHES)
|
||||
|
||||
# Search ITCL_ROOT first if it is set.
|
||||
if(ITCL_ROOT)
|
||||
set(_ITCL_SEARCH_ROOT PATHS ${ITCL_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _ITCL_SEARCHES _ITCL_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
set(ITCL_POSSIBLE_LIB_PATH_SUFFIXES
|
||||
lib
|
||||
lib/itcl
|
||||
lib/itcl3.4
|
||||
itcl
|
||||
itcl3.4
|
||||
)
|
||||
|
||||
set(ITCL_POSSIBLE_LIB_NAMES
|
||||
itcl
|
||||
itcl3
|
||||
itcl3.4
|
||||
)
|
||||
|
||||
if(NOT ITCL_LIBRARY)
|
||||
foreach(search ${_ITCL_SEARCHES})
|
||||
find_library(ITCL_LIBRARY
|
||||
NAMES ${ITCL_POSSIBLE_LIB_NAMES}
|
||||
NAMES_PER_DIR ${${search}}
|
||||
PATH_SUFFIXES ${ITCL_POSSIBLE_LIB_PATH_SUFFIXES})
|
||||
endforeach()
|
||||
endif()
|
||||
if(NOT ITCL_LIBRARY)
|
||||
find_library(ITCL_LIBRARY
|
||||
NAMES ${ITCL_POSSIBLE_LIB_NAMES}
|
||||
PATH_SUFFIXES ${ITCL_POSSIBLE_LIB_PATH_SUFFIXES}
|
||||
)
|
||||
endif(NOT ITCL_LIBRARY)
|
||||
|
||||
set(ITCLSTUB_POSSIBLE_LIB_NAMES
|
||||
itclstub
|
||||
itclstub3
|
||||
itclstub3.4
|
||||
)
|
||||
if(NOT ITCL_STUB_LIBRARY)
|
||||
foreach(search ${_ITCL_SEARCHES})
|
||||
find_library(ITCL_STUB_LIBRARY
|
||||
NAMES ${ITCLSTUB_POSSIBLE_LIB_NAMES}
|
||||
NAMES_PER_DIR ${${search}}
|
||||
PATH_SUFFIXES ${ITCL_POSSIBLE_LIB_PATH_SUFFIXES}
|
||||
)
|
||||
endforeach()
|
||||
endif()
|
||||
if(NOT ITCL_STUB_LIBRARY)
|
||||
find_library(ITCL_STUB_LIBRARY
|
||||
NAMES ${ITCLSTUB_POSSIBLE_LIB_NAMES}
|
||||
PATH_SUFFIXES ${ITCL_POSSIBLE_LIB_PATH_SUFFIXES}
|
||||
)
|
||||
endif()
|
||||
|
||||
set(ITCL_POSSIBLE_INCLUDE_PATH_SUFFIXES
|
||||
include
|
||||
include/itcl
|
||||
include/itcl3
|
||||
include/itcl3.4
|
||||
)
|
||||
|
||||
foreach(search ${_ITCL_SEARCHES})
|
||||
find_path(ITCL_INCLUDE_PATH
|
||||
NAMES itcl.h ${${search}}
|
||||
PATH_SUFFIXES ${ITCL_POSSIBLE_INCLUDE_PATH_SUFFIXES}
|
||||
)
|
||||
endforeach()
|
||||
if (NOT ITCL_INCLUDE_PATH)
|
||||
find_path(ITCL_INCLUDE_PATH
|
||||
NAMES itcl.h
|
||||
HINTS ${ITCL_POSSIBLE_INCLUDE_PATHS}
|
||||
)
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(ITCL
|
||||
REQUIRED_VARS ITCL_LIBRARY ITCL_STUB_LIBRARY ITCL_INCLUDE_PATH
|
||||
)
|
||||
|
||||
mark_as_advanced(
|
||||
ITCL_INCLUDE_PATH
|
||||
ITCL_LIBRARY
|
||||
ITCL_STUB_LIBRARY
|
||||
)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
@@ -0,0 +1,245 @@
|
||||
#
|
||||
# - Find lemon executable and provides macros to generate custom build rules
|
||||
# The module defines the following variables
|
||||
#
|
||||
# LEMON_EXECUTABLE - path to the lemon program
|
||||
# LEMON_TEMPLATE - location of the lemon template file
|
||||
|
||||
#=============================================================================
|
||||
# F I N D L E M O N . C M A K E
|
||||
#
|
||||
# Originally based off of FindBISON.cmake from Kitware's CMake distribution
|
||||
#
|
||||
# Copyright (c) 2010-2023 United States Government as represented by
|
||||
# the U.S. Army Research Laboratory.
|
||||
# Copyright 2009 Kitware, Inc.
|
||||
# Copyright 2006 Tristan Carel
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# * Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# * The names of the authors may not be used to endorse or promote
|
||||
# products derived from this software without specific prior written
|
||||
# permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#=============================================================================
|
||||
|
||||
set(_LEMON_SEARCHES)
|
||||
|
||||
# Search LEMON_ROOT first if it is set.
|
||||
if(LEMON_ROOT)
|
||||
set(_LEMON_SEARCH_ROOT PATHS ${LEMON_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _LEMON_SEARCHES _LEMON_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
# Normal search.
|
||||
set(_LEMON_x86 "(x86)")
|
||||
set(_LEMON_SEARCH_NORMAL
|
||||
PATHS "$ENV{ProgramFiles}/lemon"
|
||||
"$ENV{ProgramFiles${_LEMON_x86}}/lemon")
|
||||
unset(_LEMON_x86)
|
||||
list(APPEND _LEMON_SEARCHES _LEMON_SEARCH_NORMAL)
|
||||
|
||||
set(LEMON_NAMES lemon)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_LEMON_SEARCHES})
|
||||
find_program(LEMON_EXECUTABLE lemon ${${search}} PATH_SUFFIXES bin)
|
||||
endforeach()
|
||||
mark_as_advanced(LEMON_EXECUTABLE)
|
||||
|
||||
foreach(search ${_LEMON_SEARCHES})
|
||||
find_file(LEMON_TEMPLATE lempar.c ${${search}} PATH_SUFFIXES ${DATA_DIR} ${DATA_DIR}/lemon)
|
||||
endforeach()
|
||||
mark_as_advanced(LEMON_TEMPLATE)
|
||||
|
||||
if (LEMON_EXECUTABLE AND NOT LEMON_TEMPLATE)
|
||||
# look for the template in share
|
||||
if (DATA_DIR AND EXISTS "${DATA_DIR}/lemon/lempar.c")
|
||||
set (LEMON_TEMPLATE "${DATA_DIR}/lemon/lempar.c")
|
||||
elseif (EXISTS "share/lemon/lempar.c")
|
||||
set (LEMON_TEMPLATE "share/lemon/lempar.c")
|
||||
elseif (EXISTS "/usr/share/lemon/lempar.c")
|
||||
set (LEMON_TEMPLATE "/usr/share/lemon/lempar.c")
|
||||
endif (DATA_DIR AND EXISTS "${DATA_DIR}/lemon/lempar.c")
|
||||
endif (LEMON_EXECUTABLE AND NOT LEMON_TEMPLATE)
|
||||
|
||||
if (LEMON_EXECUTABLE AND NOT LEMON_TEMPLATE)
|
||||
# look for the template in bin dir
|
||||
get_filename_component(lemon_path ${LEMON_EXECUTABLE} DIRECTORY)
|
||||
if (lemon_path)
|
||||
if (EXISTS ${lemon_path}/lempar.c)
|
||||
set (LEMON_TEMPLATE "${lemon_path}/lempar.c")
|
||||
endif (EXISTS ${lemon_path}/lempar.c)
|
||||
if (EXISTS /usr/share/lemon/lempar.c)
|
||||
set (LEMON_TEMPLATE "/usr/share/lemon/lempar.c")
|
||||
endif (EXISTS /usr/share/lemon/lempar.c)
|
||||
endif (lemon_path)
|
||||
endif(LEMON_EXECUTABLE AND NOT LEMON_TEMPLATE)
|
||||
|
||||
if (LEMON_EXECUTABLE AND NOT LEMON_TEMPLATE)
|
||||
# fallback
|
||||
set (LEMON_TEMPLATE "lempar.c")
|
||||
if (NOT EXISTS ${LEMON_TEMPLATE})
|
||||
message(WARNING "Lemon's lempar.c template file could not be found automatically, set LEMON_TEMPLATE")
|
||||
endif (NOT EXISTS ${LEMON_TEMPLATE})
|
||||
endif (LEMON_EXECUTABLE AND NOT LEMON_TEMPLATE)
|
||||
|
||||
mark_as_advanced(LEMON_TEMPLATE)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LEMON DEFAULT_MSG LEMON_EXECUTABLE LEMON_TEMPLATE)
|
||||
|
||||
# Define the macro
|
||||
# LEMON_TARGET(<Name> <LemonInput> <LemonSource> <LemonHeader>
|
||||
# [<ArgString>])
|
||||
# which will create a custom rule to generate a parser. <LemonInput> is
|
||||
# the path to a lemon file. <LemonSource> is the desired name for the
|
||||
# generated source file. <LemonHeader> is the desired name for the
|
||||
# generated header which contains the token list. Anything in the optional
|
||||
# <ArgString> parameter is appended to the lemon command line.
|
||||
#
|
||||
# ====================================================================
|
||||
# Example:
|
||||
#
|
||||
# find_package(LEMON)
|
||||
# LEMON_TARGET(MyParser parser.y parser.c parser.h)
|
||||
# add_executable(Foo main.cpp ${LEMON_MyParser_OUTPUTS})
|
||||
# ====================================================================
|
||||
|
||||
include(CMakeParseArguments)
|
||||
|
||||
if(NOT COMMAND LEMON_TARGET)
|
||||
macro(LEMON_TARGET Name Input)
|
||||
|
||||
get_filename_component(IN_FILE_WE ${Input} NAME_WE)
|
||||
set(LVAR_PREFIX ${Name}_${IN_FILE_WE})
|
||||
|
||||
if(${ARGC} GREATER 3)
|
||||
CMAKE_PARSE_ARGUMENTS(${LVAR_PREFIX} "" "OUT_SRC_FILE;OUT_HDR_FILE;WORKING_DIR;EXTRA_ARGS" "" ${ARGN})
|
||||
endif(${ARGC} GREATER 3)
|
||||
|
||||
if (TARGET perplex_stage)
|
||||
set(DEPS_TARGET perplex_stage)
|
||||
endif (TARGET perplex_stage)
|
||||
|
||||
# Need a working directory
|
||||
if("${${LVAR_PREFIX}_WORKING_DIR}" STREQUAL "")
|
||||
set(${LVAR_PREFIX}_WORKING_DIR "${CMAKE_CURRENT_BINARY_DIR}/${LVAR_PREFIX}")
|
||||
endif("${${LVAR_PREFIX}_WORKING_DIR}" STREQUAL "")
|
||||
file(MAKE_DIRECTORY ${${LVAR_PREFIX}_WORKING_DIR})
|
||||
|
||||
# Output source file
|
||||
if ("${${LVAR_PREFIX}_OUT_SRC_FILE}" STREQUAL "")
|
||||
set(${LVAR_PREFIX}_OUT_SRC_FILE ${${LVAR_PREFIX}_WORKING_DIR}/${IN_FILE_WE}.c)
|
||||
else ("${${LVAR_PREFIX}_OUT_SRC_FILE}" STREQUAL "")
|
||||
get_filename_component(specified_out_dir ${${LVAR_PREFIX}_OUT_SRC_FILE} DIRECTORY)
|
||||
if(NOT "${specified_out_dir}" STREQUAL "")
|
||||
message(FATAL_ERROR "\nFull path specified for OUT_SRC_FILE - should be filename only.\n")
|
||||
endif(NOT "${specified_out_dir}" STREQUAL "")
|
||||
set(${LVAR_PREFIX}_OUT_SRC_FILE ${${LVAR_PREFIX}_WORKING_DIR}/${${LVAR_PREFIX}_OUT_SRC_FILE})
|
||||
endif ("${${LVAR_PREFIX}_OUT_SRC_FILE}" STREQUAL "")
|
||||
|
||||
# Output header file
|
||||
if ("${${LVAR_PREFIX}_OUT_HDR_FILE}" STREQUAL "")
|
||||
set(${LVAR_PREFIX}_OUT_HDR_FILE ${${LVAR_PREFIX}_WORKING_DIR}/${IN_FILE_WE}.h)
|
||||
else ("${${LVAR_PREFIX}_OUT_HDR_FILE}" STREQUAL "")
|
||||
get_filename_component(specified_out_dir ${${LVAR_PREFIX}_OUT_HDR_FILE} DIRECTORY)
|
||||
if(NOT "${specified_out_dir}" STREQUAL "")
|
||||
message(FATAL_ERROR "\nFull path specified for OUT_HDR_FILE - should be filename only.\n")
|
||||
endif(NOT "${specified_out_dir}" STREQUAL "")
|
||||
set(${LVAR_PREFIX}_OUT_HDR_FILE ${${LVAR_PREFIX}_WORKING_DIR}/${${LVAR_PREFIX}_OUT_HDR_FILE})
|
||||
endif ("${${LVAR_PREFIX}_OUT_HDR_FILE}" STREQUAL "")
|
||||
|
||||
# input file
|
||||
get_filename_component(in_full ${Input} ABSOLUTE)
|
||||
if("${in_full}" STREQUAL "${Input}")
|
||||
set(lemon_in_file ${Input})
|
||||
else("${in_full}" STREQUAL "${Input}")
|
||||
set(lemon_in_file "${CMAKE_CURRENT_SOURCE_DIR}/${Input}")
|
||||
endif("${in_full}" STREQUAL "${Input}")
|
||||
|
||||
|
||||
# names of lemon output files will be based on the name of the input file
|
||||
set(LEMON_GEN_SOURCE ${${LVAR_PREFIX}_WORKING_DIR}/${IN_FILE_WE}.c)
|
||||
set(LEMON_GEN_HEADER ${${LVAR_PREFIX}_WORKING_DIR}/${IN_FILE_WE}.h)
|
||||
set(LEMON_GEN_OUT ${${LVAR_PREFIX}_WORKING_DIR}/${IN_FILE_WE}.out)
|
||||
|
||||
# copy input to bin directory and run lemon
|
||||
get_filename_component(INPUT_NAME ${Input} NAME)
|
||||
add_custom_command(
|
||||
OUTPUT ${LEMON_GEN_OUT} ${LEMON_GEN_SOURCE} ${LEMON_GEN_HEADER}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${lemon_in_file} ${${LVAR_PREFIX}_WORKING_DIR}/${INPUT_NAME}
|
||||
COMMAND ${CMAKE_COMMAND} -E touch ${${LVAR_PREFIX}_WORKING_DIR}/${INPUT_NAME}-tmp_cpy.done
|
||||
COMMAND ${CMAKE_COMMAND} -E remove ${${LVAR_PREFIX}_WORKING_DIR}/${INPUT_NAME}-tmp_cpy.done
|
||||
COMMAND ${LEMON_EXECUTABLE} -T${LEMON_TEMPLATE} ${${LVAR_PREFIX}_WORKING_DIR}/${INPUT_NAME} ${${LVAR_PREFIX}__EXTRA_ARGS}
|
||||
DEPENDS ${Input} ${LEMON_EXECUTABLE_TARGET} ${DEPS_TARGET}
|
||||
WORKING_DIRECTORY ${${LVAR_PREFIX}_WORKING_DIR}
|
||||
COMMENT "[LEMON][${Name}] Building parser with ${LEMON_EXECUTABLE}"
|
||||
)
|
||||
|
||||
# rename generated outputs
|
||||
if(NOT "${${LVAR_PREFIX}_OUT_SRC_FILE}" STREQUAL "${LEMON_GEN_SOURCE}")
|
||||
add_custom_command(
|
||||
OUTPUT ${${LVAR_PREFIX}_OUT_SRC_FILE} ${${LVAR_PREFIX}_OUT_SRC_FILE}-src_cpy.done
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${LEMON_GEN_SOURCE} ${${LVAR_PREFIX}_OUT_SRC_FILE}
|
||||
COMMAND ${CMAKE_COMMAND} -E touch ${${LVAR_PREFIX}_OUT_SRC_FILE}-src_cpy.done
|
||||
DEPENDS ${LemonInput} ${LEMON_EXECUTABLE_TARGET} ${LEMON_GEN_SOURCE} ${DEPS_TARGET}
|
||||
)
|
||||
set(LEMON_${Name}_OUTPUTS ${${LVAR_PREFIX}_OUT_SRC_FILE} ${LEMON_${Name}_OUTPUTS} ${${LVAR_PREFIX}_OUT_SRC_FILE}-src_cpy.done)
|
||||
endif(NOT "${${LVAR_PREFIX}_OUT_SRC_FILE}" STREQUAL "${LEMON_GEN_SOURCE}")
|
||||
if(NOT "${${LVAR_PREFIX}_OUT_HDR_FILE}" STREQUAL "${LEMON_GEN_HEADER}")
|
||||
add_custom_command(
|
||||
OUTPUT ${${LVAR_PREFIX}_OUT_HDR_FILE} ${${LVAR_PREFIX}_OUT_HDR_FILE}-hdr_cpy.done
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${LEMON_GEN_HEADER} ${${LVAR_PREFIX}_OUT_HDR_FILE}
|
||||
COMMAND ${CMAKE_COMMAND} -E touch ${${LVAR_PREFIX}_OUT_HDR_FILE}-hdr_cpy.done
|
||||
DEPENDS ${LemonInput} ${LEMON_EXECUTABLE_TARGET} ${LEMON_GEN_HEADER} ${DEPS_TARGET}
|
||||
)
|
||||
set(LEMON_${Name}_OUTPUTS ${${LVAR_PREFIX}_OUT_HDR_FILE} ${LEMON_${Name}_OUTPUTS} ${${LVAR_PREFIX}_OUT_HDR_FILE}-hdr_cpy.done)
|
||||
endif(NOT "${${LVAR_PREFIX}_OUT_HDR_FILE}" STREQUAL "${LEMON_GEN_HEADER}")
|
||||
|
||||
set(LEMON_${Name}_OUTPUTS ${LEMON_${Name}_OUTPUTS} ${LEMON_GEN_OUT})
|
||||
|
||||
# make sure we clean up generated output and copied input
|
||||
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${LEMON_${Name}_OUTPUTS}")
|
||||
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${${LVAR_PREFIX}_WORKING_DIR}/${INPUT_NAME}")
|
||||
|
||||
# macro ran successfully
|
||||
set(LEMON_${Name}_DEFINED TRUE)
|
||||
|
||||
set(LEMON_${Name}_SRC ${${LVAR_PREFIX}_OUT_SRC_FILE})
|
||||
set(LEMON_${Name}_HDR ${${LVAR_PREFIX}_OUT_HDR_FILE})
|
||||
set(LEMON_${Name}_INCLUDE_DIR ${${LVAR_PREFIX}_WORKING_DIR})
|
||||
|
||||
endmacro(LEMON_TARGET)
|
||||
endif(NOT COMMAND LEMON_TARGET)
|
||||
|
||||
#============================================================
|
||||
# FindLEMON.cmake ends here
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
@@ -0,0 +1,76 @@
|
||||
#.rst:
|
||||
# FindLINENOISE
|
||||
# --------
|
||||
#
|
||||
# Find the native LINENOISE includes and library.
|
||||
#
|
||||
# IMPORTED Targets
|
||||
# ^^^^^^^^^^^^^^^^
|
||||
#
|
||||
# This module defines :prop_tgt:`IMPORTED` target ``LINENOISE::LINENOISE``, if
|
||||
# LINENOISE has been found.
|
||||
#
|
||||
# Result Variables
|
||||
# ^^^^^^^^^^^^^^^^
|
||||
#
|
||||
# This module defines the following variables:
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# LINENOISE_INCLUDE_DIRS - where to find linenoise.h, etc.
|
||||
# LINENOISE_LIBRARIES - List of libraries when using linenoise.
|
||||
# LINENOISE_FOUND - True if linenoise found.
|
||||
#
|
||||
# Hints
|
||||
# ^^^^^
|
||||
#
|
||||
# A user may set ``LINENOISE_ROOT`` to a linenoise installation root to tell this
|
||||
# module where to look.
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2001-2011 Kitware, Inc.
|
||||
#
|
||||
# Distributed under the OSI-approved BSD License (the "License");
|
||||
# see accompanying file Copyright.txt for details.
|
||||
#
|
||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the License for more information.
|
||||
#=============================================================================
|
||||
# (To distribute this file outside of CMake, substitute the full
|
||||
# License text for the above reference.)
|
||||
|
||||
set(_LINENOISE_SEARCHES)
|
||||
|
||||
# Search LINENOISE_ROOT first if it is set.
|
||||
if(LINENOISE_ROOT)
|
||||
set(_LINENOISE_SEARCH_ROOT PATHS ${LINENOISE_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _LINENOISE_SEARCHES _LINENOISE_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
set(LINENOISE_NAMES linenoise linenoised)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_LINENOISE_SEARCHES})
|
||||
find_path(LINENOISE_INCLUDE_DIR NAMES linenoise.h ${${search}} PATH_SUFFIXES include include/linenoise)
|
||||
find_library(LINENOISE_LIBRARY NAMES ${LINENOISE_NAMES} ${${search}} PATH_SUFFIXES lib)
|
||||
endforeach()
|
||||
|
||||
mark_as_advanced(LINENOISE_LIBRARY LINENOISE_INCLUDE_DIR)
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set LINENOISE_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LINENOISE REQUIRED_VARS LINENOISE_LIBRARY LINENOISE_INCLUDE_DIR)
|
||||
|
||||
if(LINENOISE_FOUND)
|
||||
set(LINENOISE_INCLUDE_DIRS ${LINENOISE_INCLUDE_DIR})
|
||||
set(LINENOISE_LIBRARIES ${LINENOISE_LIBRARY})
|
||||
|
||||
if(NOT TARGET LINENOISE::LINENOISE)
|
||||
add_library(LINENOISE::LINENOISE UNKNOWN IMPORTED)
|
||||
set_target_properties(LINENOISE::LINENOISE PROPERTIES
|
||||
IMPORTED_LOCATION "${LINENOISE_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${LINENOISE_INCLUDE_DIRS}")
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,76 @@
|
||||
#.rst:
|
||||
# FindLMDB
|
||||
# --------
|
||||
#
|
||||
# Find the native LMDB includes and library.
|
||||
#
|
||||
# IMPORTED Targets
|
||||
# ^^^^^^^^^^^^^^^^
|
||||
#
|
||||
# This module defines :prop_tgt:`IMPORTED` target ``LMDB::LMDB``, if
|
||||
# LMDB has been found.
|
||||
#
|
||||
# Result Variables
|
||||
# ^^^^^^^^^^^^^^^^
|
||||
#
|
||||
# This module defines the following variables:
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# LMDB_INCLUDE_DIRS - where to find lmdb.h, etc.
|
||||
# LMDB_LIBRARIES - List of libraries when using lmdb.
|
||||
# LMDB_FOUND - True if lmdb found.
|
||||
#
|
||||
# Hints
|
||||
# ^^^^^
|
||||
#
|
||||
# A user may set ``LMDB_ROOT`` to a lmdb installation root to tell this
|
||||
# module where to look.
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2001-2011 Kitware, Inc.
|
||||
#
|
||||
# Distributed under the OSI-approved BSD License (the "License");
|
||||
# see accompanying file Copyright.txt for details.
|
||||
#
|
||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the License for more information.
|
||||
#=============================================================================
|
||||
# (To distribute this file outside of CMake, substitute the full
|
||||
# License text for the above reference.)
|
||||
|
||||
set(_LMDB_SEARCHES)
|
||||
|
||||
# Search LMDB_ROOT first if it is set.
|
||||
if(LMDB_ROOT)
|
||||
set(_LMDB_SEARCH_ROOT PATHS ${LMDB_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _LMDB_SEARCHES _LMDB_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
set(LMDB_NAMES lmdb lmdbd)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_LMDB_SEARCHES})
|
||||
find_path(LMDB_INCLUDE_DIR NAMES lmdb.h ${${search}} PATH_SUFFIXES include include/lmdb)
|
||||
find_library(LMDB_LIBRARY NAMES ${LMDB_NAMES} ${${search}} PATH_SUFFIXES lib)
|
||||
endforeach()
|
||||
|
||||
mark_as_advanced(LMDB_LIBRARY LMDB_INCLUDE_DIR)
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set LMDB_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(LMDB REQUIRED_VARS LMDB_LIBRARY LMDB_INCLUDE_DIR)
|
||||
|
||||
if(LMDB_FOUND)
|
||||
set(LMDB_INCLUDE_DIRS ${LMDB_INCLUDE_DIR})
|
||||
set(LMDB_LIBRARIES ${LMDB_LIBRARY})
|
||||
|
||||
if(NOT TARGET LMDB::LMDB)
|
||||
add_library(LMDB::LMDB UNKNOWN IMPORTED)
|
||||
set_target_properties(LMDB::LMDB PROPERTIES
|
||||
IMPORTED_LOCATION "${LMDB_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${LMDB_INCLUDE_DIRS}")
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,94 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindMANIFOLD
|
||||
--------
|
||||
|
||||
Find the native MANIFOLD includes and library.
|
||||
|
||||
IMPORTED Targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines :prop_tgt:`IMPORTED` target ``MANIFOLD::MANIFOLD``, if
|
||||
MANIFOLD has been found.
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines the following variables:
|
||||
|
||||
::
|
||||
|
||||
MANIFOLD_INCLUDE_DIRS - where to find manifold/manifold.h, etc.
|
||||
MANIFOLD_LIBRARIES - List of libraries when using Manifold.
|
||||
MANIFOLD_FOUND - True if Manifold found.
|
||||
|
||||
Hints
|
||||
^^^^^
|
||||
|
||||
A user may set ``MANIFOLD_ROOT`` to a Manifold installation root to tell this
|
||||
module where to look.
|
||||
#]=======================================================================]
|
||||
|
||||
set(_MANIFOLD_SEARCHES)
|
||||
|
||||
# Search MANIFOLD_ROOT first if it is set.
|
||||
if(MANIFOLD_ROOT)
|
||||
set(_MANIFOLD_SEARCH_ROOT PATHS ${MANIFOLD_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _MANIFOLD_SEARCHES _MANIFOLD_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
set(MANIFOLD_NAMES manifold)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_MANIFOLD_SEARCHES})
|
||||
find_path(MANIFOLD_INCLUDE_DIR NAMES manifold.h ${${search}} PATH_SUFFIXES include include/manifold)
|
||||
endforeach()
|
||||
|
||||
# Allow MANIFOLD_LIBRARY to be set manually, as the location of the Manifold library
|
||||
if(NOT MANIFOLD_LIBRARY)
|
||||
foreach(search ${_MANIFOLD_SEARCHES})
|
||||
find_library(MANIFOLD_LIBRARY NAMES ${MANIFOLD_NAMES} NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
unset(MANIFOLD_NAMES)
|
||||
|
||||
mark_as_advanced(MANIFOLD_INCLUDE_DIR)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(MANIFOLD REQUIRED_VARS MANIFOLD_LIBRARY MANIFOLD_INCLUDE_DIR)
|
||||
|
||||
if(MANIFOLD_FOUND)
|
||||
set(MANIFOLD_INCLUDE_DIRS ${MANIFOLD_INCLUDE_DIR})
|
||||
|
||||
if(NOT MANIFOLD_LIBRARIES)
|
||||
set(MANIFOLD_LIBRARIES ${MANIFOLD_LIBRARY})
|
||||
endif()
|
||||
|
||||
if(NOT TARGET MANIFOLD::MANIFOLD)
|
||||
add_library(MANIFOLD::MANIFOLD UNKNOWN IMPORTED)
|
||||
set_target_properties(MANIFOLD::MANIFOLD PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${MANIFOLD_INCLUDE_DIRS}")
|
||||
|
||||
if(MANIFOLD_LIBRARY_RELEASE)
|
||||
set_property(TARGET MANIFOLD::MANIFOLD APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(MANIFOLD::MANIFOLD PROPERTIES
|
||||
IMPORTED_LOCATION_RELEASE "${MANIFOLD_LIBRARY_RELEASE}")
|
||||
endif()
|
||||
|
||||
if(MANIFOLD_LIBRARY_DEBUG)
|
||||
set_property(TARGET MANIFOLD::MANIFOLD APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS DEBUG)
|
||||
set_target_properties(MANIFOLD::MANIFOLD PROPERTIES
|
||||
IMPORTED_LOCATION_DEBUG "${MANIFOLD_LIBRARY_DEBUG}")
|
||||
endif()
|
||||
|
||||
if(NOT MANIFOLD_LIBRARY_RELEASE AND NOT MANIFOLD_LIBRARY_DEBUG)
|
||||
set_property(TARGET MANIFOLD::MANIFOLD APPEND PROPERTY
|
||||
IMPORTED_LOCATION "${MANIFOLD_LIBRARY}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,102 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindNETPBM
|
||||
--------
|
||||
|
||||
Find the native NETPBM includes and library.
|
||||
|
||||
IMPORTED Targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines :prop_tgt:`IMPORTED` target ``NETPBM::NETPBM``, if
|
||||
NETPBM has been found.
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines the following variables:
|
||||
|
||||
::
|
||||
|
||||
NETPBM_INCLUDE_DIRS - where to find pam.h, etc.
|
||||
NETPBM_LIBRARIES - List of libraries when using netpbm.
|
||||
NETPBM_FOUND - True if netpbm found.
|
||||
|
||||
Hints
|
||||
^^^^^
|
||||
|
||||
A user may set ``NETPBM_ROOT`` to a netpbm installation root to tell this
|
||||
module where to look.
|
||||
#]=======================================================================]
|
||||
|
||||
set(_NETPBM_SEARCHES)
|
||||
|
||||
# Search NETPBM_ROOT first if it is set.
|
||||
if(NETPBM_ROOT)
|
||||
set(_NETPBM_SEARCH_ROOT PATHS ${NETPBM_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _NETPBM_SEARCHES _NETPBM_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
# Normal search.
|
||||
set(_NETPBM_x86 "(x86)")
|
||||
set(_NETPBM_SEARCH_NORMAL
|
||||
PATHS "$ENV{ProgramFiles}/netpbm"
|
||||
"$ENV{ProgramFiles${_NETPBM_x86}}/netpbm")
|
||||
unset(_NETPBM_x86)
|
||||
list(APPEND _NETPBM_SEARCHES _NETPBM_SEARCH_NORMAL)
|
||||
|
||||
set(NETPBM_NAMES netpbm)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_NETPBM_SEARCHES})
|
||||
find_path(NETPBM_INCLUDE_DIR NAMES pam.h ${${search}} PATH_SUFFIXES include include/netpbm netpbm)
|
||||
endforeach()
|
||||
|
||||
# Allow NETPBM_LIBRARY to be set manually, as the location of the netpbm library
|
||||
if(NOT NETPBM_LIBRARY)
|
||||
foreach(search ${_NETPBM_SEARCHES})
|
||||
find_library(NETPBM_LIBRARY NAMES ${NETPBM_NAMES} NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
unset(NETPBM_NAMES)
|
||||
|
||||
mark_as_advanced(NETPBM_INCLUDE_DIR)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(NETPBM REQUIRED_VARS NETPBM_LIBRARY NETPBM_INCLUDE_DIR)
|
||||
|
||||
if(NETPBM_FOUND)
|
||||
set(NETPBM_INCLUDE_DIRS ${NETPBM_INCLUDE_DIR})
|
||||
|
||||
if(NOT NETPBM_LIBRARIES)
|
||||
set(NETPBM_LIBRARIES ${NETPBM_LIBRARY})
|
||||
endif()
|
||||
|
||||
if(NOT TARGET NETPBM::NETPBM)
|
||||
add_library(NETPBM::NETPBM UNKNOWN IMPORTED)
|
||||
set_target_properties(NETPBM::NETPBM PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${NETPBM_INCLUDE_DIRS}")
|
||||
|
||||
if(NETPBM_LIBRARY_RELEASE)
|
||||
set_property(TARGET NETPBM::NETPBM APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(NETPBM::NETPBM PROPERTIES
|
||||
IMPORTED_LOCATION_RELEASE "${NETPBM_LIBRARY_RELEASE}")
|
||||
endif()
|
||||
|
||||
if(NETPBM_LIBRARY_DEBUG)
|
||||
set_property(TARGET NETPBM::NETPBM APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS DEBUG)
|
||||
set_target_properties(NETPBM::NETPBM PROPERTIES
|
||||
IMPORTED_LOCATION_DEBUG "${NETPBM_LIBRARY_DEBUG}")
|
||||
endif()
|
||||
|
||||
if(NOT NETPBM_LIBRARY_RELEASE AND NOT NETPBM_LIBRARY_DEBUG)
|
||||
set_property(TARGET NETPBM::NETPBM APPEND PROPERTY
|
||||
IMPORTED_LOCATION "${NETPBM_LIBRARY}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,103 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindOPENNURBS
|
||||
--------
|
||||
|
||||
Find the native OPENNURBS includes and library.
|
||||
|
||||
IMPORTED Targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines :prop_tgt:`IMPORTED` target ``OPENNURBS::OPENNURBS``, if
|
||||
OPENNURBS has been found.
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines the following variables:
|
||||
|
||||
::
|
||||
|
||||
OPENNURBS_INCLUDE_DIRS - where to find opennurbs.h, etc.
|
||||
OPENNURBS_LIBRARIES - List of libraries when using openNURBS.
|
||||
OPENNURBS_FOUND - True if openNURBS found.
|
||||
|
||||
Hints
|
||||
^^^^^
|
||||
|
||||
A user may set ``OPENNURBS_ROOT`` to a openNURBS installation root to tell this
|
||||
module where to look.
|
||||
#]=======================================================================]
|
||||
|
||||
set(_OPENNURBS_SEARCHES)
|
||||
|
||||
# Search OPENNURBS_ROOT first if it is set.
|
||||
if(OPENNURBS_ROOT)
|
||||
set(_OPENNURBS_SEARCH_ROOT PATHS ${OPENNURBS_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _OPENNURBS_SEARCHES _OPENNURBS_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
# Normal search.
|
||||
set(_OPENNURBS_x86 "(x86)")
|
||||
set(_OPENNURBS_SEARCH_NORMAL
|
||||
PATHS "$ENV{ProgramFiles}/openNURBS"
|
||||
"$ENV{ProgramFiles${_OPENNURBS_x86}}/openNURBS")
|
||||
unset(_OPENNURBS_x86)
|
||||
list(APPEND _OPENNURBS_SEARCHES _OPENNURBS_SEARCH_NORMAL)
|
||||
|
||||
set(OPENNURBS_NAMES openNURBS OpenNURBS)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_OPENNURBS_SEARCHES})
|
||||
find_path(OPENNURBS_INCLUDE_DIR NAMES opennurbs.h ${${search}} PATH_SUFFIXES include include/openNURBS openNURBS include/OpenNURBS OpenNURBS)
|
||||
find_path(OPENNURBS_X_INCLUDE_DIR NAMES opennurbs_x.h ${${search}} PATH_SUFFIXES include include/openNURBS openNURBS include/OpenNURBS OpenNURBS)
|
||||
endforeach()
|
||||
|
||||
# Allow OPENNURBS_LIBRARY to be set manually, as the location of the openNURBS library
|
||||
if(NOT OPENNURBS_LIBRARY)
|
||||
foreach(search ${_OPENNURBS_SEARCHES})
|
||||
find_library(OPENNURBS_LIBRARY NAMES ${OPENNURBS_NAMES} NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
unset(OPENNURBS_NAMES)
|
||||
|
||||
mark_as_advanced(OPENNURBS_INCLUDE_DIR)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(OPENNURBS REQUIRED_VARS OPENNURBS_LIBRARY OPENNURBS_INCLUDE_DIR OPENNURBS_X_INCLUDE_DIR)
|
||||
|
||||
if(OPENNURBS_FOUND)
|
||||
set(OPENNURBS_INCLUDE_DIRS ${OPENNURBS_INCLUDE_DIR})
|
||||
|
||||
if(NOT OPENNURBS_LIBRARIES)
|
||||
set(OPENNURBS_LIBRARIES ${OPENNURBS_LIBRARY})
|
||||
endif()
|
||||
|
||||
if(NOT TARGET OPENNURBS::OPENNURBS)
|
||||
add_library(OPENNURBS::OPENNURBS UNKNOWN IMPORTED)
|
||||
set_target_properties(OPENNURBS::OPENNURBS PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${OPENNURBS_INCLUDE_DIRS}")
|
||||
|
||||
if(OPENNURBS_LIBRARY_RELEASE)
|
||||
set_property(TARGET OPENNURBS::OPENNURBS APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(OPENNURBS::OPENNURBS PROPERTIES
|
||||
IMPORTED_LOCATION_RELEASE "${OPENNURBS_LIBRARY_RELEASE}")
|
||||
endif()
|
||||
|
||||
if(OPENNURBS_LIBRARY_DEBUG)
|
||||
set_property(TARGET OPENNURBS::OPENNURBS APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS DEBUG)
|
||||
set_target_properties(OPENNURBS::OPENNURBS PROPERTIES
|
||||
IMPORTED_LOCATION_DEBUG "${OPENNURBS_LIBRARY_DEBUG}")
|
||||
endif()
|
||||
|
||||
if(NOT OPENNURBS_LIBRARY_RELEASE AND NOT OPENNURBS_LIBRARY_DEBUG)
|
||||
set_property(TARGET OPENNURBS::OPENNURBS APPEND PROPERTY
|
||||
IMPORTED_LOCATION "${OPENNURBS_LIBRARY}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,94 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindOSMESA
|
||||
--------
|
||||
|
||||
Find the native OSMESA includes and library.
|
||||
|
||||
IMPORTED Targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines :prop_tgt:`IMPORTED` target ``OSMESA::OSMESA``, if
|
||||
OSMESA has been found.
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines the following variables:
|
||||
|
||||
::
|
||||
|
||||
OSMESA_INCLUDE_DIRS - where to find osmesa.h, etc.
|
||||
OSMESA_LIBRARIES - List of libraries when using openNURBS.
|
||||
OSMESA_FOUND - True if openNURBS found.
|
||||
|
||||
Hints
|
||||
^^^^^
|
||||
|
||||
A user may set ``OSMESA_ROOT`` to a openNURBS installation root to tell this
|
||||
module where to look.
|
||||
#]=======================================================================]
|
||||
|
||||
set(_OSMESA_SEARCHES)
|
||||
|
||||
# Search OSMESA_ROOT first if it is set.
|
||||
if(OSMESA_ROOT)
|
||||
set(_OSMESA_SEARCH_ROOT PATHS ${OSMESA_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _OSMESA_SEARCHES _OSMESA_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
set(OSMESA_NAMES osmesa OSMesa)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_OSMESA_SEARCHES})
|
||||
find_path(OSMESA_INCLUDE_DIR NAMES osmesa.h ${${search}} PATH_SUFFIXES include include/OSMesa OSMesa)
|
||||
endforeach()
|
||||
|
||||
# Allow OSMESA_LIBRARY to be set manually, as the location of the openNURBS library
|
||||
if(NOT OSMESA_LIBRARY)
|
||||
foreach(search ${_OSMESA_SEARCHES})
|
||||
find_library(OSMESA_LIBRARY NAMES ${OSMESA_NAMES} NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
unset(OSMESA_NAMES)
|
||||
|
||||
mark_as_advanced(OSMESA_INCLUDE_DIR)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(OSMESA REQUIRED_VARS OSMESA_LIBRARY OSMESA_INCLUDE_DIR)
|
||||
|
||||
if(OSMESA_FOUND)
|
||||
set(OSMESA_INCLUDE_DIRS ${OSMESA_INCLUDE_DIR})
|
||||
|
||||
if(NOT OSMESA_LIBRARIES)
|
||||
set(OSMESA_LIBRARIES ${OSMESA_LIBRARY})
|
||||
endif()
|
||||
|
||||
if(NOT TARGET OSMESA::OSMESA)
|
||||
add_library(OSMESA::OSMESA UNKNOWN IMPORTED)
|
||||
set_target_properties(OSMESA::OSMESA PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${OSMESA_INCLUDE_DIRS}")
|
||||
|
||||
if(OSMESA_LIBRARY_RELEASE)
|
||||
set_property(TARGET OSMESA::OSMESA APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(OSMESA::OSMESA PROPERTIES
|
||||
IMPORTED_LOCATION_RELEASE "${OSMESA_LIBRARY_RELEASE}")
|
||||
endif()
|
||||
|
||||
if(OSMESA_LIBRARY_DEBUG)
|
||||
set_property(TARGET OSMESA::OSMESA APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS DEBUG)
|
||||
set_target_properties(OSMESA::OSMESA PROPERTIES
|
||||
IMPORTED_LOCATION_DEBUG "${OSMESA_LIBRARY_DEBUG}")
|
||||
endif()
|
||||
|
||||
if(NOT OSMESA_LIBRARY_RELEASE AND NOT OSMESA_LIBRARY_DEBUG)
|
||||
set_property(TARGET OSMESA::OSMESA APPEND PROPERTY
|
||||
IMPORTED_LOCATION "${OSMESA_LIBRARY}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,152 @@
|
||||
#
|
||||
# Try to find OPENMESH
|
||||
# Once done this will define
|
||||
#
|
||||
# OPENMESH_FOUND - system has OPENMESH
|
||||
# OPENMESH_INCLUDE_DIRS - the OPENMESH include directories
|
||||
# OPENMESH_LIBRARIES - Link these to use OPENMESH
|
||||
###
|
||||
# - helpful cmake flags when building
|
||||
#
|
||||
# OPENMESH_ROOT - path to OpenMesh root if it is built outside of the usual location
|
||||
#
|
||||
#=============================================================================
|
||||
#
|
||||
# Copyright 2015 Computer Graphics Group, RWTH Aachen University
|
||||
# Authors: Jan Möbius <moebius@cs.rwth-aachen.de>
|
||||
# Hans-Christian Ebke <ebke@cs.rwth-aachen.de>
|
||||
#
|
||||
#
|
||||
#===========================================================================
|
||||
#
|
||||
# OpenMesh
|
||||
# Copyright (c) 2001-2015, RWTH-Aachen University
|
||||
# Department of Computer Graphics and Multimedia
|
||||
# All rights reserved.
|
||||
# www.openmesh.org
|
||||
#
|
||||
#---------------------------------------------------------------------------
|
||||
# This file is part of OpenMesh.
|
||||
#---------------------------------------------------------------------------
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright notice,
|
||||
# this list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# 3. Neither the name of the copyright holder nor the names of its
|
||||
# contributors may be used to endorse or promote products derived from
|
||||
# this software without specific prior written permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
# PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER
|
||||
# OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
||||
# PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
# LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
#===========================================================================
|
||||
|
||||
#if already found via finder or simulated finder in openmesh CMakeLists.txt, skip the search
|
||||
IF (NOT OPENMESH_FOUND)
|
||||
SET (SEARCH_PATHS
|
||||
"${OPENMESH_ROOT}"
|
||||
/usr/local/
|
||||
/usr/
|
||||
"${CMAKE_SOURCE_DIR}/OpenMesh/src/OpenMesh"
|
||||
"${CMAKE_SOURCE_DIR}/libs_required/OpenMesh/src/OpenMesh"
|
||||
"${CMAKE_SOURCE_DIR}/../OpenMesh/src/OpenMesh"
|
||||
"C:/Program Files/OpenMesh 8.1"
|
||||
"C:/Program Files/OpenMesh 8.0"
|
||||
"C:/Program Files/OpenMesh 7.2"
|
||||
"C:/Program Files/OpenMesh 7.1"
|
||||
"C:/Program Files/OpenMesh 7.0"
|
||||
"C:/Program Files/OpenMesh 6.3"
|
||||
"C:/Program Files/OpenMesh 6.2"
|
||||
"C:/Program Files/OpenMesh 6.1"
|
||||
"C:/Program Files/OpenMesh 6.0"
|
||||
"C:/Program Files/OpenMesh 5.2"
|
||||
"C:/Program Files/OpenMesh 5.1"
|
||||
"C:/Program Files/OpenMesh 5.0"
|
||||
"C:/Program Files/OpenMesh 4.2"
|
||||
"C:/Program Files/OpenMesh 4.1"
|
||||
"C:/Program Files/OpenMesh 4.0"
|
||||
"C:/Program Files/OpenMesh 3.4"
|
||||
"C:/Program Files/OpenMesh 3.3"
|
||||
"C:/Program Files/OpenMesh 3.2"
|
||||
"C:/Program Files/OpenMesh 3.1"
|
||||
"C:/Program Files/OpenMesh 3.0"
|
||||
"C:/Program Files/OpenMesh 2.4.1"
|
||||
"C:/Program Files/OpenMesh 2.4"
|
||||
"C:/Program Files/OpenMesh 2.0/include"
|
||||
"C:/libs/OpenMesh 8.1"
|
||||
"C:/libs/OpenMesh 8.0"
|
||||
"C:/libs/OpenMesh 7.1"
|
||||
"C:/libs/OpenMesh 7.0"
|
||||
"C:/libs/OpenMesh 6.3"
|
||||
"C:/libs/OpenMesh 6.2"
|
||||
"C:/libs/OpenMesh 6.1"
|
||||
"C:/libs/OpenMesh 6.0"
|
||||
"C:/libs/OpenMesh 5.2"
|
||||
"C:/libs/OpenMesh 5.1"
|
||||
"C:/libs/OpenMesh 5.0"
|
||||
"C:/libs/OpenMesh 4.2"
|
||||
"C:/libs/OpenMesh 4.1"
|
||||
"C:/libs/OpenMesh 4.0"
|
||||
"C:/libs/OpenMesh 3.4"
|
||||
"C:/libs/OpenMesh 3.3"
|
||||
"C:/libs/OpenMesh 3.2"
|
||||
"C:/libs/OpenMesh 3.1"
|
||||
"C:/libs/OpenMesh 3.0"
|
||||
"C:/libs/OpenMesh 2.4.1"
|
||||
"C:/libs/OpenMesh 2.4"
|
||||
"${OPENMESH_LIBRARY_DIR}"
|
||||
)
|
||||
|
||||
FIND_PATH (OPENMESH_INCLUDE_DIR OpenMesh/Core/Mesh/PolyMeshT.hh
|
||||
PATHS ${SEARCH_PATHS}
|
||||
PATH_SUFFIXES include)
|
||||
|
||||
FIND_LIBRARY(OPENMESH_CORE_LIBRARY_RELEASE NAMES OpenMeshCore
|
||||
PATHS ${SEARCH_PATHS}
|
||||
PATH_SUFFIXES lib lib64)
|
||||
|
||||
FIND_LIBRARY(OPENMESH_CORE_LIBRARY_DEBUG NAMES OpenMeshCored
|
||||
PATHS ${SEARCH_PATHS}
|
||||
PATH_SUFFIXES lib lib64)
|
||||
|
||||
FIND_LIBRARY(OPENMESH_TOOLS_LIBRARY_RELEASE NAMES OpenMeshTools
|
||||
PATHS ${SEARCH_PATHS}
|
||||
PATH_SUFFIXES lib lib64)
|
||||
|
||||
FIND_LIBRARY(OPENMESH_TOOLS_LIBRARY_DEBUG NAMES OpenMeshToolsd
|
||||
PATHS ${SEARCH_PATHS}
|
||||
PATH_SUFFIXES lib lib64)
|
||||
|
||||
#select configuration depending on platform (optimized... on windows)
|
||||
include(SelectLibraryConfigurations)
|
||||
select_library_configurations( OPENMESH_TOOLS )
|
||||
select_library_configurations( OPENMESH_CORE )
|
||||
|
||||
set(OPENMESH_LIBRARIES ${OPENMESH_CORE_LIBRARY} ${OPENMESH_TOOLS_LIBRARY} CACHE STRING "OpenMesh Core and Tools libraries" FORCE)
|
||||
set(OPENMESH_INCLUDE_DIRS ${OPENMESH_INCLUDE_DIR} CACHE STRING "OpenMesh include directory" FORCE)
|
||||
|
||||
#checks, if OPENMESH was found and sets OPENMESH_FOUND if so
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(OpenMesh DEFAULT_MSG
|
||||
OPENMESH_CORE_LIBRARY OPENMESH_TOOLS_LIBRARY OPENMESH_INCLUDE_DIR)
|
||||
|
||||
|
||||
mark_as_advanced(OPENMESH_INCLUDE_DIR OPENMESH_CORE_LIBRARY_RELEASE OPENMESH_CORE_LIBRARY_DEBUG OPENMESH_TOOLS_LIBRARY_RELEASE OPENMESH_TOOLS_LIBRARY_DEBUG)
|
||||
endif()
|
||||
@@ -0,0 +1,292 @@
|
||||
#
|
||||
# - Find perplex executable and provides macros to generate custom build rules
|
||||
# The module defines the following variables
|
||||
#
|
||||
# PERPLEX_EXECUTABLE - path to the perplex program
|
||||
# PERPLEX_TEMPLATE - location of the perplex template file
|
||||
|
||||
#=============================================================================
|
||||
# F I N D P E R P L E X . C M A K E
|
||||
#
|
||||
# Originally based off of FindBISON.cmake from Kitware's CMake distribution
|
||||
#
|
||||
# Copyright (c) 2010-2023 United States Government as represented by
|
||||
# the U.S. Army Research Laboratory.
|
||||
# Copyright 2009 Kitware, Inc.
|
||||
# Copyright 2006 Tristan Carel
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# * Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# * The names of the authors may not be used to endorse or promote
|
||||
# products derived from this software without specific prior written
|
||||
# permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#=============================================================================
|
||||
|
||||
set(_PERPLEX_SEARCHES)
|
||||
|
||||
# Search PERPLEX_ROOT first if it is set.
|
||||
if(PERPLEX_ROOT)
|
||||
set(_PERPLEX_SEARCH_ROOT PATHS ${PERPLEX_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _PERPLEX_SEARCHES _PERPLEX_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
# Normal search.
|
||||
set(_PERPLEX_x86 "(x86)")
|
||||
set(_PERPLEX_SEARCH_NORMAL
|
||||
PATHS "$ENV{ProgramFiles}/perplex"
|
||||
"$ENV{ProgramFiles${_PERPLEX_x86}}/perplex")
|
||||
unset(_PERPLEX_x86)
|
||||
list(APPEND _PERPLEX_SEARCHES _PERPLEX_SEARCH_NORMAL)
|
||||
|
||||
set(PERPLEX_NAMES perplex)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_PERPLEX_SEARCHES})
|
||||
find_program(PERPLEX_EXECUTABLE perplex ${${search}} PATH_SUFFIXES bin)
|
||||
endforeach()
|
||||
mark_as_advanced(PERPLEX_EXECUTABLE)
|
||||
|
||||
foreach(search ${_PERPLEX_SEARCHES})
|
||||
find_file(PERPLEX_TEMPLATE perplex_template.c ${${search}} PATH_SUFFIXES ${DATA_DIR} ${DATA_DIR}/perplex)
|
||||
endforeach()
|
||||
mark_as_advanced(PERPLEX_TEMPLATE)
|
||||
|
||||
if(PERPLEX_EXECUTABLE AND NOT PERPLEX_TEMPLATE)
|
||||
get_filename_component(perplex_path ${PERPLEX_EXECUTABLE} DIRECTORY)
|
||||
if(perplex_path)
|
||||
set(PERPLEX_TEMPLATE "")
|
||||
if(EXISTS ${perplex_path}/../share/perplex/perplex_template.c)
|
||||
get_filename_component(perplex_template_path "${perplex_path}/../share/perplex/perplex_template.c" ABSOLUTE)
|
||||
set(PERPLEX_TEMPLATE "${perplex_template_path}")
|
||||
endif(EXISTS ${perplex_path}/../share/perplex/perplex_template.c)
|
||||
if(EXISTS ${perplex_path}/../share/perplex_template.c AND NOT PERPLEX_TEMPLATE)
|
||||
get_filename_component(perplex_template_path "${perplex_path}/../share/perplex_template.c" ABSOLUTE)
|
||||
set(PERPLEX_TEMPLATE "${perplex_template_path}")
|
||||
endif(EXISTS ${perplex_path}/../share/perplex_template.c AND NOT PERPLEX_TEMPLATE)
|
||||
endif(perplex_path)
|
||||
if(EXISTS /usr/share/perplex/perplex_template.c AND NOT PERPLEX_TEMPLATE)
|
||||
set(PERPLEX_TEMPLATE "/usr/share/perplex/perplex_template.c")
|
||||
endif(EXISTS /usr/share/perplex/perplex_template.c AND NOT PERPLEX_TEMPLATE)
|
||||
endif(PERPLEX_EXECUTABLE AND NOT PERPLEX_TEMPLATE)
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(PERPLEX DEFAULT_MSG PERPLEX_EXECUTABLE PERPLEX_TEMPLATE)
|
||||
mark_as_advanced(PERPLEX_TEMPLATE)
|
||||
|
||||
# Defines two macros - PERPLEX_TARGET, which takes perplex inputs and
|
||||
# runs both perplex and re2c to generate C source code/headers, and
|
||||
# ADD_PERPLEX_LEMON_DEPENDENCY which is used to set up dependencies between
|
||||
# scanner and parser targets when necessary.
|
||||
#
|
||||
# #====================================================================
|
||||
# Example:
|
||||
#
|
||||
# find_package(LEMON)
|
||||
# find_package(RE2C)
|
||||
# find_package(PERPLEX)
|
||||
#
|
||||
# LEMON_TARGET(MyParser parser.y "${CMAKE_CURRENT_BINARY_DIR}/parser.cpp")
|
||||
# PERPLEX_TARGET(MyScanner scanner.re "${CMAKE_CURRENT_BINARY_DIR}/scanner.cpp" "${CMAKE_CURRENT_BINARY_DIR}/scanner_header.hpp")
|
||||
# ADD_PERPLEX_LEMON_DEPENDENCY(MyScanner MyParser)
|
||||
#
|
||||
# include_directories("${CMAKE_CURRENT_BINARY_DIR}")
|
||||
# add_executable(Foo
|
||||
# Foo.cc
|
||||
# ${LEMON_MyParser_OUTPUTS}
|
||||
# ${PERPLEX_MyScanner_OUTPUTS}
|
||||
# )
|
||||
# ====================================================================
|
||||
#
|
||||
#=============================================================================
|
||||
#
|
||||
# Originally based off of FindBISON.cmake from Kitware's CMake distribution
|
||||
#
|
||||
# Copyright (c) 2010-2023 United States Government as represented by
|
||||
# the U.S. Army Research Laboratory.
|
||||
# Copyright 2009 Kitware, Inc.
|
||||
# Copyright 2006 Tristan Carel
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# * Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# * The names of the authors may not be used to endorse or promote
|
||||
# products derived from this software without specific prior written
|
||||
# permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#=============================================================================
|
||||
|
||||
#============================================================
|
||||
# PERPLEX_TARGET (public macro)
|
||||
#============================================================
|
||||
|
||||
include(CMakeParseArguments)
|
||||
|
||||
if(NOT COMMAND PERPLEX_TARGET)
|
||||
macro(PERPLEX_TARGET Name Input)
|
||||
get_filename_component(IN_FILE_WE ${Input} NAME_WE)
|
||||
set(PVAR_PREFIX ${Name}_${IN_FILE_WE})
|
||||
|
||||
if (TARGET perplex_stage)
|
||||
set(DEP_TARGET perplex_stage)
|
||||
endif (TARGET perplex_stage)
|
||||
|
||||
if(${ARGC} GREATER 3)
|
||||
CMAKE_PARSE_ARGUMENTS(${PVAR_PREFIX} "" "TEMPLATE;OUT_SRC_FILE;OUT_HDR_FILE;WORKING_DIR" "" ${ARGN})
|
||||
endif(${ARGC} GREATER 3)
|
||||
|
||||
# Need a working directory
|
||||
if("${${PVAR_PREFIX}_WORKING_DIR}" STREQUAL "")
|
||||
set(${PVAR_PREFIX}_WORKING_DIR "${CMAKE_CURRENT_BINARY_DIR}/${PVAR_PREFIX}")
|
||||
endif("${${PVAR_PREFIX}_WORKING_DIR}" STREQUAL "")
|
||||
file(MAKE_DIRECTORY ${${PVAR_PREFIX}_WORKING_DIR})
|
||||
|
||||
# Set up intermediate and final output names
|
||||
|
||||
# Output source file
|
||||
if ("${${PVAR_PREFIX}_OUT_SRC_FILE}" STREQUAL "")
|
||||
set(${PVAR_PREFIX}_OUT_SRC_FILE ${${PVAR_PREFIX}_WORKING_DIR}/${IN_FILE_WE}.c)
|
||||
else ("${${PVAR_PREFIX}_OUT_SRC_FILE}" STREQUAL "")
|
||||
get_filename_component(specified_out_dir ${${PVAR_PREFIX}_OUT_SRC_FILE} DIRECTORY)
|
||||
if(NOT "${specified_out_dir}" STREQUAL "")
|
||||
message(FATAL_ERROR "\nFull path specified for OUT_SRC_FILE - should be filename only.\n")
|
||||
endif(NOT "${specified_out_dir}" STREQUAL "")
|
||||
set(${PVAR_PREFIX}_OUT_SRC_FILE ${${PVAR_PREFIX}_WORKING_DIR}/${${PVAR_PREFIX}_OUT_SRC_FILE})
|
||||
endif ("${${PVAR_PREFIX}_OUT_SRC_FILE}" STREQUAL "")
|
||||
|
||||
# Output header file
|
||||
if ("${${PVAR_PREFIX}_OUT_HDR_FILE}" STREQUAL "")
|
||||
set(${PVAR_PREFIX}_OUT_HDR_FILE ${${PVAR_PREFIX}_WORKING_DIR}/${IN_FILE_WE}.h)
|
||||
else ("${${PVAR_PREFIX}_OUT_HDR_FILE}" STREQUAL "")
|
||||
get_filename_component(specified_out_dir ${${PVAR_PREFIX}_OUT_HDR_FILE} DIRECTORY)
|
||||
if(NOT "${specified_out_dir}" STREQUAL "")
|
||||
message(FATAL_ERROR "\nFull path specified for OUT_HDR_FILE - should be filename only.\n")
|
||||
endif(NOT "${specified_out_dir}" STREQUAL "")
|
||||
set(${PVAR_PREFIX}_OUT_HDR_FILE ${${PVAR_PREFIX}_WORKING_DIR}/${${PVAR_PREFIX}_OUT_HDR_FILE})
|
||||
endif ("${${PVAR_PREFIX}_OUT_HDR_FILE}" STREQUAL "")
|
||||
|
||||
# input file
|
||||
get_filename_component(in_full ${Input} ABSOLUTE)
|
||||
if("${in_full}" STREQUAL "${Input}")
|
||||
set(perplex_in_file ${Input})
|
||||
else("${in_full}" STREQUAL "${Input}")
|
||||
set(perplex_in_file "${CMAKE_CURRENT_SOURCE_DIR}/${Input}")
|
||||
endif("${in_full}" STREQUAL "${Input}")
|
||||
|
||||
# Intermediate file
|
||||
set(re2c_src "${${PVAR_PREFIX}_WORKING_DIR}/${IN_FILE_WE}.re")
|
||||
|
||||
# Make sure we have a template
|
||||
if ("${${PVAR_PREFIX}_TEMPLATE}" STREQUAL "")
|
||||
if(PERPLEX_TEMPLATE)
|
||||
set(${PVAR_PREFIX}_TEMPLATE ${PERPLEX_TEMPLATE})
|
||||
else(PERPLEX_TEMPLATE)
|
||||
message(FATAL_ERROR "\nNo Perplex template file specified - please specify the file using the PERPLEX_TEMPLATE variable:\ncmake .. -DPERPLEX_TEMPLATE=/path/to/template_file.c\n")
|
||||
endif(PERPLEX_TEMPLATE)
|
||||
endif ("${${PVAR_PREFIX}_TEMPLATE}" STREQUAL "")
|
||||
|
||||
get_filename_component(IN_FILE ${Input} NAME)
|
||||
add_custom_command(
|
||||
OUTPUT ${re2c_src} ${${PVAR_PREFIX}_OUT_HDR_FILE} ${${PVAR_PREFIX}_WORKING_DIR}/${IN_FILE}
|
||||
COMMAND ${CMAKE_COMMAND} -E copy ${perplex_in_file} ${${PVAR_PREFIX}_WORKING_DIR}/${IN_FILE}
|
||||
COMMAND ${CMAKE_COMMAND} -E touch ${${PVAR_PREFIX}_WORKING_DIR}/${IN_FILE}_cpy.done
|
||||
COMMAND ${CMAKE_COMMAND} -E remove ${${PVAR_PREFIX}_WORKING_DIR}/${IN_FILE}_cpy.done
|
||||
COMMAND ${PERPLEX_EXECUTABLE} -c -o ${re2c_src} -i ${${PVAR_PREFIX}_OUT_HDR_FILE} -t ${${PVAR_PREFIX}_TEMPLATE} ${${PVAR_PREFIX}_WORKING_DIR}/${IN_FILE}
|
||||
DEPENDS ${Input} ${PERPLEX_EXECUTABLE_TARGET} ${RE2C_EXECUTABLE_TARGET} ${DEP_TARGET}
|
||||
WORKING_DIRECTORY ${${PVAR_PREFIX}_WORKING_DIR}
|
||||
COMMENT "[PERPLEX][${Name}] Generating re2c input with ${PERPLEX_EXECUTABLE}"
|
||||
)
|
||||
|
||||
if(NOT DEBUGGING_GENERATED_SOURCES)
|
||||
add_custom_command(
|
||||
OUTPUT ${${PVAR_PREFIX}_OUT_SRC_FILE}
|
||||
COMMAND ${RE2C_EXECUTABLE} --no-debug-info --no-generation-date -c -o ${${PVAR_PREFIX}_OUT_SRC_FILE} ${re2c_src}
|
||||
DEPENDS ${Input} ${re2c_src} ${${PVAR_PREFIX}_OUT_HDR_FILE} ${PERPLEX_EXECUTABLE_TARGET} ${RE2C_EXECUTABLE_TARGET} ${DEP_TARGET}
|
||||
WORKING_DIRECTORY ${${PVAR_PREFIX}_WORKING_DIR}
|
||||
COMMENT "[RE2C][${Name}] Building scanner with ${RE2C_EXECUTABLE}"
|
||||
)
|
||||
else(NOT DEBUGGING_GENERATED_SOURCES)
|
||||
add_custom_command(
|
||||
OUTPUT ${${PVAR_PREFIX}_OUT_SRC_FILE}
|
||||
COMMAND ${RE2C_EXECUTABLE} --no-generation-date -c -o ${${PVAR_PREFIX}_OUT_SRC_FILE} ${re2c_src}
|
||||
DEPENDS ${Input} ${re2c_src} ${${PVAR_PREFIX}_OUT_HDR_FILE} ${PERPLEX_EXECUTABLE_TARGET} ${RE2C_EXECUTABLE_TARGET} ${DEP_TARGET}
|
||||
WORKING_DIRECTORY ${${PVAR_PREFIX}_WORKING_DIR}
|
||||
COMMENT "[RE2C][${Name}] Building scanner with ${RE2C_EXECUTABLE}"
|
||||
)
|
||||
endif(NOT DEBUGGING_GENERATED_SOURCES)
|
||||
|
||||
set(PERPLEX_${Name}_DEFINED TRUE)
|
||||
set(PERPLEX_${Name}_SRC ${${PVAR_PREFIX}_OUT_SRC_FILE})
|
||||
set(PERPLEX_${Name}_HDR ${${PVAR_PREFIX}_OUT_HDR_FILE})
|
||||
set(PERPLEX_${Name}_INCLUDE_DIR ${${PVAR_PREFIX}_WORKING_DIR})
|
||||
endmacro(PERPLEX_TARGET)
|
||||
endif(NOT COMMAND PERPLEX_TARGET)
|
||||
|
||||
#============================================================
|
||||
# ADD_PERPLEX_LEMON_DEPENDENCY (public macro)
|
||||
#============================================================
|
||||
if(NOT COMMAND ADD_PERPLEX_LEMON_DEPENDENCY)
|
||||
macro(ADD_PERPLEX_LEMON_DEPENDENCY PERPLEXTarget LemonTarget)
|
||||
|
||||
if(NOT PERPLEX_${PERPLEXTarget}_SRC)
|
||||
message(SEND_ERROR "PERPLEX target `${PERPLEXTarget}' does not exists.")
|
||||
endif()
|
||||
|
||||
if(NOT LEMON_${LemonTarget}_HDR)
|
||||
message(SEND_ERROR "Lemon target `${LemonTarget}' does not exists.")
|
||||
endif()
|
||||
|
||||
set_source_files_properties(${PERPLEX_${PERPLEXTarget}_SRC}
|
||||
PROPERTIES OBJECT_DEPENDS ${LEMON_${LemonTarget}_HDR})
|
||||
endmacro(ADD_PERPLEX_LEMON_DEPENDENCY)
|
||||
endif(NOT COMMAND ADD_PERPLEX_LEMON_DEPENDENCY)
|
||||
|
||||
#============================================================
|
||||
# FindPERPLEX.cmake ends here
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
@@ -0,0 +1,190 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindPNG
|
||||
-------
|
||||
|
||||
Find libpng, the official reference library for the PNG image format.
|
||||
|
||||
Imported targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
.. versionadded:: 3.5
|
||||
|
||||
This module defines the following :prop_tgt:`IMPORTED` target:
|
||||
|
||||
``PNG::PNG``
|
||||
The libpng library, if found.
|
||||
|
||||
Result variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module will set the following variables in your project:
|
||||
|
||||
``PNG_INCLUDE_DIRS``
|
||||
where to find png.h, etc.
|
||||
``PNG_LIBRARIES``
|
||||
the libraries to link against to use PNG.
|
||||
``PNG_DEFINITIONS``
|
||||
You should add_definitions(${PNG_DEFINITIONS}) before compiling code
|
||||
that includes png library files.
|
||||
``PNG_FOUND``
|
||||
If false, do not try to use PNG.
|
||||
``PNG_VERSION_STRING``
|
||||
the version of the PNG library found (since CMake 2.8.8)
|
||||
|
||||
Obsolete variables
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
|
||||
The following variables may also be set, for backwards compatibility:
|
||||
|
||||
``PNG_LIBRARY``
|
||||
where to find the PNG library.
|
||||
``PNG_INCLUDE_DIR``
|
||||
where to find the PNG headers (same as PNG_INCLUDE_DIRS)
|
||||
|
||||
Since PNG depends on the ZLib compression library, none of the above
|
||||
will be defined unless ZLib can be found.
|
||||
#]=======================================================================]
|
||||
|
||||
if(PNG_FIND_QUIETLY)
|
||||
set(_FIND_ZLIB_ARG QUIET)
|
||||
endif()
|
||||
find_package(ZLIB ${_FIND_ZLIB_ARG})
|
||||
|
||||
if(ZLIB_FOUND)
|
||||
set(_PNG_SEARCHES)
|
||||
|
||||
# Search PNG_ROOT first if it is set.
|
||||
if(PNG_ROOT)
|
||||
set(_PNG_SEARCH_ROOT PATHS ${PNG_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _PNG_SEARCHES _PNG_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
list(APPEND PNG_NAMES png_brl libpng_brl png libpng)
|
||||
unset(PNG_NAMES_DEBUG)
|
||||
set(_PNG_VERSION_SUFFIXES 17 16 15 14 12)
|
||||
if (PNG_FIND_VERSION MATCHES "^([0-9]+)\\.([0-9]+)(\\..*)?$")
|
||||
set(_PNG_VERSION_SUFFIX_MIN "${CMAKE_MATCH_1}${CMAKE_MATCH_2}")
|
||||
if (PNG_FIND_VERSION_EXACT)
|
||||
set(_PNG_VERSION_SUFFIXES ${_PNG_VERSION_SUFFIX_MIN})
|
||||
else ()
|
||||
string(REGEX REPLACE
|
||||
"${_PNG_VERSION_SUFFIX_MIN}.*" "${_PNG_VERSION_SUFFIX_MIN}"
|
||||
_PNG_VERSION_SUFFIXES "${_PNG_VERSION_SUFFIXES}")
|
||||
endif ()
|
||||
unset(_PNG_VERSION_SUFFIX_MIN)
|
||||
endif ()
|
||||
foreach(v IN LISTS _PNG_VERSION_SUFFIXES)
|
||||
list(APPEND PNG_NAMES png_brl${v} libpng_brl${v} png${v} libpng${v} libpng${v}_static)
|
||||
list(APPEND PNG_NAMES_DEBUG png_brl${v}d libpng_brl${v}d png${v}d libpng${v}d libpng${v}_staticd)
|
||||
endforeach()
|
||||
unset(_PNG_VERSION_SUFFIXES)
|
||||
|
||||
# Try each search configuration.
|
||||
# For compatibility with versions prior to this multi-config search, honor
|
||||
# any PNG_LIBRARY that is already specified and skip the search.
|
||||
if(NOT PNG_LIBRARY)
|
||||
foreach(search ${_PNG_SEARCHES})
|
||||
find_path(PNG_PNG_INCLUDE_DIR png.h ${${search}} PATH_SUFFIXES include include/libpng)
|
||||
find_library(PNG_LIBRARY_RELEASE ${${search}} NAMES ${PNG_NAMES} NAMES_PER_DIR PATH_SUFFIXES lib)
|
||||
find_library(PNG_LIBRARY_DEBUG ${${search}} NAMES ${PNG_NAMES_DEBUG} NAMES_PER_DIR PATH_SUFFIXES lib)
|
||||
include(SelectLibraryConfigurations)
|
||||
select_library_configurations(PNG)
|
||||
mark_as_advanced(PNG_LIBRARY_RELEASE PNG_LIBRARY_DEBUG)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
mark_as_advanced(PNG_LIBRARY)
|
||||
mark_as_advanced(PNG_PNG_INCLUDE_DIR)
|
||||
|
||||
# If we still don't have PNG_LIBRARY, try without specifying search paths
|
||||
if(NOT PNG_LIBRARY)
|
||||
find_library(PNG_LIBRARY_RELEASE NAMES ${PNG_NAMES} NAMES_PER_DIR PATH_SUFFIXES lib)
|
||||
find_library(PNG_LIBRARY_DEBUG NAMES ${PNG_NAMES_DEBUG} NAMES_PER_DIR PATH_SUFFIXES lib)
|
||||
include(SelectLibraryConfigurations)
|
||||
select_library_configurations(PNG)
|
||||
mark_as_advanced(PNG_LIBRARY_RELEASE PNG_LIBRARY_DEBUG)
|
||||
endif()
|
||||
unset(PNG_NAMES)
|
||||
unset(PNG_NAMES_DEBUG)
|
||||
|
||||
# Set by select_library_configurations(), but we want the one from
|
||||
# find_package_handle_standard_args() below.
|
||||
unset(PNG_FOUND)
|
||||
|
||||
if (PNG_LIBRARY AND PNG_PNG_INCLUDE_DIR)
|
||||
# png.h includes zlib.h. Sigh.
|
||||
set(PNG_INCLUDE_DIRS ${PNG_PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} )
|
||||
set(PNG_INCLUDE_DIR ${PNG_INCLUDE_DIRS} ) # for backward compatibility
|
||||
set(PNG_LIBRARIES ${PNG_LIBRARY} ${ZLIB_LIBRARY})
|
||||
if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND
|
||||
("${PNG_LIBRARY}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$"))
|
||||
list(APPEND PNG_LIBRARIES m)
|
||||
endif()
|
||||
|
||||
if (CYGWIN)
|
||||
if(BUILD_SHARED_LIBS)
|
||||
# No need to define PNG_USE_DLL here, because it's default for Cygwin.
|
||||
else()
|
||||
set (PNG_DEFINITIONS -DPNG_STATIC)
|
||||
set(_PNG_COMPILE_DEFINITIONS PNG_STATIC)
|
||||
endif()
|
||||
endif ()
|
||||
|
||||
if(NOT TARGET PNG::PNG)
|
||||
add_library(PNG::PNG UNKNOWN IMPORTED)
|
||||
set_target_properties(PNG::PNG PROPERTIES
|
||||
INTERFACE_COMPILE_DEFINITIONS "${_PNG_COMPILE_DEFINITIONS}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${PNG_INCLUDE_DIRS}"
|
||||
INTERFACE_LINK_LIBRARIES ZLIB::ZLIB)
|
||||
if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND
|
||||
("${PNG_LIBRARY}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$"))
|
||||
set_property(TARGET PNG::PNG APPEND PROPERTY
|
||||
INTERFACE_LINK_LIBRARIES m)
|
||||
endif()
|
||||
|
||||
if(EXISTS "${PNG_LIBRARY}")
|
||||
set_target_properties(PNG::PNG PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
||||
IMPORTED_LOCATION "${PNG_LIBRARY}")
|
||||
endif()
|
||||
if(EXISTS "${PNG_LIBRARY_RELEASE}")
|
||||
set_property(TARGET PNG::PNG APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(PNG::PNG PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
|
||||
IMPORTED_LOCATION_RELEASE "${PNG_LIBRARY_RELEASE}")
|
||||
endif()
|
||||
if(EXISTS "${PNG_LIBRARY_DEBUG}")
|
||||
set_property(TARGET PNG::PNG APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS DEBUG)
|
||||
set_target_properties(PNG::PNG PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
|
||||
IMPORTED_LOCATION_DEBUG "${PNG_LIBRARY_DEBUG}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
unset(_PNG_COMPILE_DEFINITIONS)
|
||||
endif ()
|
||||
|
||||
if (PNG_PNG_INCLUDE_DIR AND EXISTS "${PNG_PNG_INCLUDE_DIR}/png.h")
|
||||
file(STRINGS "${PNG_PNG_INCLUDE_DIR}/png.h" png_version_str REGEX "^#define[ \t]+PNG_LIBPNG_VER_STRING[ \t]+\".+\"")
|
||||
|
||||
string(REGEX REPLACE "^#define[ \t]+PNG_LIBPNG_VER_STRING[ \t]+\"([^\"]+)\".*" "\\1" PNG_VERSION_STRING "${png_version_str}")
|
||||
unset(png_version_str)
|
||||
endif ()
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(PNG
|
||||
REQUIRED_VARS PNG_LIBRARY PNG_PNG_INCLUDE_DIR
|
||||
VERSION_VAR PNG_VERSION_STRING)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
@@ -0,0 +1,40 @@
|
||||
# Find Adaptive Multigrid Solver headers for Poisson Surface Reconstruction
|
||||
#
|
||||
# Once done this will define
|
||||
#
|
||||
# POISSONRECON_FOUND - system has Adaptive Multigrid Solver headers
|
||||
# POISSONRECON_INCLUDE_DIR - the Adaptive Multigrid Solver include directory
|
||||
#
|
||||
# and the following imported target:
|
||||
#
|
||||
# POISSONRECON::POISSONRECON- Provides include dir for headers
|
||||
|
||||
set(_POISSONRECON_SEARCHES)
|
||||
|
||||
# Search POISSONRECON_ROOT first if it is set.
|
||||
if(POISSONRECON_ROOT)
|
||||
set(_POISSONRECON_SEARCH_ROOT PATHS ${POISSONRECON_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _POISSONRECON_SEARCHES _POISSONRECON_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_POISSONRECON_SEARCHES})
|
||||
find_path(POISSONRECON_INCLUDE_DIR NAMES SPSR/Reconstructors.h ${${search}} PATH_SUFFIXES include)
|
||||
endforeach()
|
||||
|
||||
mark_as_advanced(POISSONRECON_INCLUDE_DIR)
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set ZLIB_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(POISSONRECON REQUIRED_VARS POISSONRECON_INCLUDE_DIR)
|
||||
|
||||
if(POISSONRECON_FOUND)
|
||||
set(POISSONRECON_INCLUDE_DIRS ${POISSONRECON_INCLUDE_DIR})
|
||||
|
||||
if(NOT TARGET POISSONRECON::POISSONRECON)
|
||||
add_library(POISSONRECON::POISSONRECON UNKNOWN IMPORTED)
|
||||
set_target_properties(POISSONRECON::POISSONRECON PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${POISSONRECON_INCLUDE_DIRS}")
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,80 @@
|
||||
###############################################################################
|
||||
# CMake module to search for PROJ library
|
||||
#
|
||||
# On success, the macro sets the following variables:
|
||||
# PROJ_FOUND = if the library found
|
||||
# PROJ_VERSION = version number of PROJ found
|
||||
# PROJ_LIBRARIES = full path to the library
|
||||
# PROJ_INCLUDE_DIR = where to find the library headers
|
||||
# Also defined, but not for general use are
|
||||
# PROJ_LIBRARY, where to find the PROJ library.
|
||||
#
|
||||
# Copyright (c) 2009 Mateusz Loskot <mateusz@loskot.net>
|
||||
#
|
||||
# Redistribution and use is allowed according to the terms of the BSD license.
|
||||
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
|
||||
#
|
||||
###############################################################################
|
||||
|
||||
set(_PROJ_SEARCHES)
|
||||
|
||||
# Search PROJ_ROOT first if it is set.
|
||||
if(PROJ_ROOT)
|
||||
set(_PROJ_SEARCH_ROOT PATHS ${PROJ_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _PROJ_SEARCHES _PROJ_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
# Normal search.
|
||||
set(_PROJ_x86 "(x86)")
|
||||
set(_PROJ_SEARCH_NORMAL
|
||||
PATHS
|
||||
"$ENV{OSGEO4W_HOME}"
|
||||
"C:/OSGeo4W"
|
||||
"$ENV{ProgramFiles}/proj"
|
||||
"$ENV{ProgramFiles${_PROJ_x86}}/proj"
|
||||
)
|
||||
unset(_PROJ_x86)
|
||||
list(APPEND _PROJ_SEARCHES _PROJ_SEARCH_NORMAL)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_PROJ_SEARCHES})
|
||||
find_path(PROJ_INCLUDE_DIR NAMES proj.h ${${search}} PATH_SUFFIXES include include/proj proj)
|
||||
endforeach()
|
||||
|
||||
if (PROJ_INCLUDE_DIR)
|
||||
# Extract version from proj.h (ex: 480)
|
||||
file(STRINGS ${PROJ_INCLUDE_DIR}/proj.h PJ_MAJORSTR REGEX "#define[ ]+PROJ_VERSION_MAJOR[ ]+[0-9]+")
|
||||
string(REGEX MATCH "[0-9]+" PJ_MAJOR ${PJ_MAJORSTR})
|
||||
file(STRINGS ${PROJ_INCLUDE_DIR}/proj.h PJ_MINORSTR REGEX "#define[ ]+PROJ_VERSION_MINOR[ ]+[0-9]+")
|
||||
string(REGEX MATCH "[0-9]+" PJ_MINOR ${PJ_MINORSTR})
|
||||
file(STRINGS ${PROJ_INCLUDE_DIR}/proj.h PJ_PATCHSTR REGEX "#define[ ]+PROJ_VERSION_PATCH[ ]+[0-9]+")
|
||||
string(REGEX MATCH "[0-9]+" PJ_PATCH ${PJ_PATCHSTR})
|
||||
set(PROJ_VERSION ${PJ_MAJOR}.${PJ_MINOR}.${PJ_PATCH})
|
||||
endif()
|
||||
|
||||
set(PROJ_NAMES ${PROJ_NAMES} proj proj_i)
|
||||
if(NOT PROJ_LIBRARY)
|
||||
foreach(search ${_PROJ_SEARCHES})
|
||||
find_library(PROJ_LIBRARY NAMES ${PROJ_NAMES} NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
|
||||
endforeach()
|
||||
endif()
|
||||
unset(PROJ_NAMES)
|
||||
|
||||
if(PROJ_LIBRARY)
|
||||
set(PROJ_LIBRARIES ${PROJ_LIBRARY})
|
||||
endif()
|
||||
|
||||
# Handle the QUIETLY and REQUIRED arguments and set PROJ_FOUND to TRUE
|
||||
# if all listed variables are TRUE
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(PROJ DEFAULT_MSG
|
||||
PROJ_LIBRARY
|
||||
PROJ_INCLUDE_DIR)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
|
||||
@@ -0,0 +1,167 @@
|
||||
# The module defines the following variables:
|
||||
# RE2C_EXECUTABLE - the path to the re2c executable
|
||||
#
|
||||
#=============================================================================
|
||||
|
||||
set(_RE2C_SEARCHES)
|
||||
|
||||
# Search RE2C_ROOT first if it is set.
|
||||
if(RE2C_ROOT)
|
||||
set(_RE2C_SEARCH_ROOT PATHS ${RE2C_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _RE2C_SEARCHES _RE2C_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
# Normal search.
|
||||
set(_RE2C_x86 "(x86)")
|
||||
set(_RE2C_SEARCH_NORMAL
|
||||
PATHS "$ENV{ProgramFiles}/re2c"
|
||||
"$ENV{ProgramFiles${_RE2C_x86}}/re2c")
|
||||
unset(_RE2C_x86)
|
||||
list(APPEND _RE2C_SEARCHES _RE2C_SEARCH_NORMAL)
|
||||
|
||||
set(RE2C_NAMES re2c)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_RE2C_SEARCHES})
|
||||
find_program(RE2C_EXECUTABLE re2c ${${search}} PATH_SUFFIXES bin)
|
||||
endforeach()
|
||||
|
||||
mark_as_advanced(RE2C_EXECUTABLE)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(RE2C DEFAULT_MSG RE2C_EXECUTABLE)
|
||||
|
||||
# Provide a macro to generate custom build rules:
|
||||
|
||||
# RE2C_TARGET(Name RE2CInput RE2COutput [COMPILE_FLAGS <string>])
|
||||
# which creates a custom command to generate the <RE2COutput> file from
|
||||
# the <RE2CInput> file. If COMPILE_FLAGS option is specified, the next
|
||||
# parameter is added to the re2c command line. Name is an alias used to
|
||||
# get details of this custom command.
|
||||
|
||||
# This module also defines a macro:
|
||||
# ADD_RE2C_LEMON_DEPENDENCY(RE2CTarget LemonTarget)
|
||||
# which adds the required dependency between a scanner and a parser
|
||||
# where <RE2CTarget> and <LemonTarget> are the first parameters of
|
||||
# respectively RE2C_TARGET and LEMON_TARGET macros.
|
||||
#
|
||||
# ====================================================================
|
||||
# Example:
|
||||
#
|
||||
# find_package(LEMON)
|
||||
# find_package(RE2C)
|
||||
#
|
||||
# LEMON_TARGET(MyParser parser.y "${CMAKE_CURRENT_BINARY_DIR}/parser.cpp")
|
||||
# RE2C_TARGET(MyScanner scanner.re "${CMAKE_CURRENT_BINARY_DIR}/scanner.cpp")
|
||||
# ADD_RE2C_LEMON_DEPENDENCY(MyScanner MyParser)
|
||||
#
|
||||
# include_directories("${CMAKE_CURRENT_BINARY_DIR}")
|
||||
# add_executable(Foo
|
||||
# Foo.cc
|
||||
# ${LEMON_MyParser_OUTPUTS}
|
||||
# ${RE2C_MyScanner_OUTPUTS}
|
||||
# )
|
||||
# ====================================================================
|
||||
#
|
||||
#=============================================================================
|
||||
# Copyright (c) 2010-2023 United States Government as represented by
|
||||
# the U.S. Army Research Laboratory.
|
||||
# Copyright 2009 Kitware, Inc.
|
||||
# Copyright 2006 Tristan Carel
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# * Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# * Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# * The names of the authors may not be used to endorse or promote
|
||||
# products derived from this software without specific prior written
|
||||
# permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
# LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
# A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
# HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
# LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#=============================================================================
|
||||
|
||||
#============================================================
|
||||
# RE2C_TARGET (public macro)
|
||||
#============================================================
|
||||
#
|
||||
# TODO - rework this macro to make use of CMakeParseArguments, see
|
||||
# http://www.cmake.org/pipermail/cmake/2012-July/051309.html
|
||||
if(NOT COMMAND RE2C_TARGET)
|
||||
macro(RE2C_TARGET Name Input Output)
|
||||
set(RE2C_TARGET_usage "RE2C_TARGET(<Name> <Input> <Output> [COMPILE_FLAGS <string>]")
|
||||
if(${ARGC} GREATER 3)
|
||||
if(${ARGC} EQUAL 5)
|
||||
if("${ARGV3}" STREQUAL "COMPILE_FLAGS")
|
||||
set(RE2C_EXECUTABLE_opts "${ARGV4}")
|
||||
SEPARATE_ARGUMENTS(RE2C_EXECUTABLE_opts)
|
||||
else()
|
||||
message(SEND_ERROR ${RE2C_TARGET_usage})
|
||||
endif()
|
||||
else()
|
||||
message(SEND_ERROR ${RE2C_TARGET_usage})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
add_custom_command(OUTPUT ${Output}
|
||||
COMMAND ${RE2C_EXECUTABLE}
|
||||
ARGS ${RE2C_EXECUTABLE_opts} -o${Output} ${Input}
|
||||
DEPENDS ${Input} ${RE2C_EXECUTABLE_TARGET}
|
||||
COMMENT "[RE2C][${Name}] Building scanner with ${RE2C_EXECUTABLE}"
|
||||
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
|
||||
|
||||
set(RE2C_${Name}_DEFINED TRUE)
|
||||
set(RE2C_${Name}_OUTPUTS ${Output})
|
||||
set(RE2C_${Name}_INPUT ${Input})
|
||||
set(RE2C_${Name}_COMPILE_FLAGS ${RE2C_EXECUTABLE_opts})
|
||||
set_property(DIRECTORY APPEND PROPERTY ADDITIONAL_MAKE_CLEAN_FILES "${Output}")
|
||||
endmacro(RE2C_TARGET)
|
||||
endif(NOT COMMAND RE2C_TARGET)
|
||||
#============================================================
|
||||
|
||||
#============================================================
|
||||
# ADD_RE2C_LEMON_DEPENDENCY (public macro)
|
||||
#============================================================
|
||||
#
|
||||
if(NOT COMMAND ADD_RE2C_LEMON_DEPENDENCY)
|
||||
macro(ADD_RE2C_LEMON_DEPENDENCY RE2CTarget LemonTarget)
|
||||
|
||||
if(NOT RE2C_${RE2CTarget}_OUTPUTS)
|
||||
message(SEND_ERROR "RE2C target `${RE2CTarget}' does not exists.")
|
||||
endif()
|
||||
|
||||
if(NOT LEMON_${LemonTarget}_HDR)
|
||||
message(SEND_ERROR "Lemon target `${LemonTarget}' does not exists.")
|
||||
endif()
|
||||
|
||||
set_source_files_properties(${RE2C_${RE2CTarget}_OUTPUTS}
|
||||
PROPERTIES OBJECT_DEPENDS ${LEMON_${LemonTarget}_HDR})
|
||||
endmacro(ADD_RE2C_LEMON_DEPENDENCY)
|
||||
endif(NOT COMMAND ADD_RE2C_LEMON_DEPENDENCY)
|
||||
#============================================================
|
||||
|
||||
# RE2C_Util.cmake ends here
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
@@ -0,0 +1,84 @@
|
||||
#.rst:
|
||||
# FindREGEX
|
||||
# --------
|
||||
#
|
||||
# Find the native REGEX includes and library.
|
||||
#
|
||||
# IMPORTED Targets
|
||||
# ^^^^^^^^^^^^^^^^
|
||||
#
|
||||
# This module defines :prop_tgt:`IMPORTED` target ``REGEX::REGEX``, if
|
||||
# REGEX has been found.
|
||||
#
|
||||
# Result Variables
|
||||
# ^^^^^^^^^^^^^^^^
|
||||
#
|
||||
# This module defines the following variables:
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# REGEX_INCLUDE_DIRS - where to find regex.h, etc.
|
||||
# REGEX_LIBRARIES - List of libraries when using regex.
|
||||
# REGEX_FOUND - True if regex found.
|
||||
#
|
||||
#
|
||||
# Hints
|
||||
# ^^^^^
|
||||
#
|
||||
# A user may set ``REGEX_ROOT`` to a regex installation root to tell this
|
||||
# module where to look.
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2001-2011 Kitware, Inc.
|
||||
#
|
||||
# Distributed under the OSI-approved BSD License (the "License");
|
||||
# see accompanying file Copyright.txt for details.
|
||||
#
|
||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the License for more information.
|
||||
#=============================================================================
|
||||
# (To distribute this file outside of CMake, substitute the full
|
||||
# License text for the above reference.)
|
||||
|
||||
set(_REGEX_SEARCHES)
|
||||
|
||||
# Search REGEX_ROOT first if it is set.
|
||||
if(REGEX_ROOT)
|
||||
set(_REGEX_SEARCH_ROOT PATHS ${REGEX_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _REGEX_SEARCHES _REGEX_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
# Normal search.
|
||||
set(_REGEX_SEARCH_NORMAL
|
||||
PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Regex;InstallPath]"
|
||||
"$ENV{PROGRAMFILES}/regex"
|
||||
)
|
||||
list(APPEND _REGEX_SEARCHES _REGEX_SEARCH_NORMAL)
|
||||
|
||||
set(REGEX_NAMES regex_brl regex_brld regex regexd regexd1)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_REGEX_SEARCHES})
|
||||
find_path(REGEX_INCLUDE_DIR NAMES regex.h ${${search}} PATH_SUFFIXES include)
|
||||
find_library(REGEX_LIBRARY NAMES ${REGEX_NAMES} ${${search}} PATH_SUFFIXES lib)
|
||||
endforeach()
|
||||
|
||||
mark_as_advanced(REGEX_LIBRARY REGEX_INCLUDE_DIR)
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set REGEX_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(REGEX REQUIRED_VARS REGEX_LIBRARY REGEX_INCLUDE_DIR)
|
||||
|
||||
if(REGEX_FOUND)
|
||||
set(REGEX_INCLUDE_DIRS ${REGEX_INCLUDE_DIR})
|
||||
set(REGEX_LIBRARIES ${REGEX_LIBRARY})
|
||||
|
||||
if(NOT TARGET REGEX::REGEX)
|
||||
add_library(REGEX::REGEX UNKNOWN IMPORTED)
|
||||
set_target_properties(REGEX::REGEX PROPERTIES
|
||||
IMPORTED_LOCATION "${REGEX_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${REGEX_INCLUDE_DIRS}")
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,81 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindSQLite3
|
||||
-----------
|
||||
|
||||
.. versionadded:: 3.14
|
||||
|
||||
Find the SQLite libraries, v3
|
||||
|
||||
IMPORTED targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines the following :prop_tgt:`IMPORTED` target:
|
||||
|
||||
``SQLite::SQLite3``
|
||||
|
||||
Result variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module will set the following variables if found:
|
||||
|
||||
``SQLite3_INCLUDE_DIRS``
|
||||
where to find sqlite3.h, etc.
|
||||
``SQLite3_LIBRARIES``
|
||||
the libraries to link against to use SQLite3.
|
||||
``SQLite3_EXECNAME``
|
||||
the sqlite3 program name.
|
||||
``SQLite3_VERSION``
|
||||
version of the SQLite3 library found
|
||||
``SQLite3_FOUND``
|
||||
TRUE if found
|
||||
|
||||
#]=======================================================================]
|
||||
|
||||
set(_SQLite3_SEARCHES)
|
||||
|
||||
# Search SQLite3_ROOT first if it is set.
|
||||
if(SQLite3_ROOT)
|
||||
set(_SQLite3_SEARCH_ROOT PATHS ${SQLite3_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _SQLite3_SEARCHES _SQLite3_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
set(SQLite3_NAMES sqlite3 sqlite libsqlite3 libsqlite)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_SQLite3_SEARCHES})
|
||||
find_path(SQLite3_INCLUDE_DIR NAMES sqlite3.h ${${search}} PATH_SUFFIXES include)
|
||||
find_library(SQLite3_LIBRARY NAMES ${SQLite3_NAMES} ${${search}} PATH_SUFFIXES lib)
|
||||
find_program(SQLite3_EXECNAME NAMES sqlite3 sqlite ${${search}} PATH_SUFFIXES bin)
|
||||
endforeach()
|
||||
|
||||
mark_as_advanced(SQLite3_LIBRARY SQLite3_INCLUDE_DIR)
|
||||
|
||||
# Extract version information from the header file
|
||||
if(SQLite3_INCLUDE_DIR)
|
||||
file(STRINGS ${SQLite3_INCLUDE_DIR}/sqlite3.h _ver_line
|
||||
REGEX "^#define SQLITE_VERSION *\"[0-9]+\\.[0-9]+\\.[0-9]+\""
|
||||
LIMIT_COUNT 1)
|
||||
string(REGEX MATCH "[0-9]+\\.[0-9]+\\.[0-9]+"
|
||||
SQLite3_VERSION "${_ver_line}")
|
||||
unset(_ver_line)
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(SQLite3
|
||||
REQUIRED_VARS SQLite3_INCLUDE_DIR SQLite3_LIBRARY
|
||||
VERSION_VAR SQLite3_VERSION)
|
||||
|
||||
# Create the imported target
|
||||
if(SQLite3_FOUND)
|
||||
set(SQLite3_INCLUDE_DIRS ${SQLite3_INCLUDE_DIR})
|
||||
set(SQLite3_LIBRARIES ${SQLite3_LIBRARY})
|
||||
if(NOT TARGET SQLite::SQLite3)
|
||||
add_library(SQLite::SQLite3 UNKNOWN IMPORTED)
|
||||
set_target_properties(SQLite::SQLite3 PROPERTIES
|
||||
IMPORTED_LOCATION "${SQLite3_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${SQLite3_INCLUDE_DIR}")
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,160 @@
|
||||
# F I N D S T E P C O D E . C M A K E
|
||||
# BRL-CAD
|
||||
#
|
||||
# Copyright (c) 2013-2023 United States Government as represented by
|
||||
# the U.S. Army Research Laboratory.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
#
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
#
|
||||
# 2. Redistributions in binary form must reproduce the above
|
||||
# copyright notice, this list of conditions and the following
|
||||
# disclaimer in the documentation and/or other materials provided
|
||||
# with the distribution.
|
||||
#
|
||||
# 3. The name of the author may not be used to endorse or promote
|
||||
# products derived from this software without specific prior written
|
||||
# permission.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS
|
||||
# OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
||||
# ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
|
||||
# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
|
||||
# GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
|
||||
# NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
#
|
||||
###
|
||||
# - Find STEPCODE
|
||||
#
|
||||
# The following variables are set:
|
||||
#
|
||||
# STEPCODE_INCLUDE_DIRS - where to find stepcode headers
|
||||
# STEPCODE_LIBRARIES - List of libraries when using stepcode.
|
||||
# STEPCODE_FOUND - True if stepcode found.
|
||||
|
||||
|
||||
# A user may set ``STEPCODE_ROOT`` to a stepcode installation root to tell this
|
||||
# module where to look.
|
||||
# =============================================================================
|
||||
|
||||
# Check that each of the libraries has an expected header,
|
||||
# as well as the toplevel defined headers. (TODO - are the
|
||||
# latter needed beyond the stepcode build itself? Trim this
|
||||
# to the minimum actually needed...)
|
||||
set(STEPCODE_HDRS
|
||||
cldai/sdaiObject.h
|
||||
cleditor/STEPfile.h
|
||||
clstepcore/sdai.h
|
||||
clutils/gennodearray.h
|
||||
exppp/exppp.h
|
||||
express/express.h
|
||||
config.h
|
||||
)
|
||||
|
||||
set(STEPCODE_LIBS
|
||||
express
|
||||
exppp
|
||||
stepcore
|
||||
stepeditor
|
||||
stepdai
|
||||
steputils
|
||||
)
|
||||
|
||||
set(STEPCODE_EXEC
|
||||
exp2cxx
|
||||
exppp
|
||||
)
|
||||
|
||||
# Search STEPCODE_ROOT first if it is set.
|
||||
set(_STEPCODE_SEARCHES)
|
||||
if(STEPCODE_ROOT)
|
||||
set(_STEPCODE_SEARCH_ROOT PATHS ${STEPCODE_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _STEPCODE_SEARCHES _STEPCODE_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_STEPCODE_SEARCHES})
|
||||
find_path(STEPCODE_DAI_DIR NAMES sdaiObject.h ${${search}} PATH_SUFFIXES include include/stepcode/cldai)
|
||||
find_path(STEPCODE_EDITOR_DIR NAMES STEPfile.h ${${search}} PATH_SUFFIXES include include/stepcode/cleditor)
|
||||
find_path(STEPCODE_STEPCORE_DIR NAMES sdai.h ${${search}} PATH_SUFFIXES include include/stepcode/clstepcore)
|
||||
find_path(STEPCODE_UTILS_DIR NAMES gennodearray.h ${${search}} PATH_SUFFIXES include include/stepcode/clutils)
|
||||
find_path(STEPCODE_EXPPP_DIR NAMES exppp.h ${${search}} PATH_SUFFIXES include include/stepcode/exppp)
|
||||
find_path(STEPCODE_EXPRESS_DIR NAMES express.h ${${search}} PATH_SUFFIXES include include/stepcode/express)
|
||||
find_path(STEPCODE_INCLUDE_DIR NAMES config.h ${${search}} PATH_SUFFIXES include include/stepcode)
|
||||
#TODO - should be an all-or-nothing for the set...
|
||||
endforeach()
|
||||
|
||||
# Allow STEPCODE_LIBRARY to be set manually, as the location of the netpbm library
|
||||
foreach(search ${_STEPCODE_SEARCHES})
|
||||
find_library(STEPCODE_EXPRESS_LIBRARY NAMES express NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
|
||||
if (WIN32)
|
||||
find_library(STEPCODE_EXPPP_LIBRARY NAMES libexppp NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
|
||||
else (WIN32)
|
||||
find_library(STEPCODE_EXPPP_LIBRARY NAMES exppp NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
|
||||
endif (WIN32)
|
||||
find_library(STEPCODE_CORE_LIBRARY NAMES stepcore NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
|
||||
find_library(STEPCODE_EDITOR_LIBRARY NAMES stepeditor NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
|
||||
find_library(STEPCODE_DAI_LIBRARY NAMES stepdai NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
|
||||
find_library(STEPCODE_UTILS_LIBRARY NAMES steputils NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
|
||||
#TODO - should be an all-or-nothing for the set...
|
||||
endforeach()
|
||||
|
||||
# Allow STEPCODE_LIBRARY to be set manually, as the location of the netpbm library
|
||||
foreach(search ${_STEPCODE_SEARCHES})
|
||||
find_program(EXP2CXX_EXECUTABLE exp2cxx ${${search}} PATH_SUFFIXES bin)
|
||||
find_program(EXPPP_EXECUTABLE exppp ${${search}} PATH_SUFFIXES bin)
|
||||
#TODO - should be an all-or-nothing for the set...
|
||||
endforeach()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(STEPCODE DEFAULT_MSG
|
||||
STEPCODE_DAI_DIR
|
||||
STEPCODE_EDITOR_DIR
|
||||
STEPCODE_STEPCORE_DIR
|
||||
STEPCODE_UTILS_DIR
|
||||
STEPCODE_EXPPP_DIR
|
||||
STEPCODE_EXPRESS_DIR
|
||||
STEPCODE_INCLUDE_DIR
|
||||
STEPCODE_EXPRESS_LIBRARY
|
||||
STEPCODE_EXPPP_LIBRARY
|
||||
STEPCODE_CORE_LIBRARY
|
||||
STEPCODE_EDITOR_LIBRARY
|
||||
STEPCODE_DAI_LIBRARY
|
||||
STEPCODE_UTILS_LIBRARY
|
||||
EXP2CXX_EXECUTABLE
|
||||
EXPPP_EXECUTABLE
|
||||
)
|
||||
|
||||
if (STEPCODE_FOUND)
|
||||
set(STEPCODE_INCLUDE_DIRS
|
||||
${STEPCODE_INCLUDE_DIR}
|
||||
${STEPCODE_STEPCORE_DIR}
|
||||
${STEPCODE_EDITOR_DIR}
|
||||
${STEPCODE_UTILS_DIR}
|
||||
${STEPCODE_DAI_DIR}
|
||||
)
|
||||
set(STEPCODE_LIBRARIES
|
||||
${STEPCODE_EXPRESS_LIBRARY}
|
||||
${STEPCODE_EXPPP_LIBRARY}
|
||||
${STEPCODE_CORE_LIBRARY}
|
||||
${STEPCODE_EDITOR_LIBRARY}
|
||||
${STEPCODE_DAI_LIBRARY}
|
||||
${STEPCODE_UTILS_LIBRARY}
|
||||
)
|
||||
endif()
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
@@ -0,0 +1,496 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindTCL
|
||||
-------
|
||||
|
||||
This module finds if Tcl is installed and determines where the include
|
||||
files and libraries are. It also determines what the name of the
|
||||
library is. This code sets the following variables:
|
||||
|
||||
::
|
||||
|
||||
TCL_FOUND = Tcl was found
|
||||
TCLSH_FOUND = TRUE if tclsh has been found
|
||||
TCL_LIBRARY = path to Tcl library (tcl tcl80)
|
||||
TCL_INCLUDE_PATH = path to where tcl.h can be found
|
||||
TCL_TCLSH = path to tclsh binary (tcl tcl80)
|
||||
|
||||
|
||||
|
||||
If TCL_ENABLE_TK is set, the following are also set:
|
||||
|
||||
::
|
||||
|
||||
TK_FOUND = Tk was found
|
||||
TCLTK_FOUND = Tcl and Tk were found
|
||||
TK_LIBRARY = path to Tk library (tk tk80 etc)
|
||||
TK_INCLUDE_PATH = path to where tk.h can be found
|
||||
TK_WISH = full path to the wish executable
|
||||
TCL_STUB_LIBRARY = path to Tcl stub library
|
||||
TK_STUB_LIBRARY = path to Tk stub library
|
||||
TTK_STUB_LIBRARY = path to ttk stub library
|
||||
|
||||
#]=======================================================================]
|
||||
|
||||
include(CMakeFindFrameworks)
|
||||
|
||||
set(_TCL_SEARCHES)
|
||||
|
||||
# Search TCL_ROOT first if it is set.
|
||||
if(TCL_ROOT)
|
||||
set(_TCL_SEARCH_ROOT PATHS ${TCL_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _TCL_SEARCHES _TCL_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
if(WIN32)
|
||||
get_filename_component(
|
||||
ActiveTcl_CurrentVersion
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl;CurrentVersion]"
|
||||
NAME)
|
||||
set(TCLTK_POSSIBLE_BIN_PATHS ${TCLTK_POSSIBLE_BIN_PATHS}
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.4;Root]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.3;Root]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.2;Root]/bin"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/bin"
|
||||
)
|
||||
|
||||
get_filename_component(
|
||||
ActiveTcl_CurrentVersion
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl;CurrentVersion]"
|
||||
NAME)
|
||||
set(TCLTK_POSSIBLE_LIB_PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/lib"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/lib"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/lib"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.4;Root]/lib"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.3;Root]/lib"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.2;Root]/lib"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/lib"
|
||||
"$ENV{ProgramFiles}/Tcl/Lib"
|
||||
"C:/Program Files/Tcl/lib"
|
||||
"C:/Tcl/lib"
|
||||
)
|
||||
|
||||
set(TCLTK_POSSIBLE_INCLUDE_PATHS ${TCLTK_POSSIBLE_INCLUDE_PATHS}
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\ActiveState\\ActiveTcl\\${ActiveTcl_CurrentVersion}]/include"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.6;Root]/include"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.5;Root]/include"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.4;Root]/include"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.3;Root]/include"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.2;Root]/include"
|
||||
"[HKEY_LOCAL_MACHINE\\SOFTWARE\\Scriptics\\Tcl\\8.0;Root]/include"
|
||||
"$ENV{ProgramFiles}/Tcl/include"
|
||||
"C:/Program Files/Tcl/include"
|
||||
"C:/Tcl/include"
|
||||
)
|
||||
endif()
|
||||
|
||||
set(TCL_TCLSH_NAMES
|
||||
tclsh
|
||||
tclsh${TCL_LIBRARY_VERSION} tclsh${TK_LIBRARY_VERSION} tclsh${TK_WISH_VERSION}
|
||||
tclsh87 tclsh8.7
|
||||
tclsh86 tclsh8.6
|
||||
tclsh85 tclsh8.5
|
||||
tclsh84 tclsh8.4
|
||||
tclsh83 tclsh8.3
|
||||
tclsh82 tclsh8.2
|
||||
tclsh80 tclsh8.0
|
||||
)
|
||||
if(CYGWIN)
|
||||
set(TCL_TCLSH_NAMES ${TCL_TCLSH_NAMES} cygtclsh83 cygtclsh80)
|
||||
endif(CYGWIN)
|
||||
|
||||
foreach(search ${_TCL_SEARCHES})
|
||||
find_program(TCL_TCLSH NAMES ${TCL_TCLSH_NAMES} ${${search}} PATH_SUFFIXES bin)
|
||||
endforeach()
|
||||
if (NOT TCL_TCLSH)
|
||||
find_program(TCL_TCLSH NAMES ${TCL_TCLSH_NAMES} HINTS ${TCLTK_POSSIBLE_BIN_PATHS})
|
||||
endif (NOT TCL_TCLSH)
|
||||
|
||||
if (TCL_ENABLE_TK)
|
||||
set(TK_WISH_NAMES
|
||||
wish
|
||||
wish${TCL_LIBRARY_VERSION} wish${TK_LIBRARY_VERSION} wish${TCL_TCLSH_VERSION}
|
||||
wish86 wish8.6
|
||||
wish85 wish8.5
|
||||
wish84 wish8.4
|
||||
wish83 wish8.3
|
||||
wish82 wish8.2
|
||||
wish80 wish8.0
|
||||
)
|
||||
|
||||
if(CYGWIN)
|
||||
set(TK_WISH_NAMES ${TK_WISH_NAMES} cygwish80 )
|
||||
endif()
|
||||
|
||||
foreach(search ${_TCL_SEARCHES})
|
||||
find_program(TK_WISH NAMES ${TK_WISH_NAMES} ${${search}} PATH_SUFFIXES bin)
|
||||
endforeach()
|
||||
if (NOT TK_WISH)
|
||||
find_program(TK_WISH NAMES ${TK_WISH_NAMES} HINTS ${TCLTK_POSSIBLE_BIN_PATHS})
|
||||
endif (NOT TK_WISH)
|
||||
endif (TCL_ENABLE_TK)
|
||||
|
||||
if(TCLSH_VERSION_STRING)
|
||||
set(TCL_TCLSH_VERSION "${TCLSH_VERSION_STRING}")
|
||||
else()
|
||||
get_filename_component(TCL_TCLSH_PATH "${TCL_TCLSH}" PATH)
|
||||
get_filename_component(TCL_TCLSH_PATH_PARENT "${TCL_TCLSH_PATH}" PATH)
|
||||
string(REGEX REPLACE
|
||||
"^.*tclsh([0-9]\\.*[0-9]).*$" "\\1" TCL_TCLSH_VERSION "${TCL_TCLSH}")
|
||||
endif()
|
||||
|
||||
set(TCLTK_POSSIBLE_LIB_PATHS
|
||||
"${TCL_INCLUDE_PATH_PARENT}/lib"
|
||||
"${TCL_LIBRARY_PATH}"
|
||||
"${TCL_TCLSH_PATH_PARENT}/lib"
|
||||
)
|
||||
if (TCL_ENABLE_TK)
|
||||
set(TCLTK_POSSIBLE_LIB_PATHS
|
||||
${TCLTK_POSSIBLE_LIB_PATHS}
|
||||
"${TK_INCLUDE_PATH_PARENT}/lib"
|
||||
"${TK_LIBRARY_PATH}"
|
||||
"${TK_WISH_PATH_PARENT}/lib"
|
||||
)
|
||||
endif (TCL_ENABLE_TK)
|
||||
|
||||
set(TCLTK_POSSIBLE_LIB_PATH_SUFFIXES
|
||||
lib
|
||||
lib/tcl
|
||||
lib/tcl/tcl8.7
|
||||
lib/tcl/tcl8.6
|
||||
lib/tcl/tcl8.5
|
||||
lib/tcl/tcl8.4
|
||||
)
|
||||
if (TCL_ENABLE_TK)
|
||||
set(TCLTK_POSSIBLE_LIB_PATH_SUFFIXES
|
||||
${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
|
||||
lib/tcl/tk8.7
|
||||
lib/tcl/tk8.6
|
||||
lib/tcl/tk8.5
|
||||
lib/tcl/tk8.4
|
||||
)
|
||||
endif (TCL_ENABLE_TK)
|
||||
|
||||
set(TCL_POSSIBLE_LIB_NAMES
|
||||
tcl
|
||||
tcl${TCL_LIBRARY_VERSION} tcl${TCL_TCLSH_VERSION} tcl${TK_WISH_VERSION}
|
||||
tcl87 tcl8.7 tcl87t tcl8.7t
|
||||
tcl86 tcl8.6 tcl86t tcl8.6t
|
||||
tcl85 tcl8.5
|
||||
tcl84 tcl8.4
|
||||
tcl83 tcl8.3
|
||||
tcl82 tcl8.2
|
||||
tcl80 tcl8.0
|
||||
)
|
||||
|
||||
if(NOT TCL_LIBRARY)
|
||||
foreach(search ${_TCL_SEARCHES})
|
||||
find_library(TCL_LIBRARY
|
||||
NAMES ${TCL_POSSIBLE_LIB_NAMES}
|
||||
NAMES_PER_DIR ${${search}}
|
||||
PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES})
|
||||
endforeach()
|
||||
endif()
|
||||
if(NOT TCL_LIBRARY)
|
||||
find_library(TCL_LIBRARY
|
||||
NAMES ${TCL_POSSIBLE_LIB_NAMES}
|
||||
PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
|
||||
PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
|
||||
)
|
||||
endif(NOT TCL_LIBRARY)
|
||||
|
||||
set(TCLSTUB_POSSIBLE_LIB_NAMES
|
||||
tclstub
|
||||
tclstub${TK_LIBRARY_VERSION} tclstub${TCL_TCLSH_VERSION} tclstub${TK_WISH_VERSION}
|
||||
tclstub87 tclstub8.7
|
||||
tclstub86 tclstub8.6
|
||||
tclstub85 tclstub8.5
|
||||
tclstub84 tclstub8.4
|
||||
tclstub83 tclstub8.3
|
||||
tclstub82 tclstub8.2
|
||||
tclstub80 tclstub8.0
|
||||
)
|
||||
if(NOT TCL_STUB_LIBRARY)
|
||||
foreach(search ${_TCL_SEARCHES})
|
||||
find_library(TCL_STUB_LIBRARY
|
||||
NAMES ${TCLSTUB_POSSIBLE_LIB_NAMES}
|
||||
NAMES_PER_DIR ${${search}}
|
||||
PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
|
||||
)
|
||||
endforeach()
|
||||
endif()
|
||||
if(NOT TCL_STUB_LIBRARY)
|
||||
find_library(TCL_STUB_LIBRARY
|
||||
NAMES ${TCLSTUB_POSSIBLE_LIB_NAMES}
|
||||
PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
|
||||
)
|
||||
endif()
|
||||
|
||||
if (TCL_ENABLE_TK)
|
||||
set(TK_POSSIBLE_LIB_NAMES
|
||||
tk
|
||||
tk${TK_LIBRARY_VERSION} tk${TCL_TCLSH_VERSION} tk${TK_WISH_VERSION}
|
||||
tk87 tk8.7 tk87t tk8.7t
|
||||
tk86 tk8.6 tk86t tk8.6t
|
||||
tk85 tk8.5
|
||||
tk84 tk8.4
|
||||
tk83 tk8.3
|
||||
tk82 tk8.2
|
||||
tk80 tk8.0
|
||||
)
|
||||
|
||||
if(NOT TK_LIBRARY)
|
||||
foreach(search ${_TCL_SEARCHES})
|
||||
find_library(TK_LIBRARY
|
||||
NAMES ${TK_POSSIBLE_LIB_NAMES}
|
||||
NAMES_PER_DIR ${${search}}
|
||||
PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
|
||||
)
|
||||
endforeach()
|
||||
endif()
|
||||
if(NOT TK_LIBRARY)
|
||||
find_library(TK_LIBRARY
|
||||
NAMES ${TK_POSSIBLE_LIB_NAMES}
|
||||
PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
|
||||
PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
|
||||
)
|
||||
endif(NOT TK_LIBRARY)
|
||||
|
||||
set(TK_STUB_POSSIBLE_LIB_NAMES
|
||||
tkstub
|
||||
tkstub${TCL_LIBRARY_VERSION} tkstub${TCL_TCLSH_VERSION} tkstub${TK_WISH_VERSION}
|
||||
tkstub87 tkstub8.7
|
||||
tkstub86 tkstub8.6
|
||||
tkstub85 tkstub8.5
|
||||
tkstub84 tkstub8.4
|
||||
tkstub83 tkstub8.3
|
||||
tkstub82 tkstub8.2
|
||||
tkstub80 tkstub8.0
|
||||
)
|
||||
|
||||
if(NOT TK_STUB_LIBRARY)
|
||||
foreach(search ${_TCL_SEARCHES})
|
||||
find_library(TK_STUB_LIBRARY
|
||||
NAMES ${TK_STUB_POSSIBLE_LIB_NAMES}
|
||||
NAMES_PER_DIR ${${search}}
|
||||
PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
|
||||
)
|
||||
endforeach()
|
||||
endif()
|
||||
if(NOT TK_STUB_LIBRARY)
|
||||
find_library(TK_STUB_LIBRARY
|
||||
NAMES ${TK_STUB_POSSIBLE_LIB_NAMES}
|
||||
PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
|
||||
)
|
||||
endif()
|
||||
|
||||
set(TTK_STUB_POSSIBLE_LIB_NAMES
|
||||
ttkstub
|
||||
ttkstub${TCL_LIBRARY_VERSION} ttkstub${TCL_TCLSH_VERSION} ttkstub${TK_WISH_VERSION}
|
||||
ttkstub88 ttkstub8.8
|
||||
ttkstub87 ttkstub8.7
|
||||
ttkstub86 ttkstub8.6
|
||||
ttkstub85 ttkstub8.5
|
||||
)
|
||||
|
||||
if(NOT TTK_STUB_LIBRARY)
|
||||
foreach(search ${_TCL_SEARCHES})
|
||||
find_library(TTK_STUB_LIBRARY
|
||||
NAMES ${TTK_STUB_POSSIBLE_LIB_NAMES}
|
||||
NAMES_PER_DIR ${${search}}
|
||||
PATH_SUFFIXES ${TCLTK_POSSIBLE_LIB_PATH_SUFFIXES}
|
||||
)
|
||||
endforeach()
|
||||
endif()
|
||||
if(NOT TTK_STUB_LIBRARY)
|
||||
find_library(TTK_STUB_LIBRARY
|
||||
NAMES ${TTK_STUB_POSSIBLE_LIB_NAMES}
|
||||
PATHS ${TCLTK_POSSIBLE_LIB_PATHS}
|
||||
)
|
||||
endif()
|
||||
endif (TCL_ENABLE_TK)
|
||||
|
||||
CMAKE_FIND_FRAMEWORKS(Tcl)
|
||||
if (TCL_ENABLE_TK)
|
||||
CMAKE_FIND_FRAMEWORKS(Tk)
|
||||
endif (TCL_ENABLE_TK)
|
||||
|
||||
set(TCL_FRAMEWORK_INCLUDES)
|
||||
if(Tcl_FRAMEWORKS)
|
||||
if(NOT TCL_INCLUDE_PATH)
|
||||
foreach(dir ${Tcl_FRAMEWORKS})
|
||||
set(TCL_FRAMEWORK_INCLUDES ${TCL_FRAMEWORK_INCLUDES} ${dir}/Headers)
|
||||
endforeach()
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (TCL_ENABLE_TK)
|
||||
set(TK_FRAMEWORK_INCLUDES)
|
||||
if(Tk_FRAMEWORKS)
|
||||
if(NOT TK_INCLUDE_PATH)
|
||||
foreach(dir ${Tk_FRAMEWORKS})
|
||||
set(TK_FRAMEWORK_INCLUDES ${TK_FRAMEWORK_INCLUDES}
|
||||
${dir}/Headers ${dir}/PrivateHeaders)
|
||||
endforeach()
|
||||
endif()
|
||||
endif()
|
||||
endif (TCL_ENABLE_TK)
|
||||
|
||||
set(TCLTK_POSSIBLE_INCLUDE_PATHS
|
||||
"${TCL_LIBRARY_PATH_PARENT}/include"
|
||||
"${TCL_INCLUDE_PATH}"
|
||||
${TCL_FRAMEWORK_INCLUDES}
|
||||
"${TCL_TCLSH_PATH_PARENT}/include"
|
||||
)
|
||||
if (TCL_ENABLE_TK)
|
||||
set(TCLTK_POSSIBLE_INCLUDE_PATHS
|
||||
${TCLTK_POSSIBLE_INCLUDE_PATHS}
|
||||
"${TCL_LIBRARY_PATH_PARENT}/include"
|
||||
"${TCL_INCLUDE_PATH}"
|
||||
${TCL_FRAMEWORK_INCLUDES}
|
||||
"${TCL_TCLSH_PATH_PARENT}/include"
|
||||
)
|
||||
endif (TCL_ENABLE_TK)
|
||||
|
||||
set(TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES
|
||||
include
|
||||
include/tcl${TCL_LIBRARY_VERSION}
|
||||
include/tcl8.7
|
||||
include/tcl8.6
|
||||
include/tcl8.5
|
||||
include/tcl8.4
|
||||
include/tcl8.3
|
||||
include/tcl8.2
|
||||
include/tcl8.0
|
||||
)
|
||||
|
||||
if (TCL_ENABLE_TK)
|
||||
set(TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES
|
||||
${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
|
||||
include/tcl${TK_LIBRARY_VERSION}
|
||||
include/tk8.7
|
||||
include/tk8.6
|
||||
include/tk8.5
|
||||
include/tk8.4
|
||||
)
|
||||
endif (TCL_ENABLE_TK)
|
||||
|
||||
|
||||
foreach(search ${_TCL_SEARCHES})
|
||||
find_path(TCL_INCLUDE_PATH
|
||||
NAMES tcl.h ${${search}}
|
||||
PATH_SUFFIXES ${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
|
||||
)
|
||||
endforeach()
|
||||
if (NOT TCL_INCLUDE_PATH)
|
||||
find_path(TCL_INCLUDE_PATH
|
||||
NAMES tcl.h
|
||||
HINTS ${TCLTK_POSSIBLE_INCLUDE_PATHS}
|
||||
PATH_SUFFIXES ${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
|
||||
)
|
||||
endif()
|
||||
|
||||
if (TCL_ENABLE_TK)
|
||||
|
||||
foreach(search ${_TCL_SEARCHES})
|
||||
find_path(TK_INCLUDE_PATH
|
||||
NAMES tk.h ${${search}}
|
||||
PATH_SUFFIXES ${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
|
||||
)
|
||||
endforeach()
|
||||
if (NOT TK_INCLUDE_PATH)
|
||||
find_path(TK_INCLUDE_PATH
|
||||
NAMES tk.h
|
||||
HINTS ${TCLTK_POSSIBLE_INCLUDE_PATHS}
|
||||
PATH_SUFFIXES ${TCLTK_POSSIBLE_INCLUDE_PATH_SUFFIXES}
|
||||
)
|
||||
endif()
|
||||
|
||||
# IFF we have TCL_TK_SYSTEM_GRAPHICS set and have a system TK_WISH, check that the
|
||||
# windowing system matches the specified type
|
||||
if (NOT "${TCL_TK_SYSTEM_GRAPHICS}" STREQUAL "" AND TK_WISH AND NOT TARGET "${TK_WISH}")
|
||||
set(tkwin_script "
|
||||
set filename \"${CMAKE_BINARY_DIR}/CMakeTmp/TK_WINDOWINGSYSTEM\"
|
||||
set fileId [open $filename \"w\"]
|
||||
set windowingsystem [tk windowingsystem]
|
||||
puts $fileId $windowingsystem
|
||||
close $fileId
|
||||
exit
|
||||
")
|
||||
set(tkwin_scriptfile "${CMAKE_BINARY_DIR}/CMakeTmp/tk_windowingsystem.tcl")
|
||||
set(WSYS "wm-NOTFOUND")
|
||||
file(WRITE ${tkwin_scriptfile} ${tkwin_script})
|
||||
execute_process(COMMAND ${TK_WISH} ${tkwin_scriptfile} OUTPUT_VARIABLE EXECOUTPUT)
|
||||
if (EXISTS "${CMAKE_BINARY_DIR}/CMakeTmp/TK_WINDOWINGSYSTEM")
|
||||
file(READ "${CMAKE_BINARY_DIR}/CMakeTmp/TK_WINDOWINGSYSTEM" readresultvar)
|
||||
string(REGEX REPLACE "\n" "" WSYS "${readresultvar}")
|
||||
endif (EXISTS "${CMAKE_BINARY_DIR}/CMakeTmp/TK_WINDOWINGSYSTEM")
|
||||
|
||||
# If we have no information about the windowing system or it does not match
|
||||
# a specified system, the find_package detection has failed
|
||||
if (NOT "${WSYS}" STREQUAL "${TCL_TK_SYSTEM_GRAPHICS}")
|
||||
unset(TCL_LIBRARY CACHE)
|
||||
unset(TCL_STUB_LIBRARY CACHE)
|
||||
unset(TK_LIBRARY CACHE)
|
||||
unset(TK_STUB_LIBRARY CACHE)
|
||||
unset(TCL_FOUND CACHE)
|
||||
unset(TK_FOUND CACHE)
|
||||
unset(TCLTK_FOUND CACHE)
|
||||
unset(TCLSH_FOUND CACHE)
|
||||
unset(TCL_LIBRARY CACHE)
|
||||
unset(TCL_INCLUDE_PATH CACHE)
|
||||
unset(TCL_TCLSH CACHE)
|
||||
unset(TK_LIBRARY CACHE)
|
||||
unset(TK_INCLUDE_PATH CACHE)
|
||||
unset(TK_WISH CACHE)
|
||||
unset(TCL_STUB_LIBRARY CACHE)
|
||||
unset(TK_STUB_LIBRARY CACHE)
|
||||
unset(TTK_STUB_LIBRARY CACHE)
|
||||
endif (NOT "${WSYS}" STREQUAL "${TCL_TK_SYSTEM_GRAPHICS}")
|
||||
endif (NOT "${TCL_TK_SYSTEM_GRAPHICS}" STREQUAL "" AND TK_WISH AND NOT TARGET "${TK_WISH}")
|
||||
endif (TCL_ENABLE_TK)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(TCL
|
||||
REQUIRED_VARS TCL_LIBRARY TCL_STUB_LIBRARY TCL_INCLUDE_PATH TCL_TCLSH
|
||||
VERSION_VAR TCLSH_VERSION_STRING)
|
||||
|
||||
if (TCL_ENABLE_TK)
|
||||
set(FPHSA_NAME_MISMATCHED 1)
|
||||
set(TCLTK_FIND_REQUIRED ${TCL_FIND_REQUIRED})
|
||||
set(TCLTK_FIND_QUIETLY ${TCL_FIND_QUIETLY})
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(TCLTK
|
||||
REQUIRED_VARS TCL_LIBRARY TCL_STUB_LIBRARY TCL_INCLUDE_PATH TK_LIBRARY TK_STUB_LIBRARY TK_INCLUDE_PATH)
|
||||
set(TK_FIND_REQUIRED ${TCL_FIND_REQUIRED})
|
||||
set(TK_FIND_QUIETLY ${TCL_FIND_QUIETLY})
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(TK
|
||||
REQUIRED_VARS TK_LIBRARY TK_STUB_LIBRARY TK_INCLUDE_PATH TK_WISH)
|
||||
unset(FPHSA_NAME_MISMATCHED)
|
||||
endif (TCL_ENABLE_TK)
|
||||
|
||||
mark_as_advanced(
|
||||
TCL_INCLUDE_PATH
|
||||
TCL_LIBRARY
|
||||
TCL_STUB_LIBRARY
|
||||
TCL_TCLSH
|
||||
TK_INCLUDE_PATH
|
||||
TK_LIBRARY
|
||||
TK_STUB_LIBRARY
|
||||
TK_WISH
|
||||
TTK_STUB_LIBRARY
|
||||
)
|
||||
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
@@ -0,0 +1,102 @@
|
||||
# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
|
||||
#[=======================================================================[.rst:
|
||||
FindUTAHRLE
|
||||
--------
|
||||
|
||||
Find the native UTAHRLE includes and library.
|
||||
|
||||
IMPORTED Targets
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines :prop_tgt:`IMPORTED` target ``UTAHRLE::UTAHRLE``, if
|
||||
UTAHRLE has been found.
|
||||
|
||||
Result Variables
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
This module defines the following variables:
|
||||
|
||||
::
|
||||
|
||||
UTAHRLE_INCLUDE_DIRS - where to find pam.h, etc.
|
||||
UTAHRLE_LIBRARIES - List of libraries when using utahrle.
|
||||
UTAHRLE_FOUND - True if utahrle found.
|
||||
|
||||
Hints
|
||||
^^^^^
|
||||
|
||||
A user may set ``UTAHRLE_ROOT`` to a utahrle installation root to tell this
|
||||
module where to look.
|
||||
#]=======================================================================]
|
||||
|
||||
set(_UTAHRLE_SEARCHES)
|
||||
|
||||
# Search UTAHRLE_ROOT first if it is set.
|
||||
if(UTAHRLE_ROOT)
|
||||
set(_UTAHRLE_SEARCH_ROOT PATHS ${UTAHRLE_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _UTAHRLE_SEARCHES _UTAHRLE_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
# Normal search.
|
||||
set(_UTAHRLE_x86 "(x86)")
|
||||
set(_UTAHRLE_SEARCH_NORMAL
|
||||
PATHS "$ENV{ProgramFiles}/utahrle"
|
||||
"$ENV{ProgramFiles${_UTAHRLE_x86}}/utahrle")
|
||||
unset(_UTAHRLE_x86)
|
||||
list(APPEND _UTAHRLE_SEARCHES _UTAHRLE_SEARCH_NORMAL)
|
||||
|
||||
set(UTAHRLE_NAMES utahrle)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_UTAHRLE_SEARCHES})
|
||||
find_path(UTAHRLE_INCLUDE_DIR NAMES rle.h ${${search}} PATH_SUFFIXES include include/utahrle)
|
||||
endforeach()
|
||||
|
||||
# Allow UTAHRLE_LIBRARY to be set manually, as the location of the utahrle library
|
||||
if(NOT UTAHRLE_LIBRARY)
|
||||
foreach(search ${_UTAHRLE_SEARCHES})
|
||||
find_library(UTAHRLE_LIBRARY NAMES ${UTAHRLE_NAMES} NAMES_PER_DIR ${${search}} PATH_SUFFIXES lib)
|
||||
endforeach()
|
||||
endif()
|
||||
|
||||
unset(UTAHRLE_NAMES)
|
||||
|
||||
mark_as_advanced(UTAHRLE_INCLUDE_DIR)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(UTAHRLE REQUIRED_VARS UTAHRLE_LIBRARY UTAHRLE_INCLUDE_DIR)
|
||||
|
||||
if(UTAHRLE_FOUND)
|
||||
set(UTAHRLE_INCLUDE_DIRS ${UTAHRLE_INCLUDE_DIR})
|
||||
|
||||
if(NOT UTAHRLE_LIBRARIES)
|
||||
set(UTAHRLE_LIBRARIES ${UTAHRLE_LIBRARY})
|
||||
endif()
|
||||
|
||||
if(NOT TARGET UTAHRLE::UTAHRLE)
|
||||
add_library(UTAHRLE::UTAHRLE UNKNOWN IMPORTED)
|
||||
set_target_properties(UTAHRLE::UTAHRLE PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${UTAHRLE_INCLUDE_DIRS}")
|
||||
|
||||
if(UTAHRLE_LIBRARY_RELEASE)
|
||||
set_property(TARGET UTAHRLE::UTAHRLE APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS RELEASE)
|
||||
set_target_properties(UTAHRLE::UTAHRLE PROPERTIES
|
||||
IMPORTED_LOCATION_RELEASE "${UTAHRLE_LIBRARY_RELEASE}")
|
||||
endif()
|
||||
|
||||
if(UTAHRLE_LIBRARY_DEBUG)
|
||||
set_property(TARGET UTAHRLE::UTAHRLE APPEND PROPERTY
|
||||
IMPORTED_CONFIGURATIONS DEBUG)
|
||||
set_target_properties(UTAHRLE::UTAHRLE PROPERTIES
|
||||
IMPORTED_LOCATION_DEBUG "${UTAHRLE_LIBRARY_DEBUG}")
|
||||
endif()
|
||||
|
||||
if(NOT UTAHRLE_LIBRARY_RELEASE AND NOT UTAHRLE_LIBRARY_DEBUG)
|
||||
set_property(TARGET UTAHRLE::UTAHRLE APPEND PROPERTY
|
||||
IMPORTED_LOCATION "${UTAHRLE_LIBRARY}")
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,123 @@
|
||||
#.rst:
|
||||
# FindZLIB
|
||||
# --------
|
||||
#
|
||||
# Find the native ZLIB includes and library.
|
||||
#
|
||||
# IMPORTED Targets
|
||||
# ^^^^^^^^^^^^^^^^
|
||||
#
|
||||
# This module defines :prop_tgt:`IMPORTED` target ``ZLIB::ZLIB``, if
|
||||
# ZLIB has been found.
|
||||
#
|
||||
# Result Variables
|
||||
# ^^^^^^^^^^^^^^^^
|
||||
#
|
||||
# This module defines the following variables:
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# ZLIB_INCLUDE_DIRS - where to find zlib.h, etc.
|
||||
# ZLIB_LIBRARIES - List of libraries when using zlib.
|
||||
# ZLIB_FOUND - True if zlib found.
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# ZLIB_VERSION_STRING - The version of zlib found (x.y.z)
|
||||
# ZLIB_VERSION_MAJOR - The major version of zlib
|
||||
# ZLIB_VERSION_MINOR - The minor version of zlib
|
||||
# ZLIB_VERSION_PATCH - The patch version of zlib
|
||||
# ZLIB_VERSION_TWEAK - The tweak version of zlib
|
||||
#
|
||||
# Backward Compatibility
|
||||
# ^^^^^^^^^^^^^^^^^^^^^^
|
||||
#
|
||||
# The following variable are provided for backward compatibility
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# ZLIB_MAJOR_VERSION - The major version of zlib
|
||||
# ZLIB_MINOR_VERSION - The minor version of zlib
|
||||
# ZLIB_PATCH_VERSION - The patch version of zlib
|
||||
#
|
||||
# Hints
|
||||
# ^^^^^
|
||||
#
|
||||
# A user may set ``ZLIB_ROOT`` to a zlib installation root to tell this
|
||||
# module where to look.
|
||||
|
||||
#=============================================================================
|
||||
# Copyright 2001-2011 Kitware, Inc.
|
||||
#
|
||||
# Distributed under the OSI-approved BSD License (the "License");
|
||||
# see accompanying file Copyright.txt for details.
|
||||
#
|
||||
# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
# See the License for more information.
|
||||
#=============================================================================
|
||||
# (To distribute this file outside of CMake, substitute the full
|
||||
# License text for the above reference.)
|
||||
|
||||
set(_ZLIB_SEARCHES)
|
||||
|
||||
# Search ZLIB_ROOT first if it is set.
|
||||
if(ZLIB_ROOT)
|
||||
set(_ZLIB_SEARCH_ROOT PATHS ${ZLIB_ROOT} NO_DEFAULT_PATH)
|
||||
list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_ROOT)
|
||||
endif()
|
||||
|
||||
# Normal search.
|
||||
set(_ZLIB_SEARCH_NORMAL
|
||||
PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]"
|
||||
"$ENV{PROGRAMFILES}/zlib"
|
||||
)
|
||||
list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_NORMAL)
|
||||
|
||||
set(ZLIB_NAMES z_brl z zlib zdll zlib1 zlibd zlibd1)
|
||||
|
||||
# Try each search configuration.
|
||||
foreach(search ${_ZLIB_SEARCHES})
|
||||
find_path(ZLIB_INCLUDE_DIR NAMES zlib.h ${${search}} PATH_SUFFIXES include)
|
||||
find_library(ZLIB_LIBRARY NAMES ${ZLIB_NAMES} ${${search}} PATH_SUFFIXES lib)
|
||||
endforeach()
|
||||
|
||||
mark_as_advanced(ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
|
||||
|
||||
if(ZLIB_INCLUDE_DIR AND EXISTS "${ZLIB_INCLUDE_DIR}/zlib.h")
|
||||
file(STRINGS "${ZLIB_INCLUDE_DIR}/zlib.h" ZLIB_H REGEX "^#define ZLIB_VERSION \"[^\"]*\"$")
|
||||
|
||||
string(REGEX REPLACE "^.*ZLIB_VERSION \"([0-9]+).*$" "\\1" ZLIB_VERSION_MAJOR "${ZLIB_H}")
|
||||
string(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_MINOR "${ZLIB_H}")
|
||||
string(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_PATCH "${ZLIB_H}")
|
||||
set(ZLIB_VERSION_STRING "${ZLIB_VERSION_MAJOR}.${ZLIB_VERSION_MINOR}.${ZLIB_VERSION_PATCH}")
|
||||
|
||||
# only append a TWEAK version if it exists:
|
||||
set(ZLIB_VERSION_TWEAK "")
|
||||
if( "${ZLIB_H}" MATCHES "ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+)")
|
||||
set(ZLIB_VERSION_TWEAK "${CMAKE_MATCH_1}")
|
||||
set(ZLIB_VERSION_STRING "${ZLIB_VERSION_STRING}.${ZLIB_VERSION_TWEAK}")
|
||||
endif()
|
||||
|
||||
set(ZLIB_MAJOR_VERSION "${ZLIB_VERSION_MAJOR}")
|
||||
set(ZLIB_MINOR_VERSION "${ZLIB_VERSION_MINOR}")
|
||||
set(ZLIB_PATCH_VERSION "${ZLIB_VERSION_PATCH}")
|
||||
endif()
|
||||
|
||||
# handle the QUIETLY and REQUIRED arguments and set ZLIB_FOUND to TRUE if
|
||||
# all listed variables are TRUE
|
||||
include(FindPackageHandleStandardArgs)
|
||||
FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZLIB REQUIRED_VARS ZLIB_LIBRARY ZLIB_INCLUDE_DIR
|
||||
VERSION_VAR ZLIB_VERSION_STRING)
|
||||
|
||||
if(ZLIB_FOUND)
|
||||
set(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
|
||||
set(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
|
||||
|
||||
if(NOT TARGET ZLIB::ZLIB)
|
||||
add_library(ZLIB::ZLIB UNKNOWN IMPORTED)
|
||||
set_target_properties(ZLIB::ZLIB PROPERTIES
|
||||
IMPORTED_LOCATION "${ZLIB_LIBRARY}"
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${ZLIB_INCLUDE_DIRS}")
|
||||
endif()
|
||||
endif()
|
||||
@@ -0,0 +1,149 @@
|
||||
cmake_policy(SET CMP0007 NEW)
|
||||
|
||||
if (NOT EXISTS "@SRC_DIR@")
|
||||
message(FATAL_ERROR "@SRC_DIR@ not found on filesystem")
|
||||
endif (NOT EXISTS "@SRC_DIR@")
|
||||
file(GLOB_RECURSE SRC_FILES LIST_DIRECTORIES false RELATIVE "@SRC_DIR@" "@SRC_DIR@/*")
|
||||
list(FILTER SRC_FILES EXCLUDE REGEX ".*[.]git.*")
|
||||
list(SORT SRC_FILES)
|
||||
|
||||
# If we have a prior existing source directory state, read it in
|
||||
set(prev_md5)
|
||||
set(prev_files)
|
||||
if (EXISTS "@MD5_SUMMARY@")
|
||||
# Read each line in to make two lists - files and MD5 hashes. First entry
|
||||
# is MD5. Will use file list to get the index to use to get the MD5 hash
|
||||
# for each file in subsequent lookups
|
||||
file(STRINGS "@MD5_SUMMARY@" hash_strings)
|
||||
foreach(hs ${hash_strings})
|
||||
set(hlist ${hs})
|
||||
list(POP_FRONT hlist pmd5)
|
||||
list(APPEND prev_md5 "${pmd5}")
|
||||
list(APPEND prev_files "${hlist}")
|
||||
endforeach(hs ${hash_strings})
|
||||
file(REMOVE "@MD5_SUMMARY@")
|
||||
endif (EXISTS "@MD5_SUMMARY@")
|
||||
|
||||
message("prev_files: ${prev_files}")
|
||||
|
||||
# Generate an MD5 summary for the current source dir state
|
||||
set(curr_md5)
|
||||
set(curr_files)
|
||||
foreach(S ${SRC_FILES})
|
||||
file(MD5 "@SRC_DIR@/${S}" md5_hash)
|
||||
file(APPEND "@MD5_SUMMARY@" "${md5_hash};${S}\n")
|
||||
list(APPEND curr_md5 "${md5_hash}")
|
||||
list(APPEND curr_files "${S}")
|
||||
endforeach(S ${SRC_FILES})
|
||||
|
||||
message("curr_files: ${curr_files}")
|
||||
|
||||
# Check if we have any changed files. If so, update the src copy
|
||||
set(updated_files)
|
||||
foreach(S ${SRC_FILES})
|
||||
list(FIND prev_files "${S}" prev_ind)
|
||||
if ("${prev_ind}" EQUAL -1)
|
||||
# New file
|
||||
message("New file: ${S}")
|
||||
list(APPEND update_files ${S})
|
||||
continue()
|
||||
endif ("${prev_ind}" EQUAL -1)
|
||||
# Check file contents
|
||||
list(GET prev_md5 ${prev_ind} pmd5)
|
||||
list(FIND curr_files "${S}" curr_ind)
|
||||
list(GET curr_md5 ${curr_ind} cmd5)
|
||||
if (NOT "${pmd5}" STREQUAL "${cmd5}")
|
||||
list(APPEND update_files ${S})
|
||||
message("File changed: ${S}")
|
||||
endif (NOT "${pmd5}" STREQUAL "${cmd5}")
|
||||
endforeach(S ${SRC_FILES})
|
||||
# Copy any changed files from the src directory to the build directory
|
||||
foreach(CF ${updated_files})
|
||||
execute_process(COMMAND "@CMAKE_COMMAND@" -E copy "@SRC_DIR@/${CF}" "@BLD_DIR@/${CF}")
|
||||
endforeach(S ${SRC_FILES})
|
||||
|
||||
|
||||
# If we have previously applied patches, read in that information. We will need:
|
||||
#
|
||||
# md5 of previously applied patch file. If that's changed, we need to remove all
|
||||
# added files from the previous patch and re-apply
|
||||
#
|
||||
# list of files changed by the patch. If any of the updated files were also
|
||||
# patch targets, we need to reset all files involved with the patch and
|
||||
# re-apply. To that end, we also need a separate list of files added by the
|
||||
# patch so we can remove them. (Unless a file created by patch is already part
|
||||
# of the update list - in that case leave the file from the update - the patch
|
||||
# will need to be corrected.)
|
||||
set(patch_changed_files)
|
||||
if (EXISTS "@PATCH_CHANGED_SUMMARY@")
|
||||
file(STRINGS "@PATCH_CHANGED_SUMMARY@" patch_changed_files)
|
||||
file(REMOVE "@PATCH_CHANGED_SUMMARY@")
|
||||
endif (EXISTS "@PATCH_CHANGED_SUMMARY@")
|
||||
set(patch_added_files)
|
||||
if (EXISTS "@PATCH_ADDED_SUMMARY@")
|
||||
file(STRINGS "@PATCH_ADDED_SUMMARY@" patch_added_files)
|
||||
file(REMOVE "@PATCH_ADDED_SUMMARY@")
|
||||
endif (EXISTS "@PATCH_ADDED_SUMMARY@")
|
||||
|
||||
# First check for changed files
|
||||
set(changed_patch FALSE)
|
||||
foreach(pcf ${patch_changed_files})
|
||||
list(FIND updated_files "${pcf}" pcf_ind)
|
||||
if (NOT "${pcf_ind}" EQUAL -1)
|
||||
set(changed_patch TRUE)
|
||||
endif (NOT "${pcf_ind}" EQUAL -1)
|
||||
endforeach(pcf ${patch_changed_files})
|
||||
|
||||
|
||||
|
||||
|
||||
# Remove files present only in the build dir
|
||||
# TODO - this needs to be more nuanced - files may be added by patching, and we don't
|
||||
# want to remove those
|
||||
if (NOT EXISTS "@BLD_DIR@")
|
||||
message(FATAL_ERROR "@BLD_DIR@ not found on filesystem")
|
||||
endif (NOT EXISTS "@BLD_DIR@")
|
||||
file(GLOB_RECURSE BLD_FILES LIST_DIRECTORIES false RELATIVE "@BLD_DIR@" "@BLD_DIR@/*")
|
||||
list(FILTER BLD_FILES EXCLUDE REGEX ".*[.]git.*")
|
||||
set(BLD_ONLY ${BLD_FILES})
|
||||
list(REMOVE_ITEM BLD_ONLY ${SRC_FILES})
|
||||
foreach(B ${BLD_ONLY})
|
||||
message("Removing: ${B}")
|
||||
file(REMOVE "@BLD_DIR@/${B}")
|
||||
endforeach(B ${BLD_ONLY})
|
||||
|
||||
# If any previously patched files are present in the updated
|
||||
# files list (or if we have never applied patches before)
|
||||
# we need to proceed with patching.
|
||||
set(prev_files)
|
||||
if (EXISTS "@PATCH_SUMMARY@")
|
||||
# Read each line in to make two lists - files and MD5 hashes. First entry
|
||||
# is MD5. Will use file list to get the index to use to get the MD5 hash
|
||||
# for each file in subsequent lookups
|
||||
file(STRINGS "@MD5_SUMMARY@" hash_strings)
|
||||
foreach(hs ${hash_strings})
|
||||
set(hlist ${hs})
|
||||
list(POP_FRONT hlist pmd5)
|
||||
list(APPEND prev_md5 "${pmd5}")
|
||||
list(APPEND prev_files "${hlist}")
|
||||
endforeach(hs ${hash_strings})
|
||||
file(REMOVE "@MD5_SUMMARY@")
|
||||
endif (EXISTS "@MD5_SUMMARY@")
|
||||
|
||||
|
||||
|
||||
|
||||
# Copy any changed files from the src directory to the build directory
|
||||
foreach(S ${SRC_FILES})
|
||||
execute_process(COMMAND "@CMAKE_COMMAND@" -E compare_files "@SRC_DIR@/${S}" "@BLD_DIR@/${S}" RESULT_VARIABLE FILES_DIFFER)
|
||||
if (FILES_DIFFER)
|
||||
execute_process(COMMAND "@CMAKE_COMMAND@" -E copy "@SRC_DIR@/${S}" "@BLD_DIR@/${S}")
|
||||
set(HAVE_DIFFERENCE TRUE)
|
||||
endif (FILES_DIFFER)
|
||||
endforeach(S ${SRC_FILES})
|
||||
|
||||
set(PFILES @PATCH_FILES@)
|
||||
foreach(PF ${PFILES})
|
||||
# Ignore whitespace, don't attempt reverse patching
|
||||
execute_process(COMMAND "@PATCH_EXECUTABLE@" -E -p1 --ignore-whitespace -N -i "@CMAKE_CURRENT_SOURCE_DIR@/${PF}")
|
||||
endforeach(PF ${PFILES})
|
||||
+498
-775
File diff suppressed because it is too large
Load Diff
+51
@@ -0,0 +1,51 @@
|
||||
# bext - Installation
|
||||
|
||||
For building all of the projects present in this repository, you will need Git, CMake, a modern C/C++ compiler and some support libraries installed on your operating system. If you want flex and bison you'll also need a working Autotools stack on non-Windows platforms.
|
||||
|
||||
# Ubuntu Linux
|
||||
|
||||
Basic tools needed for all configurations:
|
||||
```
|
||||
sudo apt install git cmake gcc g++
|
||||
```
|
||||
|
||||
For Tk you'll need basic X11 libraries:
|
||||
```
|
||||
sudo apt install libfontconfig1-dev libfreetype6-dev xserver-xorg-dev libx11-dev libxi-dev libxext-dev
|
||||
```
|
||||
|
||||
For Qt, Appleseed and OSPRay you'll need Python
|
||||
```
|
||||
sudo apt install libpython3-dev
|
||||
```
|
||||
|
||||
For Qt you'll also need (in addition to the above) the XCB packages (see https://doc.qt.io/qt-6/linux-requirements.html)
|
||||
```
|
||||
sudo apt install libx11-xcb-dev libxfixes-dev libxrender-dev libxcb1-dev libxcb-cursor-dev libxcb-glx0-dev libxcb-keysyms1-dev libxcb-image0-dev libxcb-shm0-dev libxcb-icccm4-dev libxcb-sync-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-randr0-dev libxcb-render-util0-dev libxcb-util-dev libxcb-xinerama0-dev libxcb-xkb-dev libxkbcommon-dev libxkbcommon-x11-dev
|
||||
```
|
||||
|
||||
For OSPRay you'll need m4, and for the ISPC compiler used by OSPRay you'll need the gcc multilib packages:
|
||||
```
|
||||
sudo apt install m4 gcc-multilib g++-multilib
|
||||
```
|
||||
|
||||
If you don't want to build flex and bison for the OSPRay/Appleseed stacks you can also install those:
|
||||
```
|
||||
sudo apt install flex bison
|
||||
```
|
||||
|
||||
If you do want to build them, install the Autotools stack:
|
||||
```
|
||||
sudo apt-get install autotools-dev autoconf
|
||||
```
|
||||
|
||||
# Windows
|
||||
|
||||
Windows will need some variety of Python installed for Qt/Appleseed/OSPRay.
|
||||
|
||||
# OSX
|
||||
|
||||
XCode
|
||||
|
||||
What else? - TODO
|
||||
|
||||
@@ -1,17 +0,0 @@
|
||||
Condition of use and distribution are the same as zlib:
|
||||
|
||||
This software is provided 'as-is', without any express or implied
|
||||
warranty. In no event will the authors be held liable for any damages
|
||||
arising from the use of this software.
|
||||
|
||||
Permission is granted to anyone to use this software for any purpose,
|
||||
including commercial applications, and to alter it and redistribute it
|
||||
freely, subject to the following restrictions:
|
||||
|
||||
1. The origin of this software must not be misrepresented; you must not
|
||||
claim that you wrote the original software. If you use this software
|
||||
in a product, an acknowledgement in the product documentation would be
|
||||
appreciated but is not required.
|
||||
2. Altered source versions must be plainly marked as such, and must not be
|
||||
misrepresented as being the original software.
|
||||
3. This notice may not be removed or altered from any source distribution.
|
||||
@@ -1,37 +0,0 @@
|
||||
Pod::Spec.new do |s|
|
||||
s.name = 'Minizip'
|
||||
s.version = '2.8.5'
|
||||
s.license = 'zlib'
|
||||
s.summary = 'Minizip contrib in zlib with the latest bug fixes and advanced features'
|
||||
s.description = <<-DESC
|
||||
Minizip zlib contribution that includes:
|
||||
* AES encryption
|
||||
* I/O buffering
|
||||
* PKWARE disk splitting
|
||||
It also has the latest bug fixes that having been found all over the internet.
|
||||
DESC
|
||||
s.homepage = 'https://github.com/nmoinvaz/minizip'
|
||||
s.authors = 'Nathan Moinvaziri', 'Gilles Vollant'
|
||||
|
||||
s.source = { :git => 'https://github.com/nmoinvaz/minizip.git' }
|
||||
s.libraries = 'z'
|
||||
|
||||
s.subspec 'Core' do |sp|
|
||||
sp.source_files = '{mz_os,mz_compat,mz_strm,mz_strm_mem,mz_strm_buf,mz_zip,mz_strm_crypt,mz_strm_posix,mz_strm_zlib}.{c,h}'
|
||||
end
|
||||
|
||||
s.subspec 'AES' do |sp|
|
||||
sp.dependency 'Minizip/Core'
|
||||
sp.source_files = 'lib/aes/*.{c,h}', 'mz_strm_aes.{c,h}'
|
||||
end
|
||||
|
||||
s.subspec 'BZIP2' do |sp|
|
||||
sp.dependency 'Minizip/Core'
|
||||
sp.source_files = 'lib/bzip2/*.{c,h}', 'mz_strm_bzip.{c,h}'
|
||||
end
|
||||
|
||||
s.subspec 'LZMA' do |sp|
|
||||
sp.dependency 'Minizip/Core'
|
||||
sp.source_files = 'lib/liblzma/*.{c,h}', 'mz_strm_lzma.{c,h}'
|
||||
end
|
||||
end
|
||||
@@ -0,0 +1,813 @@
|
||||
# bext - Notes
|
||||
|
||||
When using submodules, there are some fairly non-intuitive aspects of managing them that need to be taken into consideration:
|
||||
|
||||
# Adding a submodule (using Tcl as an example)
|
||||
```
|
||||
user@linux:~/bext (main) $ cd tcl
|
||||
user@linux:~/bext/tcl (main) $ git submodule add -b RELEASE https://github.com/BRL-CAD/tcl.git
|
||||
```
|
||||
Edit the new .gitmodules entry to add the "ignore = dirty" line, git add the updated .gitmodules file, and commit the addition of the new submodule.
|
||||
|
||||
|
||||
# Finding the currently referenced submodule SHA1
|
||||
|
||||
Git stores a SHA1 to the upstream commit it will target, but this SHA1 isn't readily visible in the working git clone's files. To see it, per https://stackoverflow.com/a/5033973/2037687) use git ls-tree - for example, this prints the current Tcl SHA1:
|
||||
```
|
||||
user@linux:~/bext (main) $ git ls-tree main tcl/tcl
|
||||
160000 commit 338c6692672696a76b6cb4073820426406c6f3f9 tcl/tcl
|
||||
```
|
||||
|
||||
# Updating a submodule to a newer upstream
|
||||
|
||||
```
|
||||
user@linux:~ $ git clone --recurse-submodules git@github.com:BRL-CAD/bext.git
|
||||
user@linux:~ $ cd bext
|
||||
user@linux:~/bext (main) $ git submodule update --remote
|
||||
Submodule path 'assetimport/assimp': checked out '6a08c39e3a91ef385e76515cfad86aca4bfd57ff'
|
||||
Submodule path 'lief/LIEF': checked out '6e4722624adffdbf2e8156d4b8b69aebb8a3c754'
|
||||
Submodule path 'qt/qt': checked out 'c9e69df410c79e6bc7b8be0f2d35abf366879d50'
|
||||
user@linux:~/bext (main) $ git status
|
||||
On branch main
|
||||
Your branch is up to date with 'origin/main'.
|
||||
|
||||
Changes not staged for commit:
|
||||
(use "git add <file>..." to update what will be committed)
|
||||
(use "git restore <file>..." to discard changes in working directory)
|
||||
modified: assetimport/assimp (new commits)
|
||||
modified: lief/LIEF (new commits)
|
||||
modified: qt/qt (new commits)
|
||||
|
||||
no changes added to commit (use "git add" and/or "git commit -a")
|
||||
user@linux:~/bext (main) $ git add assetimport/assimp lief/LIEF qt/qt
|
||||
user@linux:~/bext (main) $ git status
|
||||
On branch main
|
||||
Your branch is up to date with 'origin/main'.
|
||||
|
||||
Changes to be committed:
|
||||
(use "git restore --staged <file>..." to unstage)
|
||||
modified: assetimport/assimp
|
||||
modified: lief/LIEF
|
||||
modified: qt/qt
|
||||
user@linux:~/bext (main) $ git commit -m "Update submodule references for AssetImport, LIEF and Qt"
|
||||
user@linux:~/bext (main) $ git push
|
||||
```
|
||||
|
||||
# Changing the branch of a submodule
|
||||
|
||||
https://stackoverflow.com/questions/29882960/changing-an-existing-submodules-branch
|
||||
|
||||
# Removing a submodule
|
||||
|
||||
As summarized by https://gist.github.com/myusuf3/7f645819ded92bda6677 (using tcl/tcl as an example):
|
||||
|
||||
* Delete the .gitmodules entry for the submodule being removed
|
||||
* git add .gitmodules
|
||||
* Delete the .git/config entry for the submodule being removed
|
||||
* git rm --cached tcl/tcl
|
||||
* rm -rf .git/modules/tcl/tcl
|
||||
* git commit -m "Removing Tcl submodule"
|
||||
* rm -rf tcl/tcl
|
||||
|
||||
# Updating the BRL-CAD copy of a submodule
|
||||
|
||||
The bext repository does not hold BRL-CAD's copies of the various source repositories used -
|
||||
rather, it points to local repositories in BRL-CAD's project that hold them. This allows,
|
||||
among other things, for a lighter footprint for a working checkout. It also gives us the
|
||||
opportunity to keep the BRL-CAD copy in sync with upstream sources using the git and github
|
||||
tools intended for those use cases.
|
||||
|
||||
To update (for example) BRL-CAD's copy of GDAL to reference the latest release:
|
||||
```
|
||||
user@linux:~ $ git clone git@github.com:BRL-CAD/gdal.git
|
||||
user@linux:~ $ cd gdal
|
||||
user@linux:~/gdal (master) $ git remote add upstream https://github.com/OSGeo/gdal
|
||||
user@linux:~/gdal (master) $ git fetch upstream
|
||||
remote: Enumerating objects: 4536, done.
|
||||
remote: Counting objects: 100% (4132/4132), done.
|
||||
remote: Compressing objects: 100% (986/986), done.
|
||||
remote: Total 4536 (delta 3297), reused 3885 (delta 3141), pack-reused 404
|
||||
Receiving objects: 100% (4536/4536), 6.70 MiB | 25.98 MiB/s, done.
|
||||
Resolving deltas: 100% (3383/3383), completed with 505 local objects.
|
||||
From https://github.com/OSGeo/gdal
|
||||
* [new branch] backport-7740-to-release/3.7 -> upstream/backport-7740-to-release/3.7
|
||||
* [new branch] master -> upstream/master
|
||||
<snip>
|
||||
* [new branch] vendor/1.4-esri -> upstream/vendor/1.4-esri
|
||||
* [new tag] v3.7.3 -> v3.7.3
|
||||
* [new tag] v3.7.3RC1 -> v3.7.3RC1
|
||||
* [new tag] v3.8.0beta1 -> v3.8.0beta1
|
||||
user@linux:~/gdal (master) $ git push --tags
|
||||
Enumerating objects: 10565, done.
|
||||
Counting objects: 100% (5511/5511), done.
|
||||
Delta compression using up to 12 threads
|
||||
Compressing objects: 100% (1354/1354), done.
|
||||
Writing objects: 100% (4057/4057), 2.14 MiB | 10.63 MiB/s, done.
|
||||
Total 4057 (delta 3407), reused 3324 (delta 2699), pack-reused 0
|
||||
remote: Resolving deltas: 100% (3407/3407), completed with 641 local objects.
|
||||
To github.com:BRL-CAD/gdal.git
|
||||
* [new tag] v3.7.3 -> v3.7.3
|
||||
* [new tag] v3.7.3RC1 -> v3.7.3RC1
|
||||
* [new tag] v3.8.0beta1 -> v3.8.0beta1
|
||||
user@linux:~/gdal (master) $ git checkout RELEASE
|
||||
branch 'RELEASE' set up to track 'origin/RELEASE'.
|
||||
Switched to a new branch 'RELEASE'
|
||||
user@linux:~/gdal (RELEASE) $ git merge v3.7.3
|
||||
Updating f74cd41441..6133cf34a7
|
||||
Fast-forward
|
||||
.github/workflows/alpine/Dockerfile.ci | 3 +-
|
||||
.github/workflows/cmake_builds.yml | 11 ++-
|
||||
<snip>
|
||||
create mode 100644 autotest/ogr/data/shp/multipolygon_as_invalid_polygon.shp
|
||||
create mode 100644 autotest/ogr/data/shp/multipolygon_as_invalid_polygon.shx
|
||||
user@linux:~/gdal (RELEASE) $ git status
|
||||
On branch RELEASE
|
||||
Your branch is ahead of 'origin/RELEASE' by 90 commits.
|
||||
(use "git push" to publish your local commits)
|
||||
|
||||
nothing to commit, working tree clean
|
||||
user@linux:~/gdal (RELEASE) $ git diff v3.7.3
|
||||
user@linux:~/gdal (RELEASE) $ git push
|
||||
Total 0 (delta 0), reused 0 (delta 0), pack-reused 0
|
||||
To github.com:BRL-CAD/gdal.git
|
||||
f74cd41441..6133cf34a7 RELEASE -> RELEASE
|
||||
```
|
||||
After this process, the bext repo should be updated with the procedure documented
|
||||
earlier to update its reference to the gdal RELEASE HEAD:
|
||||
```
|
||||
user@linux:~/bext (main) $ git submodule update --remote
|
||||
remote: Enumerating objects: 1619, done.
|
||||
remote: Counting objects: 100% (990/990), done.
|
||||
remote: Compressing objects: 100% (238/238), done.
|
||||
remote: Total 398 (delta 322), reused 229 (delta 158), pack-reused 0
|
||||
Receiving objects: 100% (398/398), 156.17 KiB | 4.34 MiB/s, done.
|
||||
Resolving deltas: 100% (322/322), completed with 127 local objects.
|
||||
From https://github.com/BRL-CAD/gdal
|
||||
+ f74cd4144...6133cf34a RELEASE -> origin/RELEASE (forced update)
|
||||
* [new tag] v3.7.3 -> v3.7.3
|
||||
* [new tag] v3.7.3RC1 -> v3.7.3RC1
|
||||
Submodule path 'gdal/gdal': checked out '6133cf34a78077998406c0c4045bf51f06e3f49d'
|
||||
user@linux:~/bext (main) $ git status
|
||||
On branch main
|
||||
Your branch is up to date with 'origin/main'.
|
||||
|
||||
Changes not staged for commit:
|
||||
(use "git add <file>..." to update what will be committed)
|
||||
(use "git restore <file>..." to discard changes in working directory)
|
||||
modified: gdal/gdal (new commits)
|
||||
|
||||
no changes added to commit (use "git add" and/or "git commit -a")
|
||||
user@linux:~/bext (main) $ git add gdal/gdal
|
||||
user@linux:~/bext (main) $ git status
|
||||
On branch main
|
||||
Your branch is up to date with 'origin/main'.
|
||||
|
||||
Changes to be committed:
|
||||
(use "git restore --staged <file>..." to unstage)
|
||||
modified: gdal/gdal
|
||||
|
||||
user@linux:~/bext (main) $ git commit -m "Update GDAL submodule reference"
|
||||
[main 00ffbf0] Update GDAL submodule reference
|
||||
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||
user@linux:~/bext (main) $ git push
|
||||
Enumerating objects: 5, done.
|
||||
Counting objects: 100% (5/5), done.
|
||||
Delta compression using up to 12 threads
|
||||
Compressing objects: 100% (3/3), done.
|
||||
Writing objects: 100% (3/3), 352 bytes | 352.00 KiB/s, done.
|
||||
Total 3 (delta 2), reused 0 (delta 0), pack-reused 0
|
||||
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
|
||||
To github.com:BRL-CAD/bext.git
|
||||
23bb902..00ffbf0 main -> main
|
||||
```
|
||||
|
||||
# Preparing a BRL-CAD copy of a dependency for addition as a new submodule
|
||||
|
||||
When adding a new submodule to bext, the first step is to prepare a BRL-CAD
|
||||
fork (preferable) or repository (if forking isn't an option) of the project
|
||||
that is going to be used. We deliberately do not directly reference third
|
||||
party repositories, to make sure our build can't be suddenly broken if one of
|
||||
them disappears or radically changes. Considerations when first forking:
|
||||
|
||||
* The ownership of the project should be the BRL-CAD organization.
|
||||
* Uncheck the "clone only main branch" option - we want the full project
|
||||
history available to us if needed, including the various branches. If
|
||||
the upstream disappears, the BRL-CAD copy may become the only copy.
|
||||
* Once the fork is complete, verify that Github Actions are disabled for the
|
||||
fork - if not, go through and disable them.
|
||||
|
||||
Once we have a BRL-CAD/<dependency> repository, we can start looking at what
|
||||
is needed to make it suitable for referencing by bext. We almost never point
|
||||
bext at the main branch of a project, or indeed any actively developed branch -
|
||||
we want a stable, known target that we update deliberately once we have verified
|
||||
things are working. To this end, we create our own branch in the fork (typically
|
||||
called RELEASE) and use that to do any necessary staging.
|
||||
|
||||
Note that normally (though not always) this doesn't involve modifying the
|
||||
project source code - that is more typically handed by patch files in bext
|
||||
itself to keep updating the parent project forks simpler. What we usually need
|
||||
to do in the upstream RELEASE branch is replace git submodules being used in
|
||||
the parent project with full copies of the populated submodule directories. In
|
||||
other words, we want the RELEASE version of a repository to be a fully
|
||||
self-contained clone without any dependencies on external repositories (the
|
||||
boost repository is probably the most extreme example of this in bext, but
|
||||
there are a number of others where we do the same thing.) When the RELEASE
|
||||
branch is updated for BRL-CAD, it is also necessary to fully update all of the
|
||||
contents of these submodule replacements at the same time. (More on how to do
|
||||
this later.)
|
||||
|
||||
NOTE: when considering a dependency for BRL-CAD usage, be sure to check not
|
||||
only the license of the project itself but also all the licenses of its
|
||||
dependencies. Some projects will have optional features using libraries that
|
||||
aren't license compatible with BRL-CAD, so those should be disabled and those
|
||||
source codes not included in RELEASE. If a project has a hard dependency on an
|
||||
incompatible library, unless that dependency can be replaced or the need for it
|
||||
removed we can't use the parent project. (For example, we sometimes see new
|
||||
academic codes associated with papers where the author relies on CGAL's GPL
|
||||
licensed capabilities - even if the academic code itself is liberally licensed,
|
||||
we would have to update or rewrite it to not require CGAL before we could use
|
||||
it.
|
||||
|
||||
Once submodules and licenses have been handled and the project works in
|
||||
isolation, the next step is to get it building as part of the bext ecosystem.
|
||||
For initial experiments, you'll probably want to simply work with a copy of the
|
||||
dependency rather than immediately integrating it as a submodule. (If it
|
||||
proves too difficult to work with and we have to scrap it, you'll want to avoid
|
||||
the mess of also having to undo its addition as a submodule to bext.) You'll
|
||||
create a new top level directory for the dependency that will hold the
|
||||
dependency file, patch files (if any are needed) and the actual project source
|
||||
directory itself. There are lots of examples to use as starting points, and
|
||||
the patterns should be consistent. The usual pain points of this part of the
|
||||
process are:
|
||||
|
||||
* You need to get the build to support using the *locally* built versions
|
||||
of dependencies, as well as the system versions. If you have a system
|
||||
and a bext copy of a dependency present, you may find it's somewhat
|
||||
challenging to get the build system to focus on the version you want it
|
||||
to use. zlib is particularly difficult, since it is quite common as
|
||||
a system dependency and it frequently "works" in builds without the dev
|
||||
spotting the problem. We also must alter our zlib and png library names
|
||||
to avoid conflicts with system versions, so it is almost always necessary
|
||||
to update build systems to instruct them on how to find and use our
|
||||
copies. Recommended best practice, in addition to testing on multiple
|
||||
platforms for building, is to use a freshly set up Ubuntu virtual machine
|
||||
with only the minimally required system development headers.
|
||||
|
||||
* You may discover that the upstream project is using older versions of
|
||||
dependencies than BRL-CAD - in this situation, you'll want to do the work
|
||||
to update the code to use the newer dependency. We typically won't bundle
|
||||
older versions - it's hard enough to stay current with just one! - and
|
||||
if you discover you need to make changes of that sort it is HIGHLY
|
||||
recommended to push those back to the upstream project so you can
|
||||
minimize your future maintenance overhead.
|
||||
|
||||
* We prohibit dependencies from installing anything into the top level
|
||||
"root" directory - outputs should go into bin, lib, share and other
|
||||
standard subdirectories to conform with the layout of a BRL-CAD install.
|
||||
Occasionally this will require build system alterations - those sorts
|
||||
of tweaks are normally handled as patches, unless a particular situation
|
||||
suggests the upstream might be receptive to changing how their install
|
||||
structure is laid out.
|
||||
|
||||
Once you have everything installing into bext_output/install/ correctly and
|
||||
using the correct dependencies, congratulations - you're now ready to add
|
||||
the submodule to bext in lieu of a working source copy. This will allow
|
||||
bext to manage when and how the directory is populated based on build
|
||||
settings, as well as providing a convenient(ish) mechanism for updating
|
||||
submodule references as needed (see above).
|
||||
|
||||
As an example, we document below the steps taken for the geogram library from
|
||||
https://github.com/BrunoLevy/geogram After creating a full fork of the project
|
||||
via github and verifying actions were not enabled, we clone the new repository
|
||||
recursively to get the source code of all submodules:
|
||||
|
||||
```
|
||||
$ git clone --recursive git@github.com:BRL-CAD/geogram.git
|
||||
```
|
||||
|
||||
Once we have the geogram clone, we enter the directory and create our RELEASE
|
||||
branch (since the upstream doesn't have such a branch, we don't have to worry
|
||||
about a conflict - if that branch name becomes a problem in the future we can
|
||||
adjust.)
|
||||
|
||||
```
|
||||
$ cd geogram
|
||||
geogram (main)$ git branch -c RELEASE
|
||||
geogram (main)$ git checkout RELEASE
|
||||
```
|
||||
|
||||
We can see geogram has a number of submodules:
|
||||
|
||||
```
|
||||
geogram (RELEASE)$ git submodule
|
||||
57a8140c8e9cb71d5f01824aa0e934bf71f34e9d src/lib/geogram/third_party/amgcl (1.4.3-13-g57a8140)
|
||||
b4a91513317119ff71a1186906a052da0e535913 src/lib/geogram/third_party/libMeshb (RELEASE7.5-64-gb4a9151)
|
||||
4296cc91b5c8c26d4e7d7aac0cee2b194ffc5800 src/lib/geogram/third_party/rply (v1.1.4-1-g4296cc9)
|
||||
f8f805f04631323c8a75accc009eb9701f5ca027 src/lib/geogram_gfx/third_party/imgui (v1.89.7-docking-35-gf8f805f0)
|
||||
3eaf1255b29fdf5c2895856c7be7d7185ef2b241 src/lib/third_party/glfw (3.3-781-g3eaf1255)
|
||||
```
|
||||
|
||||
The first order of business is to convert those into committed source trees in
|
||||
this repository. Removing a submodule from git isn't as simple as removing the
|
||||
directory itself - there are a couple specific commands that must be run. Before
|
||||
we do so, however, we want to make local copies of the contents of the submodules
|
||||
we are going to clear so we can re-add them as standard file check-ins (see
|
||||
https://stackoverflow.com/a/16162000):
|
||||
|
||||
```
|
||||
geogram (RELEASE)$ mkdir ~/geogram_submodules
|
||||
geogram (RELEASE)$ mv src/lib/geogram/third_party/amgcl ~/geogram_submodules/
|
||||
geogram (RELEASE)$ mv src/lib/geogram/third_party/libMeshb ~/geogram_submodules/
|
||||
geogram (RELEASE)$ mv src/lib/geogram/third_party/rply ~/geogram_submodules/
|
||||
geogram (RELEASE)$ mv src/lib/geogram_gfx/third_party/imgui ~/geogram_submodules/
|
||||
geogram (RELEASE)$ mv src/lib/third_party/glfw ~/geogram_submodules/
|
||||
geogram (RELEASE)$ mv src/lib/geogram/third_party/amgcl ~/geogram_submodules/
|
||||
geogram (RELEASE)$ mv src/lib/geogram/third_party/libMeshb ~/geogram_submodules/
|
||||
geogram (RELEASE)$ mv src/lib/geogram/third_party/rply ~/geogram_submodules/
|
||||
geogram (RELEASE)$ mv src/lib/geogram_gfx/third_party/imgui ~/geogram_submodules/
|
||||
geogram (RELEASE)$ mv src/lib/third_party/glfw ~/geogram_submodules/
|
||||
geogram (RELEASE)$ git submodule deinit -f src/lib/geogram/third_party/amgcl
|
||||
Submodule 'src/lib/geogram/third_party/amgcl' (https://github.com/ddemidov/amgcl.git) unregistered for path 'src/lib/geogram/third_party/amgcl'
|
||||
geogram (RELEASE)$ git submodule deinit -f src/lib/geogram/third_party/libMeshb
|
||||
Submodule 'src/lib/geogram/third_party/libMeshb' (https://github.com/LoicMarechal/libMeshb.git) unregistered for path 'src/lib/geogram/third_party/libMeshb'
|
||||
geogram (RELEASE)$ git submodule deinit -f src/lib/geogram/third_party/rply
|
||||
Submodule 'src/lib/geogram/third_party/rply' (https://github.com/diegonehab/rply.git) unregistered for path 'src/lib/geogram/third_party/rply'
|
||||
geogram (RELEASE)$ git submodule deinit -f src/lib/geogram_gfx/third_party/imgui
|
||||
Submodule 'src/lib/geogram_gfx/third_party/imgui' (https://github.com/ocornut/imgui.git) unregistered for path 'src/lib/geogram_gfx/third_party/imgui'
|
||||
geogram (RELEASE)$ git submodule deinit -f src/lib/third_party/glfw
|
||||
Submodule 'src/lib/third_party/glfw' (https://github.com/glfw/glfw.git) unregistered for path 'src/lib/third_party/glfw'
|
||||
geogram (RELEASE)$ rm -rf .git/modules/src/lib/geogram/third_party/amgcl
|
||||
geogram (RELEASE)$ rm -rf .git/modules/src/lib/geogram/third_party/libMeshb
|
||||
geogram (RELEASE)$ rm -rf .git/modules/src/lib/geogram/third_party/rply
|
||||
geogram (RELEASE)$ rm -rf .git/modules/src/lib/geogram_gfx/third_party/imgui
|
||||
geogram (RELEASE)$ rm -rf .git/modules/src/lib/third_party/glfw
|
||||
geogram (RELEASE)$ git rm --cached src/lib/geogram/third_party/amgcl
|
||||
rm 'src/lib/geogram/third_party/amgcl'
|
||||
geogram (RELEASE)$ git rm --cached src/lib/geogram/third_party/libMeshb
|
||||
rm 'src/lib/geogram/third_party/libMeshb'
|
||||
geogram (RELEASE)$ git rm --cached src/lib/geogram/third_party/rply
|
||||
rm 'src/lib/geogram/third_party/rply'
|
||||
geogram (RELEASE)$ git rm --cached src/lib/geogram_gfx/third_party/imgui
|
||||
rm 'src/lib/geogram_gfx/third_party/imgui'
|
||||
geogram (RELEASE)$ git rm --cached src/lib/third_party/glfw
|
||||
rm 'src/lib/third_party/glfw'
|
||||
geogram (RELEASE)$ git status
|
||||
On branch RELEASE
|
||||
Your branch is up to date with 'origin/main'.
|
||||
|
||||
Changes to be committed:
|
||||
(use "git restore --staged <file>..." to unstage)
|
||||
deleted: src/lib/geogram/third_party/amgcl
|
||||
deleted: src/lib/geogram/third_party/libMeshb
|
||||
deleted: src/lib/geogram/third_party/rply
|
||||
deleted: src/lib/geogram_gfx/third_party/imgui
|
||||
deleted: src/lib/third_party/glfw
|
||||
geogram (RELEASE)$ git commit -m "Remove git submodules"
|
||||
```
|
||||
|
||||
If we check, we now see that no submodules are reported:
|
||||
|
||||
```
|
||||
geogram (RELEASE)$ git submodule
|
||||
```
|
||||
|
||||
Next we restore the copies of the source code made earlier to the working tree:
|
||||
|
||||
```
|
||||
geogram (RELEASE)$ mv ~/geogram_submodules/amgcl/\* src/lib/geogram/third_party/amgcl/
|
||||
geogram (RELEASE)$ mv ~/geogram_submodules/libMeshb/\* src/lib/geogram/third_party/libMeshb/
|
||||
geogram (RELEASE)$ mv ~/geogram_submodules/rply/\* src/lib/geogram/third_party/rply/
|
||||
geogram (RELEASE)$ mv ~/geogram_submodules/imgui/\* src/lib/geogram_gfx/third_party/imgui/
|
||||
geogram (RELEASE)$ mv ~/geogram_submodules/glfw/\* src/lib/third_party/glfw/
|
||||
geogram (RELEASE)$ git status
|
||||
On branch RELEASE
|
||||
Your branch is ahead of 'origin/main' by 1 commit.
|
||||
(use "git push" to publish your local commits)
|
||||
|
||||
Untracked files:
|
||||
(use "git add <file>..." to include in what will be committed)
|
||||
src/lib/geogram/third_party/amgcl/
|
||||
src/lib/geogram/third_party/libMeshb/
|
||||
src/lib/geogram/third_party/rply/
|
||||
src/lib/geogram_gfx/third_party/imgui/
|
||||
src/lib/third_party/glfw/
|
||||
geogram (RELEASE)$ git add -A
|
||||
geogram (RELEASE)$ git status
|
||||
On branch RELEASE
|
||||
Your branch is ahead of 'origin/main' by 1 commit.
|
||||
(use "git push" to publish your local commits)
|
||||
|
||||
Changes to be committed:
|
||||
(use "git restore --staged <file>..." to unstage)
|
||||
new file: src/lib/geogram/third_party/amgcl/CMakeLists.txt
|
||||
new file: src/lib/geogram/third_party/amgcl/LICENSE.md
|
||||
<snip>
|
||||
geogram (RELEASE)$ git commit -m "Commit files from former git submodules"
|
||||
[RELEASE 27f3c3ccf] Commit files from former git submodules
|
||||
1061 files changed, 393698 insertions(+)
|
||||
create mode 100644 src/lib/geogram/third_party/amgcl/CMakeLists.txt
|
||||
<snip>
|
||||
```
|
||||
|
||||
Once this step is complete, we have a "stand-alone" version of geogram and we push the
|
||||
RELEASE branch back to github:
|
||||
|
||||
```
|
||||
geogram (RELEASE)$ git push origin HEAD
|
||||
Enumerating objects: 1231, done.
|
||||
Counting objects: 100% (1231/1231), done.
|
||||
Delta compression using up to 12 threads
|
||||
Compressing objects: 100% (1195/1195), done.
|
||||
Writing objects: 100% (1223/1223), 7.12 MiB | 8.99 MiB/s, done.
|
||||
Total 1223 (delta 254), reused 23 (delta 1), pack-reused 0
|
||||
remote: Resolving deltas: 100% (254/254), completed with 6 local objects.
|
||||
remote:
|
||||
remote: Create a pull request for 'RELEASE' on GitHub by visiting:
|
||||
remote: https://github.com/BRL-CAD/geogram/pull/new/RELEASE
|
||||
remote:
|
||||
To https://github.com/BRL-CAD/geogram.git
|
||||
* [new branch] HEAD -> RELEASE
|
||||
```
|
||||
|
||||
The RELEASE branch is now visible on the https://github.com/BRL-CAD/geogram project page.
|
||||
|
||||
Looking over the project contents, we see there are a number of third party components
|
||||
we either don't want to or can't use. HLBFGS and triangle.c are for noncommercial use
|
||||
only, and must be removed. Tetgen uses the AGPL and is incompatible with BRL-CAD's
|
||||
licensing, so it too must be removed.
|
||||
|
||||
```
|
||||
geogram (RELEASE)$ git rm -r src/lib/geogram/third_party/HLBFGS
|
||||
geogram (RELEASE)$ git rm -r src/lib/geogram/third_party/triangle
|
||||
geogram (RELEASE)$ git rm -r src/lib/geogram/third_party/tetgen
|
||||
geogram (RELEASE)$ git commit -m "Remove sources for optional third party components with incompatible licenses"
|
||||
[RELEASE 296fdc244] Remove sources for optional third party components with incompatible licenses
|
||||
21 files changed, 94593 deletions(-)
|
||||
delete mode 100644 src/lib/geogram/third_party/HLBFGS/HLBFGS.cpp
|
||||
delete mode 100644 src/lib/geogram/third_party/HLBFGS/HLBFGS.h
|
||||
delete mode 100644 src/lib/geogram/third_party/HLBFGS/HLBFGS_BLAS.cpp
|
||||
delete mode 100644 src/lib/geogram/third_party/HLBFGS/HLBFGS_BLAS.h
|
||||
delete mode 100644 src/lib/geogram/third_party/HLBFGS/ICFS.cpp
|
||||
delete mode 100644 src/lib/geogram/third_party/HLBFGS/ICFS.h
|
||||
delete mode 100644 src/lib/geogram/third_party/HLBFGS/LineSearch.cpp
|
||||
delete mode 100644 src/lib/geogram/third_party/HLBFGS/LineSearch.h
|
||||
delete mode 100644 src/lib/geogram/third_party/HLBFGS/Lite_Sparse_Matrix.cpp
|
||||
delete mode 100644 src/lib/geogram/third_party/HLBFGS/Lite_Sparse_Matrix.h
|
||||
delete mode 100644 src/lib/geogram/third_party/HLBFGS/README.txt
|
||||
delete mode 100644 src/lib/geogram/third_party/HLBFGS/Sparse_Entry.h
|
||||
delete mode 100644 src/lib/geogram/third_party/tetgen/README.txt
|
||||
delete mode 100644 src/lib/geogram/third_party/tetgen/Tetgen1.6/README
|
||||
delete mode 100644 src/lib/geogram/third_party/tetgen/Tetgen1.6/tetgen.cpp
|
||||
delete mode 100644 src/lib/geogram/third_party/tetgen/Tetgen1.6/tetgen.h
|
||||
delete mode 100755 src/lib/geogram/third_party/tetgen/tetgen.cpp
|
||||
delete mode 100755 src/lib/geogram/third_party/tetgen/tetgen.h
|
||||
delete mode 100644 src/lib/geogram/third_party/triangle/README
|
||||
delete mode 100644 src/lib/geogram/third_party/triangle/triangle.c
|
||||
delete mode 100644 src/lib/geogram/third_party/triangle/triangle.h
|
||||
geogram (RELEASE)$ git push origin HEAD
|
||||
```
|
||||
|
||||
Next, we determine how to build the project without the components we either
|
||||
don't want to or cannot use. We will use build system options provided by the
|
||||
upstream build if available - if alterations to the build logic are necessary
|
||||
we will collect those into a patch file and use that . This generally involves
|
||||
turning off any extra features we don't want to simplify the build and
|
||||
dependency requirements as much as possible. In geogram's case, we tell it to
|
||||
turn off graphics and build the library only, as well as disabling all the
|
||||
optional third party components:
|
||||
|
||||
```
|
||||
geogram (RELEASE)$ mkdir build && cd build
|
||||
build (RELEASE)$ cmake .. -DGEOGRAM_LIB_ONLY=ON -DGEOGRAM_WITH_GRAPHICS=OFF -DGEOGRAM_WITH_LUA=OFF -DGEOGRAM_WITH_HLBFGS=OFF -DGEOGRAM_WITH_TETGEN=OFF -DGEOGRAM_WITH_TRIANGLE=OFF
|
||||
CMake Deprecation Warning at CMakeLists.txt:5 (cmake_minimum_required):
|
||||
Compatibility with CMake < 3.5 will be removed from a future version of
|
||||
CMake.
|
||||
|
||||
Update the VERSION argument <min> value or use a ...<max> suffix to tell
|
||||
CMake that the project does not need compatibility with older versions.
|
||||
|
||||
|
||||
-- The C compiler identification is GNU 12.2.1
|
||||
-- The CXX compiler identification is GNU 12.2.1
|
||||
-- Detecting C compiler ABI info
|
||||
-- Detecting C compiler ABI info - done
|
||||
-- Check for working C compiler: /usr/bin/cc - skipped
|
||||
-- Detecting C compile features
|
||||
-- Detecting C compile features - done
|
||||
-- Detecting CXX compiler ABI info
|
||||
-- Detecting CXX compiler ABI info - done
|
||||
-- Check for working CXX compiler: /usr/bin/c++ - skipped
|
||||
-- Detecting CXX compile features
|
||||
-- Detecting CXX compile features - done
|
||||
-- Doxygen >= 1.7.0 not found, cannot generate documentation
|
||||
CMake Deprecation Warning at doc/CMakeLists.txt:7 (cmake_minimum_required):
|
||||
Compatibility with CMake < 3.5 will be removed from a future version of
|
||||
CMake.
|
||||
|
||||
Update the VERSION argument <min> value or use a ...<max> suffix to tell
|
||||
CMake that the project does not need compatibility with older versions.
|
||||
|
||||
|
||||
-- Configuring done (0.7s)
|
||||
-- Generating done (0.1s)
|
||||
-- Build files have been written to: /geogram/build
|
||||
build (RELEASE)$ make
|
||||
[ 0%] Building C object src/lib/geogram/third_party/CMakeFiles/geogram_third_party.dir/libMeshb/sources/libmeshb7.c.o
|
||||
[ 0%] Building C object src/lib/geogram/third_party/CMakeFiles/geogram_third_party.dir/rply/rply.c.o
|
||||
[ 0%] Building C object src/lib/geogram/third_party/CMakeFiles/geogram_third_party.dir/zlib/adler32.c.o
|
||||
[ 0%] Building C object src/lib/geogram/third_party/CMakeFiles/geogram_third_party.dir/zlib/compress.c.o
|
||||
[ 1%] Building C object src/lib/geogram/third_party/CMakeFiles/geogram_third_party.dir/zlib/crc32.c.o
|
||||
<snip>
|
||||
```
|
||||
|
||||
One thing we spot when building starts is that there is a local zlib copy in geogram. That's not necessarily
|
||||
a problem if it does not cause a conflict (for example, we allow Qt to use its own zlib since that is much
|
||||
simpler than trying to inject our version into their build and they isoloate their version) but it's something to
|
||||
be aware of as a source of potential issues. If it DOES cause a problem, we may have to alter geogram's build
|
||||
to reference our zlib, if we are building a local copy.
|
||||
|
||||
After the library is complete, we use ldd to check and see if any system
|
||||
libraries were linked that either already are or will need to be supplied by
|
||||
bext are used:
|
||||
|
||||
```
|
||||
geogram/build (RELEASE) $ ldd lib/libgeogram.so
|
||||
linux-vdso.so.1 (0x00007fff0db46000)
|
||||
libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007efc63200000)
|
||||
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007efc63515000)
|
||||
libgomp.so.1 => /lib/x86_64-linux-gnu/libgomp.so.1 (0x00007efc63ef3000)
|
||||
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007efc63ecf000)
|
||||
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007efc62e00000)
|
||||
/lib64/ld-linux-x86-64.so.2 (0x00007efc63f6a000)
|
||||
```
|
||||
|
||||
At least for Linux, all the linked libraries appear to be system libs and not dependencies we may need
|
||||
to supply ourselves, which is good. If geogram was going to require us to add more dependencies to avoid
|
||||
the requirement to install system packages, we would have to repeat the above process for each of the
|
||||
proposed dependencies as well before we would be ready to move on to bext.
|
||||
|
||||
Since we appear to have what we need, the next step takes place in the bext repository.
|
||||
We create a new top level directory - in this case "geogram" - and add it to the toplevel
|
||||
CMakeLists.txt file.
|
||||
|
||||
```
|
||||
bext (main) $ mkdir geogram
|
||||
bext (main) $ <manually edit CMakeLists.txt to add the following>
|
||||
# Geogram - a programming library with geometric algorithms
|
||||
# https://github.com/BrunoLevy/geogram
|
||||
add_project(geogram GROUPS "BRLCAD_EXTRA")
|
||||
```
|
||||
|
||||
We create a default "geogram.deps" file to list build dependencies for the bext superbuild.
|
||||
By default everything depends on at least PATCH - if geogram ultimately needs other bext
|
||||
components as well, they will be added later
|
||||
|
||||
```
|
||||
bext (main) $ echo -e "PATCH\\n" > geogram/geogram.deps
|
||||
```
|
||||
|
||||
Based on the above compilation, we know we will need to pass some geogram specific arguments
|
||||
to configure. Using one of the other CMakeLists.txt files as a template, we create the following
|
||||
geogram/CMakeLists.txt file:
|
||||
|
||||
```
|
||||
set(ENABLE_GEOGRAM "${ENABLE_GEOGRAM}" CACHE BOOL "Enable Geogram build")
|
||||
|
||||
if (ENABLE_GEOGRAM)
|
||||
|
||||
git_submodule_init(geogram CMakeLists.txt)
|
||||
|
||||
RegisterDeps(GEOGRAM)
|
||||
|
||||
ExternalProject_Add(GEOGRAM_BLD
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/geogram"
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
#PATCH_COMMAND ${PATCH_EXECUTABLE};-E;-p1;${PATCH_OPTIONS};-i;${CMAKE_CURRENT_SOURCE_DIR}/geogram.patch
|
||||
CMAKE_ARGS
|
||||
${BUILD_TYPE_SPECIFIER}
|
||||
-DBIN_DIR=${BIN_DIR}
|
||||
-DLIB_DIR=${LIB_DIR}
|
||||
-DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS}
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_BUNDLE_INSTALL_PREFIX}
|
||||
-DCMAKE_INSTALL_LIBDIR:PATH=${LIB_DIR}
|
||||
-DCMAKE_INSTALL_RPATH=${CMAKE_BUNDLE_INSTALL_PREFIX}/${LIB_DIR}
|
||||
-DGEOGRAM_LIB_ONLY=ON
|
||||
-DGEOGRAM_WITH_GRAPHICS=OFF
|
||||
-DGEOGRAM_WITH_LUA=OFF
|
||||
-DGEOGRAM_WITH_HLBFGS=OFF
|
||||
-DGEOGRAM_WITH_TETGEN=OFF
|
||||
-DGEOGRAM_WITH_TRIANGLE=OFF
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(GEOGRAM GEOGRAM_DEPENDS)
|
||||
|
||||
# Copy the license into position in CMAKE_BUNDLE_INSTALL_PREFIX
|
||||
file(MAKE_DIRECTORY ${CMAKE_BUNDLE_INSTALL_PREFIX}/doc/legal/other)
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/geogram/LICENSE
|
||||
${CMAKE_BUNDLE_INSTALL_PREFIX}/doc/legal/other/geogram.txt
|
||||
COPYONLY
|
||||
)
|
||||
|
||||
endif (ENABLE_GEOGRAM)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
```
|
||||
|
||||
By default the PATCH\_COMMAND line is commented out - at this stage we don't know if we need to
|
||||
apply any patches or not. We will definitely need to copy at least the LICENSE file. In this
|
||||
case we will probably also want to append some of the other third party licenses used by geogram
|
||||
into it for completeness, so we may end up either scripting that or making our own custom file
|
||||
to store in geogram/. The latter is less ideal as it will have to be manually updated each time
|
||||
we update geogram, but that might be simpler than a complex and fragile scripting solution - it
|
||||
will require investigation.
|
||||
|
||||
The other item of note here is that we need find\_package to locate geogram. By default CMake
|
||||
does not bundle a module for this, and geogram is not one of the projects that uses the newer
|
||||
project-provided CMake information convention for find\_package, so we will have to supply a
|
||||
FindGeogram.cmake file. In this case geogram itself has such a file in geogram/cmake/FindGeogram.cmake
|
||||
so that is our starting point - we add it to the bext collection of CMake find\_package files:
|
||||
|
||||
```
|
||||
bext (main) $ cp ~/geogram/cmake/FindGeogram.cmake CMake/
|
||||
```
|
||||
|
||||
Although it is not immediately necessary for this stage of the setup, there is something we
|
||||
should verify and correct about the FindGeogram.cmake file. The bext setup requires that
|
||||
find\_package respect \*\_ROOT variables to allow us to point search paths to our local copies
|
||||
of libs rather than system versions, and it is common for more obscure cmake files to not
|
||||
be set up to search in this fashion. Accordingly, we alter FindGeogram.cmake
|
||||
to add GEOGRAM\_ROOT to the set of search paths. This will eventually be necessary for the
|
||||
copy added to the main BRL-CAD build, as well as for any new dependencies that need to link
|
||||
against the local copy of geogram in the future.
|
||||
|
||||
For the initial test, we comment out the git\_submodule\_init line and manually position a copy
|
||||
of the geogram source tree in geogram/geogram to simulate a submodule clone. For this test
|
||||
we only are interested in building geogram and its requirements, rather than all of bext,
|
||||
so we run make with the GEOGRAM_BLD target.
|
||||
|
||||
```
|
||||
bext (main) $ cp -r ~/geogram geogram/
|
||||
bext (main) $ mkdir build && cd build
|
||||
build (main) $ cmake .. -DENABLE_ALL=ON
|
||||
build (main) $ make GEOGRAM_BLD
|
||||
[ 0%] Creating directories for 'PATCH_BLD'
|
||||
[ 0%] No download step for 'PATCH_BLD'
|
||||
[ 20%] No update step for 'PATCH_BLD'
|
||||
[ 20%] No patch step for 'PATCH_BLD'
|
||||
[ 20%] Performing configure step for 'PATCH_BLD'
|
||||
-- PATCH_BLD configure command succeeded. See also bext/build/patch/PATCH_BLD-prefix/src/PATCH_BLD-stamp/PATCH_BLD-configure-*.log
|
||||
[ 40%] Performing build step for 'PATCH_BLD'
|
||||
-- PATCH_BLD build command succeeded. See also bext/build/patch/PATCH_BLD-prefix/src/PATCH_BLD-stamp/PATCH_BLD-build-*.log
|
||||
[ 40%] Performing install step for 'PATCH_BLD'
|
||||
-- PATCH_BLD install command succeeded. See also bext/build/patch/PATCH_BLD-prefix/src/PATCH_BLD-stamp/PATCH_BLD-install-*.log
|
||||
[ 40%] Built target PATCH_BLD-install
|
||||
[ 60%] Creating directories for 'GEOGRAM_BLD'
|
||||
[ 60%] Performing download step (DIR copy) for 'GEOGRAM_BLD'
|
||||
[ 60%] No update step for 'GEOGRAM_BLD'
|
||||
[ 80%] No patch step for 'GEOGRAM_BLD'
|
||||
[ 80%] Performing configure step for 'GEOGRAM_BLD'
|
||||
-- GEOGRAM_BLD configure command succeeded. See also bext/build/geogram/GEOGRAM_BLD-prefix/src/GEOGRAM_BLD-stamp/GEOGRAM_BLD-configure-*.log
|
||||
[ 80%] Performing build step for 'GEOGRAM_BLD'
|
||||
-- GEOGRAM_BLD build command succeeded. See also bext/build/geogram/GEOGRAM_BLD-prefix/src/GEOGRAM_BLD-stamp/GEOGRAM_BLD-build-*.log
|
||||
[ 80%] Performing install step for 'GEOGRAM_BLD'
|
||||
-- GEOGRAM_BLD install command succeeded. See also bext/build/geogram/GEOGRAM_BLD-prefix/src/GEOGRAM_BLD-stamp/GEOGRAM_BLD-install-*.log
|
||||
[ 80%] Built target GEOGRAM_BLD-install
|
||||
[100%] Completed 'GEOGRAM_BLD'
|
||||
[100%] Built target GEOGRAM_BLD
|
||||
```
|
||||
|
||||
Once we have a successful completion, we inspect the contents of bext_output/install:
|
||||
|
||||
```
|
||||
bext/build (main) $ ls -R ~/bext_output/install/
|
||||
```
|
||||
|
||||
One thing to note is that a lot of the third party headers have been installed,
|
||||
including lua (although we disabled it) and zlib. It might be possible to trim
|
||||
the installed set of headers down if the subset of geogram we are interested in
|
||||
doesn't require all of them, but it would also require patching the build logic
|
||||
so it's not a step to take without some motivation. The zlib headers are concerning
|
||||
if there's a risk of them getting incorporated into other builds instead of our
|
||||
bundled zlib, but their location in include/geogram1/geogram/third_party/zlib should
|
||||
help avoid accidental incorporation so for the moment we can wait and see. The
|
||||
total file size for all the geogram headers is about 5M, which isn't enough to
|
||||
justify a cleanup attempt without more pressing functional concerns.
|
||||
|
||||
Once everything looks like it should, we are ready to remove the working geogram
|
||||
copy and add it properly as a submodule per the instructions at the top of this
|
||||
file:
|
||||
|
||||
```
|
||||
bext (main) $ rm -rf geogram/geogram && cd geogram
|
||||
bext/geogram (main) $ git submodule add -b RELEASE https://github.com/BRL-CAD/geogram.git
|
||||
bext/geogram (main) $ cd ..
|
||||
bext (main) $ echo " ignore = dirty" >> .gitmodules
|
||||
```
|
||||
|
||||
Then add all the new and updated files to git for committing, and make the
|
||||
commit - geogram will now be present as a dependency in bext.
|
||||
|
||||
```
|
||||
bext (main) $ git add .gitmodules CMakeLists.txt CMake/ geogram/
|
||||
bext (main) $ git status
|
||||
On branch main
|
||||
Your branch is up to date with 'origin/main'.
|
||||
|
||||
Changes to be committed:
|
||||
(use "git restore --staged <file>..." to unstage)
|
||||
modified: .gitmodules
|
||||
new file: CMake/FindGeogram.cmake
|
||||
modified: CMakeLists.txt
|
||||
new file: geogram/CMakeLists.txt
|
||||
new file: geogram/geogram
|
||||
new file: geogram/geogram.deps
|
||||
bext (main) $ git commit -m "Add geogram geometry library to bext"
|
||||
[main 07d979f] Add geogram geometry library to bext
|
||||
6 files changed, 227 insertions(+)
|
||||
create mode 100644 CMake/FindGeogram.cmake
|
||||
create mode 100644 geogram/CMakeLists.txt
|
||||
create mode 160000 geogram/geogram
|
||||
create mode 100644 geogram/geogram.deps
|
||||
bext (main) $ git push
|
||||
```
|
||||
|
||||
The final "git push" step publishes the new addition to the public github bext
|
||||
repository, and will also kick off a continuous integration test build on
|
||||
Windows, Mac and Linux. Because we tested only on Linux above, it is very
|
||||
common to see build issues on one or both of Windows and Mac - any issues
|
||||
should be immediately fixed, to keep bext building on all three platforms.
|
||||
In the case of severe issues, comment out the add\_project line in the toplevel
|
||||
bext CMakeLists.txt file corresponding to the new addition until the problems
|
||||
can be resolved.
|
||||
|
||||
Having added the dependency successfully to bext, the next step is to set up
|
||||
the main BRL-CAD build to make use of it. The FindGeogram.cmake file needs
|
||||
to be added to BRL-CAD's misc/CMake folder, and the following code needs to be
|
||||
added to misc/CMake/BRLCAD_ExternalDeps.cmake in order for the main BRL-CAD
|
||||
build to be able to find a bundled Geogram:
|
||||
|
||||
```
|
||||
# Geogram - a programming library with geometric algorithms
|
||||
# https://github.com/BrunoLevy/geogram
|
||||
find_package_reset(GEOGRAM RESET_TP)
|
||||
set(GEOGRAM_ROOT "${CMAKE_BINARY_DIR}")
|
||||
find_package(Geogram)
|
||||
```
|
||||
|
||||
Because the Geogram headers will trigger compiler warnings for a BRL-CAD build,
|
||||
we also need to identify "geogram" as a pattern on which to use the SYSTEM
|
||||
keyword when it is used in include_directories calls:
|
||||
|
||||
```
|
||||
set(SYS_INCLUDE_PATTERNS ${SYS_INCLUDE_PATTERNS} geogram)
|
||||
list(REMOVE_DUPLICATES SYS_INCLUDE_PATTERNS)
|
||||
set(SYS_INCLUDE_PATTERNS ${SYS_INCLUDE_PATTERNS} geogram CACHE STRING "Bundled system include dirs" FORCE)
|
||||
```
|
||||
|
||||
We also need to add "Geogram" to the BUNDLED_LABELS list and GEOGRAM_LIBRARY to
|
||||
the BUNDLED_VARS list in misc/CMake/BRLCAD_Summary.cmake - they both need to be
|
||||
in the same relative positions in their respective lists. This will allow the
|
||||
BRL-CAD configure summary to report on the status of the dependency automatically.
|
||||
By convention we keep the labels alphabetized.
|
||||
|
||||
Note that the bext build takes responsibility for making third party
|
||||
dependencies relocatable by leveraging LIEF, but if the upstream project ends
|
||||
up encoding fixed install paths rather than using relative lookups it may
|
||||
happen that a working bext_output/install copy fails to work when copied into
|
||||
the main BRL-CAD build. If and when that happens, the original sources must be
|
||||
patched to allow for relocatable execution (we have to do this for Tcl, for
|
||||
example.) This should be done via patch file, and if the upstream project will
|
||||
take them push the necessary changes upstream to simplify incorporating new
|
||||
versions down the road.
|
||||
|
||||
Once the dependency is looking stable and useful, it's time to circle back and
|
||||
test the build logic for various configurations - system verisons of
|
||||
dependencies (if any), bundled versions of dependencies (if any), installing a
|
||||
system version of geogram and verifying that the FindGeogram.cmake file
|
||||
successfully detects it and our build logic disables the local build, and
|
||||
checking that the BRL-CAD FindGeogram.cmake and build logic also work in both
|
||||
configurations. Unfortunately, especially given the huge number of projects
|
||||
bext manages when everything is enabled, it's not practical to test all
|
||||
combinations of system and local for all projects. Generally speaking, the
|
||||
most important configurations are ENABLE_ALL=ON, system detection on a
|
||||
"vanilla" Linux box with just the minimal system development headers for X11
|
||||
et. al., and system detection on a Linux box with a lot of system versions of
|
||||
libraries present. (For projects like geogram that have minimal entanglement
|
||||
with other elements of bext it's more practical to check all configurations
|
||||
using the GEOGRAM_BLD build target, but that won't always be possible -
|
||||
build logic for projects like OSPray and Appleseed has the potential to
|
||||
encounter a vast set of possible mixes of system and bundled libs.)
|
||||
|
||||
@@ -1,126 +1,100 @@
|
||||
# minizip 2.8.5
|
||||
|
||||
minizip is a zip manipulation library written in C that is supported on Windows, macOS, and Linux.
|
||||
|
||||
[](https://github.com/nmoinvaz/minizip/blob/master/LICENSE)
|
||||
[](https://lgtm.com/projects/g/nmoinvaz/minizip/context:cpp)
|
||||
|
||||
Maintained by Nathan Moinvaziri.
|
||||
|
||||
## Branches
|
||||
|
||||
| Name | State | Version | Description |
|
||||
|:- |:-:|:-:|:-|
|
||||
|[master](https://github.com/nmoinvaz/minizip/tree/master)|Active [](https://travis-ci.org/nmoinvaz/minizip/branches)|2.x|Modern rewrite of 1.2 branch that includes more advanced features, improvements in code maintainability and readability, and the reduction of duplicate code. Compatibility layer provided for older versions.|
|
||||
|[dev](https://github.com/nmoinvaz/minizip/tree/dev)|Active [](https://travis-ci.org/nmoinvaz/minizip/branches)|2.x|Latest development code|
|
||||
|[1.2](https://github.com/nmoinvaz/minizip/tree/1.2)|Stale| 1.x|Drop-in replacement for zlib's minizip that includes WinZip AES encryption, disk splitting, I/O buffering and some additional fixes.|
|
||||
|[1.1](https://github.com/nmoinvaz/minizip/tree/1.1)|Stale| 1.x|Original minizip as of zlib 1.2.11.|
|
||||
|
||||
## History
|
||||
|
||||
Minizip was originally developed by [Gilles Vollant](https://www.winimage.com/zLibDll/minizip.html) and
|
||||
had been contributed to by many people. As part of the zlib distribution, Mark Adler still maintains the
|
||||
original [minizip](https://github.com/madler/zlib/tree/master/contrib/minizip) project which is included in this repository as a reference.
|
||||
|
||||
My work with the minizip library began in 2006 when I started submitting bugs I found to
|
||||
Gilles Vollant. In 2010, I implemented some additional features like WinZip AES encryption, disk splitting, and
|
||||
I/O buffering that were necessary for another project I was working on. Shortly after, I created this public repository
|
||||
so I could share these and other improvements with the rest of the world. I have been maintaining and actively
|
||||
developing this code base ever since. At the beginning of 2017, I began the work to refactor and rewrite
|
||||
the library as version 2 because it had become difficult to maintain and code readability suffered over the years.
|
||||
|
||||
## Features
|
||||
|
||||
+ Creating and extracting zip archives.
|
||||
+ Adding and removing entries from zip archives.
|
||||
+ Read and write raw zip entry data.
|
||||
+ Reading and writing zip archives from memory.
|
||||
+ Zlib, BZIP2, and LZMA compression methods.
|
||||
+ Password protection through Traditional PKWARE and [WinZIP AES](https://www.winzip.com/aes_info.htm) encryption.
|
||||
+ Buffered streaming for improved I/O performance.
|
||||
+ NTFS timestamp support for UTC last modified, last accessed, and creation dates.
|
||||
+ Disk split support for splitting zip archives into multiple files.
|
||||
+ Preservation of file attributes across file systems.
|
||||
+ Unicode filename support through UTF-8 encoding.
|
||||
+ Legacy character encoding support CP437, CP932, CP936, CP950.
|
||||
+ Turn off compilation of compression, decompression, or encryption.
|
||||
+ Windows (Win32 & WinRT), macOS and Linux platform support.
|
||||
+ Streaming interface for easy implementation of additional platforms.
|
||||
+ Support for Apple's compression library ZLIB implementation.
|
||||
+ Zero out local file header information.
|
||||
+ Zip/unzip of central directory to reduce size.
|
||||
+ Ability to generate and verify CMS signature for each entry.
|
||||
+ Recover the central directory if it is corrupt or missing.
|
||||
+ Example minizip command line tool.
|
||||
|
||||
## Build
|
||||
|
||||
To generate project files for your platform:
|
||||
|
||||
1. [Download and install](https://cmake.org/install/) cmake.
|
||||
2. Run cmake in the minizip directory.
|
||||
|
||||
```
|
||||
cmake . -DMZ_BUILD_TEST=ON
|
||||
cmake --build .
|
||||
```
|
||||
|
||||
## Build Options
|
||||
|
||||
| Name | Description | Default Value |
|
||||
|:- |:-|:-:|
|
||||
| MZ_COMPAT | Enables compatibility layer | ON |
|
||||
| MZ_ZLIB | Enables ZLIB compression | ON |
|
||||
| MZ_BZIP2 | Enables BZIP2 compression | ON |
|
||||
| MZ_LZMA | Enables LZMA compression | ON |
|
||||
| MZ_PKCRYPT | Enables PKWARE traditional encryption | ON |
|
||||
| MZ_WZAES | Enables WinZIP AES encryption | ON |
|
||||
| MZ_LIBCOMP | Enables Apple compression | OFF |
|
||||
| MZ_OPENSSL | Enables OpenSSL encryption | OFF |
|
||||
| MZ_BRG | Enables Brian Gladman's library | OFF |
|
||||
| MZ_COMPRESS_ONLY | Only support compression | OFF |
|
||||
| MZ_DECOMPRESS_ONLY | Only support decompression | OFF |
|
||||
| MZ_BUILD_TEST | Builds minizip test executable | OFF |
|
||||
| MZ_BUILD_UNIT_TEST | Builds minizip unit test project | OFF |
|
||||
| MZ_BUILD_FUZZ_TEST | Builds minizip fuzz executables | OFF |
|
||||
|
||||
## Contents
|
||||
|
||||
| File(s) | Description |
|
||||
|:- |:-|
|
||||
| minizip.c | Sample application |
|
||||
| mz_compat.\* | Minizip 1.x compatibility layer |
|
||||
| mz.h | Error codes and flags |
|
||||
| mz_os\* | Platform specific file/utility functions |
|
||||
| mz_crypt\* | Configuration specific crypto/hashing functions |
|
||||
| mz_strm.\* | Stream interface |
|
||||
| mz_strm_buf.\* | Buffered stream |
|
||||
| mz_strm_bzip.\* | BZIP2 stream using libbzip2 |
|
||||
| mz_strm_libcomp.\* | Apple compression stream |
|
||||
| mz_strm_lzma.\* | LZMA stream using liblzma |
|
||||
| mz_strm_mem.\* | Memory stream |
|
||||
| mz_strm_split.\* | Disk splitting stream |
|
||||
| mz_strm_pkcrypt.\* | PKWARE traditional encryption stream |
|
||||
| mz_strm_os\* | Platform specific file stream |
|
||||
| mz_strm_wzaes.\* | WinZIP AES stream |
|
||||
| mz_strm_zlib.\* | Deflate stream using zlib |
|
||||
| mz_zip.\* | Zip format |
|
||||
| mz_zip_rw.\* | Zip reader/writer |
|
||||
|
||||
## Third-Party Libraries
|
||||
|
||||
+ [zlib](https://zlib.net/) written by Mark Adler and Jean-loup Gailly.
|
||||
+ Not included in this repository
|
||||
+ Or alternatively, [zlib-ng](https://github.com/Dead2/zlib-ng) by Hans Kristian Rosbach
|
||||
+ [BZIP2](https://www.sourceware.org/bzip2/) written by Julian Seward.
|
||||
+ [liblzma](https://tukaani.org/xz/) written by Lasse Collin.
|
||||
+ Modifications were made to support the ZIP file format specification
|
||||
+ [AES](https://github.com/BrianGladman/aes) and [SHA](https://github.com/BrianGladman/sha) libraries of Brian Gladman.
|
||||
|
||||
## Acknowledgments
|
||||
|
||||
Thanks to [Gilles Vollant](https://www.winimage.com/zLibDll/minizip.html) on which this work is originally based on.
|
||||
|
||||
Thanks go out to all the people who have taken the time to contribute code reviews, testing and/or patches. This project would not have been nearly as good without you.
|
||||
|
||||
The [ZIP format](https://github.com/nmoinvaz/minizip/blob/master/doc/appnote.txt) was defined by Phil Katz of PKWARE.
|
||||
# bext - External Dependencies Management
|
||||
|
||||
This repository manages the building of dependencies used by large scale computer graphics projects, with a primary focus on the [BRL-CAD](https://github.com/BRL-CAD/brlcad) computer aided design system.
|
||||
|
||||
# Quick start
|
||||
|
||||
* Clone this repository
|
||||
```sh
|
||||
git clone https://github.com/BRL-CAD/bext
|
||||
```
|
||||
(This should be fast - by default most of the downloading happens during the configure process.)
|
||||
* Make a build directory
|
||||
```sh
|
||||
mkdir bext_build && cd bext_build
|
||||
```
|
||||
* Configure with CMake. Individual components can be enabled or disabled, but the ENABLE_ALL flag is used to automatically turn on all the projects. There are also USE_* variables that can enable or disable various groupings of components based on which specific application stacks the user wishes to support.
|
||||
```sh
|
||||
cmake ../bext -DENABLE_ALL=ON
|
||||
```
|
||||
* Run the build process.
|
||||
```sh
|
||||
cmake --build . --config Release --parallel 8
|
||||
```
|
||||
|
||||
Note that if you know you are going to build most or all of the component projects you can immediately populate all submodules when performing the clone:
|
||||
|
||||
```sh
|
||||
git clone --recursive https://github.com/BRL-CAD/bext
|
||||
```
|
||||
|
||||
This is primarily useful if you want to do all the downloading at once up front or you are preparing to work in an environment without an internet connection.
|
||||
|
||||
A word of caution - full cloning of all the repository contents can be time, bandwidth and space intensive. To help alleviate this a bit, you can add -DGIT_SHALLOW_CLONE=ON to the CMake configure, or if you're pre-cloning all repositories ahead of time use --depth=1 option with the above recursive clone. Be aware that shallow clones have some limitations that make them unsuitable for much other than compiling (updating to newer versions of submodules won't work, for example) so shallow clones aren't recommended for development.
|
||||
|
||||
# USE_* Options
|
||||
|
||||
A complete ENABLE_ALL build of all components in this repository is a *very* large build, and developers not needing some subset of the components may wish to avoid paying the price of building *all* submodules. That is why the USE_* options are defined - ENABLE_ALL will only enable those submodules that indicate they are used by at least one active USE_* option. By default, USE_BRLCAD, USE_BRLCAD_EXTRA, USE_GDAL and USE_TCL are enabled as they collectively define the most common set of dependencies used by a standard BRL-CAD build. However, if a developer is building BRL-CAD without terrain support and without Tcl/Tk support, setting USE_GDAL and USE_TCL to OFF will skip compilation of those submodules. Available USE_* options are:
|
||||
|
||||
* USE_BRLCAD - Core BRL-CAD dependencies always needed to build BRL-CAD successfully.
|
||||
* USE_BRLCAD_EXTRA - Optional BRL-CAD dependencies.
|
||||
* USE_GDAL - Geospatial Data Abstraction Library and dependencies
|
||||
* USE_TCL - Tcl/Tk and associated packages
|
||||
* USE_QT - Qt - cross-platform software for creating graphical user interfaces
|
||||
* USE_APPLESEED - Physically-based global illumination rendering engine
|
||||
* USE_OSPRAY - Intel high performance ray tracing engine
|
||||
|
||||
(For BRL-CAD components specifically, a more nuanced enable/disable decision can be made if the BRLCAD_COMPONENTS variable is set. If the parent BRL-CAD build is only building a subset of the BRL-CAD target set, no all dependencies will be needed.)
|
||||
|
||||
# Using the Build Outputs with BRL-CAD
|
||||
|
||||
At the moment this repository and BRL-CAD's support of it are still experimental.
|
||||
To test it, the steps are as follows:
|
||||
|
||||
* Clone the BRL-CAD repository
|
||||
```sh
|
||||
git clone https://github.com/BRL-CAD/brlcad
|
||||
```
|
||||
* Remove the internal 3rd party directories (be sure NOT to accidentally commit this change to the repository...)
|
||||
```sh
|
||||
cd brlcad && rm -rf misc/tools/ext src/other
|
||||
```
|
||||
* Make a build directory
|
||||
```sh
|
||||
cd .. && mkdir brlcad_exttest_build && cd brlcad_exttest_build
|
||||
```
|
||||
* Configure with CMake, specifying the path holding the bext output directory the BRLCAD_EXT_DIR variable to locate bext_output. Unless you have overridden the CMAKE_INSTALL_PREFIX of the bext build, it will be located in your home directory. The bext_output directory should in turn contain install and noinstall folders. If you also wish to test with Qt, you must currently enable that support in BRL-CAD as well. (Note that the BRL-CAD configure process is responsible for staging the BRLCAD_EXT_DIR contents into the build directory, so it can take some time to complete...)
|
||||
```sh
|
||||
cmake ../brlcad -DBRLCAD_EXT_DIR=<your_bext_output_dir> -DBRLCAD_ENABLE_QT=ON
|
||||
```
|
||||
* Run the build process.
|
||||
```sh
|
||||
cmake --build . --config Release --parallel 8
|
||||
cmake --build . --target package --parallel 8
|
||||
```
|
||||
|
||||
If all goes well, the final result should be a relocatable BRL-CAD archive
|
||||
including both the main BRL-CAD outputs and the products of this external
|
||||
dependencies repository.
|
||||
|
||||
|
||||
# About This Repository
|
||||
|
||||
In broad, the structure of the source tree is two tiered - the top level directories each denote a specific dependency project (Tcl, Qt, GDAL, etc.). Within that directory are found:
|
||||
|
||||
* A reference (using git submodules) to a copy of the upstream source code
|
||||
* Our managing CMakeLists.txt file defining the logic for building that project
|
||||
* A <dirname>.deps file identifying a project's dependencies on other bext projects
|
||||
* Any patch files or other supporting resources not part of the upstream tree
|
||||
|
||||
Sometimes third party libraries will depend on other third party libraries (for example, libpng's use of zlib) - when a bundled component that is a dependency of other bundled projects is enabled, the expectation is that the other bundled
|
||||
components will use our copy rather than system copies of those libraries.
|
||||
|
||||
# Compilation-Only Tools
|
||||
|
||||
Although most of the components here are intended for bundling with the eventual binary software distribution, there are some exceptions to that rule. A few of the projects (AStyle, patch, LIEF, etc.) target a different installation folder and are used only for compilation (for this repository and/or when bundling the results of building this repository with other applications.)
|
||||
|
||||
There are also header-only "libraries" such as Eigen that are needed only for compilation, and do not need to be distributed with our packages.
|
||||
|
||||
To figure out which projects are in these categories, check for a CMAKE_NOBUNDLE_INSTALL_PREFIX target being used by their top level CMakeLists.txt file managing the ExternalProject_Add build definition.
|
||||
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
Right now, I don't think we're really handling switching config options
|
||||
properly. If we enable/disable individual components, dependencies using
|
||||
those components need to be reset - their old compiles will no longer be
|
||||
valid if one of their dependencies changes. We need to:
|
||||
|
||||
1. clear the bext_output directory, so the contents reflect the new
|
||||
settings rather than keeping potentially outdated files
|
||||
|
||||
2. remove old build directory contents for those projects that have
|
||||
had a dependency change status, so their compiles end up detecting
|
||||
and linking to the correct versions. We can't depend on third
|
||||
party build systems to reset everything correctly, so we need to
|
||||
start clean.
|
||||
@@ -0,0 +1,84 @@
|
||||
|
||||
bext_enable(APPLESEED)
|
||||
|
||||
if (ENABLE_APPLESEED)
|
||||
|
||||
git_submodule_init(appleseed CMakeLists.txt)
|
||||
|
||||
RegisterDeps(APPLESEED)
|
||||
if (TARGET ZLIB_BLD)
|
||||
set(Z_PREFIX_STR "brl_")
|
||||
endif (TARGET ZLIB_BLD)
|
||||
|
||||
ExternalProject_Add(APPLESEED_BLD
|
||||
SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/appleseed"
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
#PATCH_COMMAND ${PATCH_EXECUTABLE};-E;-p1;${PATCH_OPTIONS};-i;${CMAKE_CURRENT_SOURCE_DIR}/appleseed.patch
|
||||
CMAKE_ARGS
|
||||
${BUILD_TYPE_SPECIFIER}
|
||||
$<$<BOOL:${ZLIB_TARGET}>:-DZ_PREFIX=ON>
|
||||
$<$<BOOL:${ZLIB_TARGET}>:-DZ_PREFIX_STR=${Z_PREFIX_STR}>
|
||||
-DBOOST_ROOT=$<$<BOOL:${BOOST_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DEigen3_ROOT=$<$<BOOL:${EIGEN_BUNDLED}>:${CMAKE_NOBUNDLE_INSTALL_PREFIX}>
|
||||
-DEMBREE_ROOT=$<$<BOOL:${EMBREE_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DISPC_ROOT=$<$<BOOL:${ISPC_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DTBB_ROOT=$<$<BOOL:${TBB_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DJPEG_ROOT=$<$<BOOL:${JPEG_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DPNG_ROOT=$<$<BOOL:${PNG_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DTIFF_ROOT=$<$<BOOL:${TIFF_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DLLVM_ROOT=$<$<BOOL:${LLVM_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DLZ4_ROOT=$<$<BOOL:${LZ4_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DOPENCOLORIO_ROOT=$<$<BOOL:${OPENCOLORIO_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DOPENEXR_ROOT=$<$<BOOL:${OPENEXR_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DOPENIMAGEIO_ROOT=$<$<BOOL:${OPENIMAGEIO_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DOSL_ROOT=$<$<BOOL:${OSL_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DXERCES_C_ROOT=$<$<BOOL:${XERCES_C_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DZLIB_C_ROOT=$<$<BOOL:${ZLIB_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DWITH_STUDIO=OFF
|
||||
-DWITH_BENCH=OFF
|
||||
-DWITH_TOOLS=OFF
|
||||
-DWITH_PYTHON2_BINDINGS=OFF
|
||||
-DWITH_PYTHON3_BINDINGS=OFF
|
||||
-DINSTALL_TESTS=OFF
|
||||
-DINSTALL_API_EXAMPLES=OFF
|
||||
-DUSE_FIND_PACKAGE_FOR_EMBREE=ON
|
||||
-DUSE_FIND_PACKAGE_FOR_EXR=ON
|
||||
-DUSE_FIND_PACKAGE_FOR_LZ4=ON
|
||||
-DUSE_FIND_PACKAGE_FOR_OCIO=ON
|
||||
-DUSE_FIND_PACKAGE_FOR_OIIO=ON
|
||||
-DUSE_FIND_PACKAGE_FOR_OSL=ON
|
||||
-DUSE_FIND_PACKAGE_FOR_XERCES=ON
|
||||
-DUSE_FIND_PACKAGE_FOR_ZLIB=ON
|
||||
-DBIN_DIR=${BIN_DIR}
|
||||
-DLIB_DIR=${LIB_DIR}
|
||||
-DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS}
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_BUNDLE_INSTALL_PREFIX}
|
||||
-DCMAKE_INSTALL_LIBDIR:PATH=${LIB_DIR}
|
||||
-DCMAKE_INSTALL_RPATH=${CMAKE_BUNDLE_INSTALL_PREFIX}/${LIB_DIR}
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(APPLESEED APPLESEED_DEPENDS)
|
||||
|
||||
# Copy the license into position in CMAKE_BUNDLE_INSTALL_PREFIX
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/appleseed/LICENSE.txt
|
||||
${DOC_LICENSE_DIR}/appleseed.txt
|
||||
COPYONLY
|
||||
)
|
||||
|
||||
endif (ENABLE_APPLESEED)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
|
||||
Submodule
+1
Submodule appleseed/appleseed added at 05e66fd424
@@ -0,0 +1,17 @@
|
||||
BOOST
|
||||
EIGEN
|
||||
EMBREE
|
||||
JPEG
|
||||
LLVM
|
||||
LZ4
|
||||
ONETBB
|
||||
OPENCOLORIO
|
||||
OPENEXR
|
||||
OPENIMAGEIO
|
||||
OSL
|
||||
PATCH
|
||||
PNG
|
||||
TIFF
|
||||
XERCES_C
|
||||
ZLIB
|
||||
|
||||
@@ -0,0 +1,66 @@
|
||||
# Decide if we're using assetimport - used by Manifold which is used by librt.
|
||||
# Also, assetimport is used directly by a libgcv plugin
|
||||
cad_enable(ASSETIMPORT "librt;libgcv")
|
||||
|
||||
bext_enable(ASSETIMPORT)
|
||||
|
||||
# Decision made
|
||||
|
||||
if (ENABLE_ASSETIMPORT)
|
||||
|
||||
git_submodule_init(assimp CMakeLists.txt)
|
||||
|
||||
RegisterDeps(ASSETIMPORT)
|
||||
if (TARGET ZLIB_BLD)
|
||||
set(ZLIB_TARGET ZLIB_BLD)
|
||||
endif (TARGET ZLIB_BLD)
|
||||
|
||||
ExternalProject_Add(ASSETIMPORT_BLD
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/assimp"
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
PATCH_COMMAND ${PATCH_EXECUTABLE};-E;-p1;${PATCH_OPTIONS};-i;${CMAKE_CURRENT_SOURCE_DIR}/assetimport.patch
|
||||
CMAKE_ARGS
|
||||
${BUILD_TYPE_SPECIFIER}
|
||||
$<$<BOOL:${ZLIB_TARGET}>:-DZ_PREFIX=ON>
|
||||
$<$<BOOL:${ZLIB_TARGET}>:-DZ_PREFIX_STR=${Z_PREFIX_STR}>
|
||||
-DZLIB_ROOT=$<$<BOOL:${ZLIB_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DPUGIXML_ROOT=$<$<BOOL:${PUGIXML_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DBIN_DIR=${BIN_DIR}
|
||||
-DLIB_DIR=${LIB_DIR}
|
||||
-DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS}
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_BUNDLE_INSTALL_PREFIX}
|
||||
-DCMAKE_INSTALL_RPATH=${CMAKE_BUNDLE_INSTALL_PREFIX}/${LIB_DIR}
|
||||
-DCMAKE_INSTALL_LIBDIR:PATH=${LIB_DIR}
|
||||
-DASSIMP_BUILD_ASSIMP_TOOLS=OFF
|
||||
-DASSIMP_BUILD_TESTS=OFF
|
||||
-DASSIMP_BUILD_MINIZIP=ON
|
||||
-DASSIMP_INJECT_DEBUG_POSTFIX=OFF
|
||||
-DASSIMP_INSTALL_PDB=OFF
|
||||
DEPENDS ${ASSETIMPORT_DEPS}
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(ASSETIMPORT ASSETIMPORT_DEPENDS)
|
||||
|
||||
# Copy the license into position in CMAKE_BUNDLE_INSTALL_PREFIX
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/assimp/LICENSE
|
||||
${DOC_LICENSE_DIR}/assetimport.txt
|
||||
COPYONLY
|
||||
)
|
||||
|
||||
endif (ENABLE_ASSETIMPORT)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
PATCH
|
||||
PUGIXML
|
||||
ZLIB
|
||||
|
||||
@@ -0,0 +1,259 @@
|
||||
diff -Naur ASSETIMPORT/cmake-modules/FindZLIB.cmake ASSETIMPORT_BLD/cmake-modules/FindZLIB.cmake
|
||||
--- ASSETIMPORT/cmake-modules/FindZLIB.cmake 2024-06-25 10:10:10.163683303 -0400
|
||||
+++ ASSETIMPORT_BLD/cmake-modules/FindZLIB.cmake 2024-06-25 10:08:14.147412121 -0400
|
||||
@@ -1,48 +1,123 @@
|
||||
-#-------------------------------------------------------------------
|
||||
-# This file is part of the CMake build system for OGRE
|
||||
-# (Object-oriented Graphics Rendering Engine)
|
||||
-# For the latest info, see http://www.ogre3d.org/
|
||||
+#.rst:
|
||||
+# FindZLIB
|
||||
+# --------
|
||||
#
|
||||
-# The contents of this file are placed in the public domain. Feel
|
||||
-# free to make use of it in any way you like.
|
||||
-#-------------------------------------------------------------------
|
||||
-
|
||||
-# - Try to find ZLIB
|
||||
-# Once done, this will define
|
||||
+# Find the native ZLIB includes and library.
|
||||
#
|
||||
-# ZLIB_FOUND - system has ZLIB
|
||||
-# ZLIB_INCLUDE_DIRS - the ZLIB include directories
|
||||
-# ZLIB_LIBRARIES - link these to use ZLIB
|
||||
-
|
||||
-include(FindPkgMacros)
|
||||
-findpkg_begin(ZLIB)
|
||||
-
|
||||
-# Get path, convert backslashes as ${ENV_${var}}
|
||||
-getenv_path(ZLIB_HOME)
|
||||
-
|
||||
-# construct search paths
|
||||
-set(ZLIB_PREFIX_PATH ${ZLIB_HOME} ${ENV_ZLIB_HOME})
|
||||
-create_search_paths(ZLIB)
|
||||
-# redo search if prefix path changed
|
||||
-clear_if_changed(ZLIB_PREFIX_PATH
|
||||
- ZLIB_LIBRARY_FWK
|
||||
- ZLIB_LIBRARY_REL
|
||||
- ZLIB_LIBRARY_DBG
|
||||
- ZLIB_INCLUDE_DIR
|
||||
-)
|
||||
-
|
||||
-set(ZLIB_LIBRARY_NAMES z zlib zdll)
|
||||
-get_debug_names(ZLIB_LIBRARY_NAMES)
|
||||
-
|
||||
-use_pkgconfig(ZLIB_PKGC zzip-zlib-config)
|
||||
-
|
||||
-findpkg_framework(ZLIB)
|
||||
-
|
||||
-find_path(ZLIB_INCLUDE_DIR NAMES zlib.h HINTS ${ZLIB_INC_SEARCH_PATH} ${ZLIB_PKGC_INCLUDE_DIRS})
|
||||
-find_library(ZLIB_LIBRARY_REL NAMES ${ZLIB_LIBRARY_NAMES} HINTS ${ZLIB_LIB_SEARCH_PATH} ${ZLIB_PKGC_LIBRARY_DIRS} PATH_SUFFIXES "" release relwithdebinfo minsizerel)
|
||||
-find_library(ZLIB_LIBRARY_DBG NAMES ${ZLIB_LIBRARY_NAMES_DBG} HINTS ${ZLIB_LIB_SEARCH_PATH} ${ZLIB_PKGC_LIBRARY_DIRS} PATH_SUFFIXES "" debug)
|
||||
-
|
||||
-make_library_set(ZLIB_LIBRARY)
|
||||
-
|
||||
-findpkg_finish(ZLIB)
|
||||
+# IMPORTED Targets
|
||||
+# ^^^^^^^^^^^^^^^^
|
||||
+#
|
||||
+# This module defines :prop_tgt:`IMPORTED` target ``ZLIB::ZLIB``, if
|
||||
+# ZLIB has been found.
|
||||
+#
|
||||
+# Result Variables
|
||||
+# ^^^^^^^^^^^^^^^^
|
||||
+#
|
||||
+# This module defines the following variables:
|
||||
+#
|
||||
+# ::
|
||||
+#
|
||||
+# ZLIB_INCLUDE_DIRS - where to find zlib.h, etc.
|
||||
+# ZLIB_LIBRARIES - List of libraries when using zlib.
|
||||
+# ZLIB_FOUND - True if zlib found.
|
||||
+#
|
||||
+# ::
|
||||
+#
|
||||
+# ZLIB_VERSION_STRING - The version of zlib found (x.y.z)
|
||||
+# ZLIB_VERSION_MAJOR - The major version of zlib
|
||||
+# ZLIB_VERSION_MINOR - The minor version of zlib
|
||||
+# ZLIB_VERSION_PATCH - The patch version of zlib
|
||||
+# ZLIB_VERSION_TWEAK - The tweak version of zlib
|
||||
+#
|
||||
+# Backward Compatibility
|
||||
+# ^^^^^^^^^^^^^^^^^^^^^^
|
||||
+#
|
||||
+# The following variable are provided for backward compatibility
|
||||
+#
|
||||
+# ::
|
||||
+#
|
||||
+# ZLIB_MAJOR_VERSION - The major version of zlib
|
||||
+# ZLIB_MINOR_VERSION - The minor version of zlib
|
||||
+# ZLIB_PATCH_VERSION - The patch version of zlib
|
||||
+#
|
||||
+# Hints
|
||||
+# ^^^^^
|
||||
+#
|
||||
+# A user may set ``ZLIB_ROOT`` to a zlib installation root to tell this
|
||||
+# module where to look.
|
||||
|
||||
+#=============================================================================
|
||||
+# Copyright 2001-2011 Kitware, Inc.
|
||||
+#
|
||||
+# Distributed under the OSI-approved BSD License (the "License");
|
||||
+# see accompanying file Copyright.txt for details.
|
||||
+#
|
||||
+# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
+# See the License for more information.
|
||||
+#=============================================================================
|
||||
+# (To distribute this file outside of CMake, substitute the full
|
||||
+# License text for the above reference.)
|
||||
+
|
||||
+set(_ZLIB_SEARCHES)
|
||||
+
|
||||
+# Search ZLIB_ROOT first if it is set.
|
||||
+if(ZLIB_ROOT)
|
||||
+ set(_ZLIB_SEARCH_ROOT PATHS ${ZLIB_ROOT} NO_DEFAULT_PATH)
|
||||
+ list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_ROOT)
|
||||
+endif()
|
||||
+
|
||||
+# Normal search.
|
||||
+set(_ZLIB_SEARCH_NORMAL
|
||||
+ PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]"
|
||||
+ "$ENV{PROGRAMFILES}/zlib"
|
||||
+ )
|
||||
+list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_NORMAL)
|
||||
+
|
||||
+set(ZLIB_NAMES z_brl z zlib zdll zlib1 zlibd zlibd1)
|
||||
+
|
||||
+# Try each search configuration.
|
||||
+foreach(search ${_ZLIB_SEARCHES})
|
||||
+ find_path(ZLIB_INCLUDE_DIR NAMES zlib.h ${${search}} PATH_SUFFIXES include)
|
||||
+ find_library(ZLIB_LIBRARY NAMES ${ZLIB_NAMES} ${${search}} PATH_SUFFIXES lib)
|
||||
+endforeach()
|
||||
+
|
||||
+mark_as_advanced(ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
|
||||
+
|
||||
+if(ZLIB_INCLUDE_DIR AND EXISTS "${ZLIB_INCLUDE_DIR}/zlib.h")
|
||||
+ file(STRINGS "${ZLIB_INCLUDE_DIR}/zlib.h" ZLIB_H REGEX "^#define ZLIB_VERSION \"[^\"]*\"$")
|
||||
+
|
||||
+ string(REGEX REPLACE "^.*ZLIB_VERSION \"([0-9]+).*$" "\\1" ZLIB_VERSION_MAJOR "${ZLIB_H}")
|
||||
+ string(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_MINOR "${ZLIB_H}")
|
||||
+ string(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_PATCH "${ZLIB_H}")
|
||||
+ set(ZLIB_VERSION_STRING "${ZLIB_VERSION_MAJOR}.${ZLIB_VERSION_MINOR}.${ZLIB_VERSION_PATCH}")
|
||||
+
|
||||
+ # only append a TWEAK version if it exists:
|
||||
+ set(ZLIB_VERSION_TWEAK "")
|
||||
+ if( "${ZLIB_H}" MATCHES "ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+)")
|
||||
+ set(ZLIB_VERSION_TWEAK "${CMAKE_MATCH_1}")
|
||||
+ set(ZLIB_VERSION_STRING "${ZLIB_VERSION_STRING}.${ZLIB_VERSION_TWEAK}")
|
||||
+ endif()
|
||||
+
|
||||
+ set(ZLIB_MAJOR_VERSION "${ZLIB_VERSION_MAJOR}")
|
||||
+ set(ZLIB_MINOR_VERSION "${ZLIB_VERSION_MINOR}")
|
||||
+ set(ZLIB_PATCH_VERSION "${ZLIB_VERSION_PATCH}")
|
||||
+endif()
|
||||
+
|
||||
+# handle the QUIETLY and REQUIRED arguments and set ZLIB_FOUND to TRUE if
|
||||
+# all listed variables are TRUE
|
||||
+include(FindPackageHandleStandardArgs)
|
||||
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZLIB REQUIRED_VARS ZLIB_LIBRARY ZLIB_INCLUDE_DIR
|
||||
+ VERSION_VAR ZLIB_VERSION_STRING)
|
||||
+
|
||||
+if(ZLIB_FOUND)
|
||||
+ set(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
|
||||
+ set(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
|
||||
+
|
||||
+ if(NOT TARGET ZLIB::ZLIB)
|
||||
+ add_library(ZLIB::ZLIB UNKNOWN IMPORTED)
|
||||
+ set_target_properties(ZLIB::ZLIB PROPERTIES
|
||||
+ IMPORTED_LOCATION "${ZLIB_LIBRARY}"
|
||||
+ INTERFACE_INCLUDE_DIRECTORIES "${ZLIB_INCLUDE_DIRS}")
|
||||
+ endif()
|
||||
+endif()
|
||||
diff -Naur ASSETIMPORT/code/AssetLib/MDL/MDLFileData.h ASSETIMPORT_BLD/code/AssetLib/MDL/MDLFileData.h
|
||||
--- ASSETIMPORT/code/AssetLib/MDL/MDLFileData.h 2024-06-25 10:10:10.171683183 -0400
|
||||
+++ ASSETIMPORT_BLD/code/AssetLib/MDL/MDLFileData.h 2024-06-25 10:08:14.148412106 -0400
|
||||
@@ -876,7 +876,7 @@
|
||||
: apcOutBones(),
|
||||
iNum()
|
||||
{
|
||||
- abNeedMaterials.reserve(10);
|
||||
+ //abNeedMaterials.reserve(10);
|
||||
}
|
||||
|
||||
//! Destruction: properly delete all allocated resources
|
||||
diff -Naur ASSETIMPORT/code/CMakeLists.txt ASSETIMPORT_BLD/code/CMakeLists.txt
|
||||
--- ASSETIMPORT/code/CMakeLists.txt 2024-06-25 10:10:10.175683123 -0400
|
||||
+++ ASSETIMPORT_BLD/code/CMakeLists.txt 2024-06-25 10:08:14.149412091 -0400
|
||||
@@ -906,17 +906,18 @@
|
||||
SOURCE_GROUP( Extra FILES ${Extra_SRCS})
|
||||
|
||||
# pugixml
|
||||
-IF(ASSIMP_HUNTER_ENABLED)
|
||||
- hunter_add_package(pugixml)
|
||||
- find_package(pugixml CONFIG REQUIRED)
|
||||
-ELSE()
|
||||
- SET( Pugixml_SRCS
|
||||
- ../contrib/pugixml/src/pugiconfig.hpp
|
||||
- ../contrib/pugixml/src/pugixml.hpp
|
||||
- )
|
||||
- INCLUDE_DIRECTORIES("../contrib/pugixml/src")
|
||||
- SOURCE_GROUP( Contrib\\Pugixml FILES ${Pugixml_SRCS})
|
||||
-ENDIF()
|
||||
+#IF(ASSIMP_HUNTER_ENABLED)
|
||||
+# hunter_add_package(pugixml)
|
||||
+# find_package(pugixml CONFIG REQUIRED)
|
||||
+#ELSE()
|
||||
+# SET( Pugixml_SRCS
|
||||
+# ../contrib/pugixml/src/pugiconfig.hpp
|
||||
+# ../contrib/pugixml/src/pugixml.hpp
|
||||
+# )
|
||||
+# INCLUDE_DIRECTORIES("../contrib/pugixml/src")
|
||||
+# SOURCE_GROUP( Contrib\\Pugixml FILES ${Pugixml_SRCS})
|
||||
+#ENDIF()
|
||||
+find_package(pugixml REQUIRED)
|
||||
|
||||
# utf8
|
||||
IF(ASSIMP_HUNTER_ENABLED)
|
||||
@@ -1268,6 +1269,10 @@
|
||||
$<INSTALL_INTERFACE:${ASSIMP_INCLUDE_INSTALL_DIR}>
|
||||
)
|
||||
|
||||
+if (TARGET pugixml)
|
||||
+ set(PUGIXML_LIBRARIES pugixml)
|
||||
+endif (TARGET pugixml)
|
||||
+
|
||||
IF(ASSIMP_HUNTER_ENABLED)
|
||||
TARGET_LINK_LIBRARIES(assimp
|
||||
PUBLIC
|
||||
@@ -1289,7 +1294,7 @@
|
||||
target_link_libraries(assimp PRIVATE ${draco_LIBRARIES})
|
||||
endif()
|
||||
ELSE()
|
||||
- TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES})
|
||||
+ TARGET_LINK_LIBRARIES(assimp ${ZLIB_LIBRARIES} ${PUGIXML_LIBRARIES} ${OPENDDL_PARSER_LIBRARIES})
|
||||
if (ASSIMP_BUILD_DRACO)
|
||||
target_link_libraries(assimp ${draco_LIBRARIES})
|
||||
endif()
|
||||
@@ -1307,6 +1312,7 @@
|
||||
TARGET_LINK_LIBRARIES(assimp ${C4D_EXTRA_LIBRARIES})
|
||||
ENDIF ()
|
||||
|
||||
+if(0)
|
||||
if( MSVC )
|
||||
# in order to prevent DLL hell, each of the DLLs have to be suffixed with the major version and msvc prefix
|
||||
# CMake 3.12 added a variable for this
|
||||
@@ -1353,11 +1359,12 @@
|
||||
target_compile_definitions(assimp PUBLIC WindowsStore)
|
||||
TARGET_LINK_LIBRARIES(assimp advapi32)
|
||||
endif()
|
||||
+endif(0)
|
||||
|
||||
SET_TARGET_PROPERTIES( assimp PROPERTIES
|
||||
VERSION ${ASSIMP_VERSION}
|
||||
SOVERSION ${ASSIMP_SOVERSION} # use full version
|
||||
- OUTPUT_NAME assimp${LIBRARY_SUFFIX}
|
||||
+ #OUTPUT_NAME assimp${LIBRARY_SUFFIX}
|
||||
)
|
||||
|
||||
if (APPLE)
|
||||
Submodule
+1
Submodule assetimport/assimp added at 3783459a97
@@ -0,0 +1,56 @@
|
||||
# Astyle is not bundled with BRL-CAD - it is a source code formatting tool,
|
||||
# optionally used during compilation to validate our style guidelines.
|
||||
if (ENABLE_ALL AND NOT DEFINED ENABLE_ASTYLE)
|
||||
set(ENABLE_ASTYLE ON)
|
||||
endif (ENABLE_ALL AND NOT DEFINED ENABLE_ASTYLE)
|
||||
|
||||
if (NOT ENABLE_ASTYLE)
|
||||
|
||||
find_program(ASTYLE_EXECUTABLE astyle)
|
||||
mark_as_advanced(ASTYLE_EXECUTABLE)
|
||||
|
||||
if (NOT ASTYLE_EXECUTABLE AND NOT DEFINED ENABLE_ASTYLE)
|
||||
set(ENABLE_ASTYLE "ON" CACHE BOOL "Enable astyle build")
|
||||
endif (NOT ASTYLE_EXECUTABLE AND NOT DEFINED ENABLE_ASTYLE)
|
||||
|
||||
endif (NOT ENABLE_ASTYLE)
|
||||
set(ENABLE_ASTYLE "${ENABLE_ASTYLE}" CACHE BOOL "Enable astyle build")
|
||||
|
||||
if (ENABLE_ASTYLE)
|
||||
|
||||
git_submodule_init(astyle CMakeLists.txt)
|
||||
|
||||
RegisterDeps(ASTYLE)
|
||||
|
||||
ExternalProject_Add(ASTYLE_BLD
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/astyle"
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
PATCH_COMMAND ${PATCH_EXECUTABLE};-E;-p1;${PATCH_OPTIONS};-i;${CMAKE_CURRENT_SOURCE_DIR}/astyle.patch
|
||||
CMAKE_ARGS
|
||||
${BUILD_TYPE_SPECIFIER}
|
||||
-DBIN_DIR=${BIN_DIR}
|
||||
-DLIB_DIR=${LIB_DIR}
|
||||
-DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS}
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_NOBUNDLE_INSTALL_PREFIX}
|
||||
-DCMAKE_INSTALL_LIBDIR:PATH=${LIB_DIR}
|
||||
-DCMAKE_INSTALL_RPATH=${CMAKE_NOBUNDLE_INSTALL_PREFIX}/${LIB_DIR}
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(ASTYLE ASTYLE_DEPENDS)
|
||||
|
||||
endif (ENABLE_ASTYLE)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
|
||||
Submodule
+1
Submodule astyle/astyle added at c35f91f650
@@ -0,0 +1,2 @@
|
||||
PATCH
|
||||
|
||||
@@ -0,0 +1,76 @@
|
||||
diff -Naur astyle/build/cmake/InstallOptions.cmake ASTYLE_BLD/build/cmake/InstallOptions.cmake
|
||||
--- astyle/build/cmake/InstallOptions.cmake 2024-06-24 11:35:23.444068225 -0400
|
||||
+++ ASTYLE_BLD/build/cmake/InstallOptions.cmake 2024-06-24 11:36:14.697228521 -0400
|
||||
@@ -1,45 +1,10 @@
|
||||
-# Define install directories
|
||||
-# To uninstall 'xargs rm < install_manifest.txt'
|
||||
-# Default linux install prefix is /usr/local"
|
||||
-# This may be modified by -DCMAKE_INSTALL_PREFIX=
|
||||
-# Default Win32 install prefix is not used (C:/Program Files (x86))
|
||||
+install(TARGETS astyle
|
||||
+ LIBRARY DESTINATION lib
|
||||
+ ARCHIVE DESTINATION lib
|
||||
+ RUNTIME DESTINATION bin
|
||||
+ )
|
||||
+install(FILES ${DOCS} DESTINATION share/doc/astyle/html)
|
||||
+if (MAN)
|
||||
+ INSTALL(FILES ${MAN} DESTINATION man/man1)
|
||||
+endif (MAN)
|
||||
|
||||
-option(INSTALL_DOC ON)
|
||||
-
|
||||
-if(BUILD_SHARED_LIBS OR BUILD_STATIC_LIBS)
|
||||
- if(NOT WIN32)
|
||||
- install(TARGETS astyle DESTINATION lib)
|
||||
- endif()
|
||||
-else()
|
||||
- if(SKBUILD)
|
||||
- install(TARGETS astyle DESTINATION "${SKBUILD_SCRIPTS_DIR}")
|
||||
- if(INSTALL_DOC)
|
||||
- install(FILES ${DOCS} DESTINATION "${SKBUILD_DATA_DIR}/share/doc/astyle/html")
|
||||
- install(FILES ${MAN} DESTINATION "${SKBUILD_DATA_DIR}/share/man/man1")
|
||||
- endif()
|
||||
- elseif(WIN32)
|
||||
- set(pf86 "PROGRAMFILES(x86)")
|
||||
- set(prog_files $ENV{${pf86}})
|
||||
- if(NOT ${prog_files})
|
||||
- set(prog_files $ENV{PROGRAMFILES})
|
||||
- endif()
|
||||
- install(TARGETS astyle DESTINATION "${prog_files}/AStyle")
|
||||
- install(FILES ${DOCS} DESTINATION "${prog_files}/AStyle/doc")
|
||||
- elseif(APPLE)
|
||||
- # install to the default /usr/local/bin because of SIP restrictions
|
||||
- install(TARGETS astyle DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
|
||||
- if(INSTALL_DOC)
|
||||
- install(FILES ${DOCS} DESTINATION "${CMAKE_INSTALL_PREFIX}/share/doc/astyle/html")
|
||||
- endif()
|
||||
- else()
|
||||
- # change default to /usr/bin, the same as package installs
|
||||
- if(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
|
||||
- set(CMAKE_INSTALL_PREFIX "/usr")
|
||||
- endif()
|
||||
- install(TARGETS astyle DESTINATION "${CMAKE_INSTALL_PREFIX}/bin")
|
||||
- if(INSTALL_DOC)
|
||||
- install(FILES ${DOCS} DESTINATION "${CMAKE_INSTALL_PREFIX}/share/doc/astyle/html")
|
||||
- install(FILES ${MAN} DESTINATION "${CMAKE_INSTALL_PREFIX}/share/man/man1")
|
||||
- endif()
|
||||
- endif()
|
||||
-endif()
|
||||
diff -Naur astyle/CMakeLists.txt ASTYLE_BLD/CMakeLists.txt
|
||||
--- astyle/CMakeLists.txt 2024-06-06 01:30:44.000000000 -0400
|
||||
+++ ASTYLE_BLD/CMakeLists.txt 2024-06-28 12:11:49.297259511 -0400
|
||||
@@ -6,9 +6,13 @@
|
||||
|
||||
project(astyle CXX)
|
||||
|
||||
+set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
+set(CMAKE_CXX_STANDARD 17)
|
||||
+set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
+
|
||||
include( build/cmake/Options.cmake REQUIRED )
|
||||
include( build/cmake/CompilerOptions.cmake REQUIRED )
|
||||
-include( build/cmake/LinkerOptions.cmake REQUIRED )
|
||||
+#include( build/cmake/LinkerOptions.cmake REQUIRED )
|
||||
include( build/cmake/InstallOptions.cmake REQUIRED )
|
||||
include( build/cmake/OutputFiles.cmake REQUIRED )
|
||||
include( build/cmake/PrintInfo.cmake REQUIRED )
|
||||
@@ -0,0 +1,60 @@
|
||||
|
||||
bext_enable(Boost)
|
||||
|
||||
if (ENABLE_BOOST)
|
||||
|
||||
git_submodule_init(boost CMakeLists.txt)
|
||||
|
||||
RegisterDeps(BOOST)
|
||||
|
||||
if (TARGET ZLIB_BLD)
|
||||
set(Z_PREFIX_STR "brl_")
|
||||
endif (TARGET ZLIB_BLD)
|
||||
|
||||
|
||||
ExternalProject_Add(BOOST_BLD
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/boost"
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
PATCH_COMMAND ${PATCH_EXECUTABLE};-E;-p1;${PATCH_OPTIONS};-i;${CMAKE_CURRENT_SOURCE_DIR}/boost_cmake.patch
|
||||
CMAKE_ARGS
|
||||
${BUILD_TYPE_SPECIFIER}
|
||||
$<$<BOOL:${ZLIB_TARGET}>:-DZ_PREFIX=ON>
|
||||
$<$<BOOL:${ZLIB_TARGET}>:-DZ_PREFIX_STR=${Z_PREFIX_STR}>
|
||||
-DZLIB_ROOT=$<$<BOOL:${ZLIB_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DICU_ROOT=$<$<BOOL:${ICU_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DZSTD_ROOT=$<$<BOOL:${ZSTD_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DBOOST_IOSTREAMS_ENABLE_BZIP2=OFF
|
||||
-DBOOST_IOSTREAMS_ENABLE_LZMA=OFF
|
||||
-DBIN_DIR=${BIN_DIR}
|
||||
-DLIB_DIR=${LIB_DIR}
|
||||
-DBUILD_SHARED_LIBS=ON
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_BUNDLE_INSTALL_PREFIX}
|
||||
-DCMAKE_INSTALL_RPATH=${CMAKE_BUNDLE_INSTALL_PREFIX}/${LIB_DIR}
|
||||
-DCMAKE_INSTALL_LIBDIR:PATH=${LIB_DIR}
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(BOOST BOOST_DEPENDS)
|
||||
|
||||
# Copy the license into position in CMAKE_BUNDLE_INSTALL_PREFIX
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/boost/LICENSE_1_0.txt
|
||||
${DOC_LICENSE_DIR}/boost.txt
|
||||
COPYONLY
|
||||
)
|
||||
|
||||
endif (ENABLE_BOOST)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
|
||||
@@ -0,0 +1,54 @@
|
||||
The upstream boost repository we are using itself uses submodules (a LOT of
|
||||
them). For our fork to reference them, we'd also have to folk all (100+)
|
||||
submodules in the BRL-CAD project. In this case the main point is to have a
|
||||
CMake build of boost someone else is maintaining, so we need to work around the
|
||||
submodule issue.
|
||||
|
||||
In the BRL-CAD fork, the RELEASE branch we made has been modified to remove the
|
||||
submodules and instead check in a set of fully populated clones from the
|
||||
upstream boostorg/boost repository. The procedure was roughly:
|
||||
|
||||
Prepare the upstream repository:
|
||||
|
||||
git clone https://github.com/boostorg/boost.git
|
||||
mv boost boost_upstream
|
||||
cd boost_upstream
|
||||
git co boost-1.83.0
|
||||
git submodule update --init --recursive --depth=1
|
||||
For all the submodules (found by using "find . -name .git", excluding the top level .git folder)
|
||||
rm -rf <path_to_submodule>/.git
|
||||
cd ..
|
||||
|
||||
|
||||
Check out the BRL-CAD fork (referenced the procedure at
|
||||
https://gist.github.com/myusuf3/7f645819ded92bda6677 for part ofof this:)
|
||||
|
||||
git clone https://github.com/boostorg/boost.git
|
||||
cd boost
|
||||
git co boost-1.83.0
|
||||
git switch -c RELEASE
|
||||
git rm .gitmodules
|
||||
For all the submodules (found by using "find . -name .git", excluding the top level .git folder)
|
||||
git rm --cached <path_to_submodule>
|
||||
git commit -m "Remove submodules"
|
||||
cp -r ../boost_upstream/* .
|
||||
git add -A
|
||||
git commit -m "Populate repository with full copies of submodules"
|
||||
|
||||
For the next Boost release bump, in the release branch we'll merge the new tag,
|
||||
prepare another copy of boostorg/boost.git the same way we did above, remove the
|
||||
current files from the working copy of RELEASE (without committing), and copy in
|
||||
the new boostorg/boost contents. This will let us make a fully populated tree of
|
||||
the next release.
|
||||
|
||||
Once the upstream RELEASE branch is ready, we bump the submodule reference in this repository
|
||||
with:
|
||||
|
||||
git submodule update --remote boost (TODO - do we also need the --merge option here?)
|
||||
|
||||
Test the build. If everything works:
|
||||
|
||||
git add boost
|
||||
git commit -m "Update boost dependency to v<new version>"
|
||||
git push
|
||||
|
||||
Submodule
+1
Submodule boost/boost added at 2d59a4b188
@@ -0,0 +1,5 @@
|
||||
ICU
|
||||
PATCH
|
||||
ZLIB
|
||||
ZSTD
|
||||
|
||||
@@ -0,0 +1,591 @@
|
||||
diff -Naur boost/libs/iostreams/cmake/FindZLIB.cmake BOOST_BLD/libs/iostreams/cmake/FindZLIB.cmake
|
||||
--- boost/libs/iostreams/cmake/FindZLIB.cmake 1969-12-31 19:00:00.000000000 -0500
|
||||
+++ BOOST_BLD/libs/iostreams/cmake/FindZLIB.cmake 2023-09-19 20:06:29.832486499 -0400
|
||||
@@ -0,0 +1,123 @@
|
||||
+#.rst:
|
||||
+# FindZLIB
|
||||
+# --------
|
||||
+#
|
||||
+# Find the native ZLIB includes and library.
|
||||
+#
|
||||
+# IMPORTED Targets
|
||||
+# ^^^^^^^^^^^^^^^^
|
||||
+#
|
||||
+# This module defines :prop_tgt:`IMPORTED` target ``ZLIB::ZLIB``, if
|
||||
+# ZLIB has been found.
|
||||
+#
|
||||
+# Result Variables
|
||||
+# ^^^^^^^^^^^^^^^^
|
||||
+#
|
||||
+# This module defines the following variables:
|
||||
+#
|
||||
+# ::
|
||||
+#
|
||||
+# ZLIB_INCLUDE_DIRS - where to find zlib.h, etc.
|
||||
+# ZLIB_LIBRARIES - List of libraries when using zlib.
|
||||
+# ZLIB_FOUND - True if zlib found.
|
||||
+#
|
||||
+# ::
|
||||
+#
|
||||
+# ZLIB_VERSION_STRING - The version of zlib found (x.y.z)
|
||||
+# ZLIB_VERSION_MAJOR - The major version of zlib
|
||||
+# ZLIB_VERSION_MINOR - The minor version of zlib
|
||||
+# ZLIB_VERSION_PATCH - The patch version of zlib
|
||||
+# ZLIB_VERSION_TWEAK - The tweak version of zlib
|
||||
+#
|
||||
+# Backward Compatibility
|
||||
+# ^^^^^^^^^^^^^^^^^^^^^^
|
||||
+#
|
||||
+# The following variable are provided for backward compatibility
|
||||
+#
|
||||
+# ::
|
||||
+#
|
||||
+# ZLIB_MAJOR_VERSION - The major version of zlib
|
||||
+# ZLIB_MINOR_VERSION - The minor version of zlib
|
||||
+# ZLIB_PATCH_VERSION - The patch version of zlib
|
||||
+#
|
||||
+# Hints
|
||||
+# ^^^^^
|
||||
+#
|
||||
+# A user may set ``ZLIB_ROOT`` to a zlib installation root to tell this
|
||||
+# module where to look.
|
||||
+
|
||||
+#=============================================================================
|
||||
+# Copyright 2001-2011 Kitware, Inc.
|
||||
+#
|
||||
+# Distributed under the OSI-approved BSD License (the "License");
|
||||
+# see accompanying file Copyright.txt for details.
|
||||
+#
|
||||
+# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
+# See the License for more information.
|
||||
+#=============================================================================
|
||||
+# (To distribute this file outside of CMake, substitute the full
|
||||
+# License text for the above reference.)
|
||||
+
|
||||
+set(_ZLIB_SEARCHES)
|
||||
+
|
||||
+# Search ZLIB_ROOT first if it is set.
|
||||
+if(ZLIB_ROOT)
|
||||
+ set(_ZLIB_SEARCH_ROOT PATHS ${ZLIB_ROOT} NO_DEFAULT_PATH)
|
||||
+ list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_ROOT)
|
||||
+endif()
|
||||
+
|
||||
+# Normal search.
|
||||
+set(_ZLIB_SEARCH_NORMAL
|
||||
+ PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]"
|
||||
+ "$ENV{PROGRAMFILES}/zlib"
|
||||
+ )
|
||||
+list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_NORMAL)
|
||||
+
|
||||
+set(ZLIB_NAMES z_brl z zlib zdll zlib1 zlibd zlibd1)
|
||||
+
|
||||
+# Try each search configuration.
|
||||
+foreach(search ${_ZLIB_SEARCHES})
|
||||
+ find_path(ZLIB_INCLUDE_DIR NAMES zlib.h ${${search}} PATH_SUFFIXES include)
|
||||
+ find_library(ZLIB_LIBRARY NAMES ${ZLIB_NAMES} ${${search}} PATH_SUFFIXES lib)
|
||||
+endforeach()
|
||||
+
|
||||
+mark_as_advanced(ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
|
||||
+
|
||||
+if(ZLIB_INCLUDE_DIR AND EXISTS "${ZLIB_INCLUDE_DIR}/zlib.h")
|
||||
+ file(STRINGS "${ZLIB_INCLUDE_DIR}/zlib.h" ZLIB_H REGEX "^#define ZLIB_VERSION \"[^\"]*\"$")
|
||||
+
|
||||
+ string(REGEX REPLACE "^.*ZLIB_VERSION \"([0-9]+).*$" "\\1" ZLIB_VERSION_MAJOR "${ZLIB_H}")
|
||||
+ string(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_MINOR "${ZLIB_H}")
|
||||
+ string(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_PATCH "${ZLIB_H}")
|
||||
+ set(ZLIB_VERSION_STRING "${ZLIB_VERSION_MAJOR}.${ZLIB_VERSION_MINOR}.${ZLIB_VERSION_PATCH}")
|
||||
+
|
||||
+ # only append a TWEAK version if it exists:
|
||||
+ set(ZLIB_VERSION_TWEAK "")
|
||||
+ if( "${ZLIB_H}" MATCHES "ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+)")
|
||||
+ set(ZLIB_VERSION_TWEAK "${CMAKE_MATCH_1}")
|
||||
+ set(ZLIB_VERSION_STRING "${ZLIB_VERSION_STRING}.${ZLIB_VERSION_TWEAK}")
|
||||
+ endif()
|
||||
+
|
||||
+ set(ZLIB_MAJOR_VERSION "${ZLIB_VERSION_MAJOR}")
|
||||
+ set(ZLIB_MINOR_VERSION "${ZLIB_VERSION_MINOR}")
|
||||
+ set(ZLIB_PATCH_VERSION "${ZLIB_VERSION_PATCH}")
|
||||
+endif()
|
||||
+
|
||||
+# handle the QUIETLY and REQUIRED arguments and set ZLIB_FOUND to TRUE if
|
||||
+# all listed variables are TRUE
|
||||
+include(FindPackageHandleStandardArgs)
|
||||
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZLIB REQUIRED_VARS ZLIB_LIBRARY ZLIB_INCLUDE_DIR
|
||||
+ VERSION_VAR ZLIB_VERSION_STRING)
|
||||
+
|
||||
+if(ZLIB_FOUND)
|
||||
+ set(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
|
||||
+ set(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
|
||||
+
|
||||
+ if(NOT TARGET ZLIB::ZLIB)
|
||||
+ add_library(ZLIB::ZLIB UNKNOWN IMPORTED)
|
||||
+ set_target_properties(ZLIB::ZLIB PROPERTIES
|
||||
+ IMPORTED_LOCATION "${ZLIB_LIBRARY}"
|
||||
+ INTERFACE_INCLUDE_DIRECTORIES "${ZLIB_INCLUDE_DIRS}")
|
||||
+ endif()
|
||||
+endif()
|
||||
diff -Naur boost/libs/iostreams/CMakeLists.txt BOOST_BLD/libs/iostreams/CMakeLists.txt
|
||||
--- boost/libs/iostreams/CMakeLists.txt 2023-09-19 20:13:32.123188586 -0400
|
||||
+++ BOOST_BLD/libs/iostreams/CMakeLists.txt 2023-09-19 20:07:09.587847180 -0400
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
project(boost_iostreams VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
|
||||
|
||||
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
+
|
||||
add_library(boost_iostreams
|
||||
src/file_descriptor.cpp
|
||||
src/mapped_file.cpp
|
||||
diff -Naur boost/libs/locale/cmake/FindICU.cmake BOOST_BLD/libs/locale/cmake/FindICU.cmake
|
||||
--- boost/libs/locale/cmake/FindICU.cmake 1969-12-31 19:00:00.000000000 -0500
|
||||
+++ BOOST_BLD/libs/locale/cmake/FindICU.cmake 2023-09-19 20:12:51.128083577 -0400
|
||||
@@ -0,0 +1,436 @@
|
||||
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
+# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
+
|
||||
+#[=======================================================================[.rst:
|
||||
+FindICU
|
||||
+-------
|
||||
+
|
||||
+.. versionadded:: 3.7
|
||||
+
|
||||
+Find the International Components for Unicode (ICU) libraries and
|
||||
+programs.
|
||||
+
|
||||
+This module supports multiple components.
|
||||
+Components can include any of: ``data``, ``i18n``, ``io``, ``le``,
|
||||
+``lx``, ``test``, ``tu`` and ``uc``.
|
||||
+
|
||||
+Note that on Windows ``data`` is named ``dt`` and ``i18n`` is named
|
||||
+``in``; any of the names may be used, and the appropriate
|
||||
+platform-specific library name will be automatically selected.
|
||||
+
|
||||
+.. versionadded:: 3.11
|
||||
+ Added support for static libraries on Windows.
|
||||
+
|
||||
+This module reports information about the ICU installation in
|
||||
+several variables. General variables::
|
||||
+
|
||||
+ ICU_VERSION - ICU release version
|
||||
+ ICU_FOUND - true if the main programs and libraries were found
|
||||
+ ICU_LIBRARIES - component libraries to be linked
|
||||
+ ICU_INCLUDE_DIRS - the directories containing the ICU headers
|
||||
+
|
||||
+Imported targets::
|
||||
+
|
||||
+ ICU::<C>
|
||||
+
|
||||
+Where ``<C>`` is the name of an ICU component, for example
|
||||
+``ICU::i18n``; ``<C>`` is lower-case.
|
||||
+
|
||||
+ICU programs are reported in::
|
||||
+
|
||||
+ ICU_GENCNVAL_EXECUTABLE - path to gencnval executable
|
||||
+ ICU_ICUINFO_EXECUTABLE - path to icuinfo executable
|
||||
+ ICU_GENBRK_EXECUTABLE - path to genbrk executable
|
||||
+ ICU_ICU-CONFIG_EXECUTABLE - path to icu-config executable
|
||||
+ ICU_GENRB_EXECUTABLE - path to genrb executable
|
||||
+ ICU_GENDICT_EXECUTABLE - path to gendict executable
|
||||
+ ICU_DERB_EXECUTABLE - path to derb executable
|
||||
+ ICU_PKGDATA_EXECUTABLE - path to pkgdata executable
|
||||
+ ICU_UCONV_EXECUTABLE - path to uconv executable
|
||||
+ ICU_GENCFU_EXECUTABLE - path to gencfu executable
|
||||
+ ICU_MAKECONV_EXECUTABLE - path to makeconv executable
|
||||
+ ICU_GENNORM2_EXECUTABLE - path to gennorm2 executable
|
||||
+ ICU_GENCCODE_EXECUTABLE - path to genccode executable
|
||||
+ ICU_GENSPREP_EXECUTABLE - path to gensprep executable
|
||||
+ ICU_ICUPKG_EXECUTABLE - path to icupkg executable
|
||||
+ ICU_GENCMN_EXECUTABLE - path to gencmn executable
|
||||
+
|
||||
+ICU component libraries are reported in::
|
||||
+
|
||||
+ ICU_<C>_FOUND - ON if component was found; ``<C>`` is upper-case.
|
||||
+ ICU_<C>_LIBRARIES - libraries for component; ``<C>`` is upper-case.
|
||||
+
|
||||
+ICU datafiles are reported in::
|
||||
+
|
||||
+ ICU_MAKEFILE_INC - Makefile.inc
|
||||
+ ICU_PKGDATA_INC - pkgdata.inc
|
||||
+
|
||||
+This module reads hints about search results from::
|
||||
+
|
||||
+ ICU_ROOT - the root of the ICU installation
|
||||
+
|
||||
+The environment variable ``ICU_ROOT`` may also be used; the
|
||||
+ICU_ROOT variable takes precedence.
|
||||
+
|
||||
+The following cache variables may also be set::
|
||||
+
|
||||
+ ICU_<P>_EXECUTABLE - the path to executable <P>; ``<P>`` is upper-case.
|
||||
+ ICU_INCLUDE_DIR - the directory containing the ICU headers
|
||||
+ ICU_<C>_LIBRARY - the library for component <C>; ``<C>`` is upper-case.
|
||||
+
|
||||
+.. note::
|
||||
+
|
||||
+ In most cases none of the above variables will require setting,
|
||||
+ unless multiple ICU versions are available and a specific version
|
||||
+ is required.
|
||||
+
|
||||
+Other variables one may set to control this module are::
|
||||
+
|
||||
+ ICU_DEBUG - Set to ON to enable debug output from FindICU.
|
||||
+#]=======================================================================]
|
||||
+
|
||||
+# Written by Roger Leigh <rleigh@codelibre.net>
|
||||
+
|
||||
+set(icu_programs
|
||||
+ gencnval
|
||||
+ icuinfo
|
||||
+ genbrk
|
||||
+ icu-config
|
||||
+ genrb
|
||||
+ gendict
|
||||
+ derb
|
||||
+ pkgdata
|
||||
+ uconv
|
||||
+ gencfu
|
||||
+ makeconv
|
||||
+ gennorm2
|
||||
+ genccode
|
||||
+ gensprep
|
||||
+ icupkg
|
||||
+ gencmn)
|
||||
+
|
||||
+set(icu_data
|
||||
+ Makefile.inc
|
||||
+ pkgdata.inc)
|
||||
+
|
||||
+# The ICU checks are contained in a function due to the large number
|
||||
+# of temporary variables needed.
|
||||
+function(_ICU_FIND)
|
||||
+ # Set up search paths, taking compiler into account. Search ICU_ROOT,
|
||||
+ # with ICU_ROOT in the environment as a fallback if unset.
|
||||
+ if(ICU_ROOT)
|
||||
+ list(APPEND icu_roots "${ICU_ROOT}")
|
||||
+ else()
|
||||
+ if(NOT "$ENV{ICU_ROOT}" STREQUAL "")
|
||||
+ file(TO_CMAKE_PATH "$ENV{ICU_ROOT}" NATIVE_PATH)
|
||||
+ list(APPEND icu_roots "${NATIVE_PATH}")
|
||||
+ set(ICU_ROOT "${NATIVE_PATH}"
|
||||
+ CACHE PATH "Location of the ICU installation" FORCE)
|
||||
+ endif()
|
||||
+ endif()
|
||||
+
|
||||
+ # Find include directory
|
||||
+ list(APPEND icu_include_suffixes "include")
|
||||
+ find_path(ICU_INCLUDE_DIR
|
||||
+ NAMES "unicode/utypes.h"
|
||||
+ HINTS ${icu_roots}
|
||||
+ PATH_SUFFIXES ${icu_include_suffixes}
|
||||
+ DOC "ICU include directory")
|
||||
+ set(ICU_INCLUDE_DIR "${ICU_INCLUDE_DIR}" PARENT_SCOPE)
|
||||
+
|
||||
+ # Get version
|
||||
+ if(ICU_INCLUDE_DIR AND EXISTS "${ICU_INCLUDE_DIR}/unicode/uvernum.h")
|
||||
+ file(STRINGS "${ICU_INCLUDE_DIR}/unicode/uvernum.h" icu_header_str
|
||||
+ REGEX "^#define[\t ]+U_ICU_VERSION[\t ]+\".*\".*")
|
||||
+
|
||||
+ string(REGEX REPLACE "^#define[\t ]+U_ICU_VERSION[\t ]+\"([^ \\n]*)\".*"
|
||||
+ "\\1" icu_version_string "${icu_header_str}")
|
||||
+ set(ICU_VERSION "${icu_version_string}")
|
||||
+ set(ICU_VERSION "${icu_version_string}" PARENT_SCOPE)
|
||||
+ unset(icu_header_str)
|
||||
+ unset(icu_version_string)
|
||||
+ endif()
|
||||
+
|
||||
+ if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
+ # 64-bit binary directory
|
||||
+ set(_bin64 "bin64")
|
||||
+ # 64-bit library directory
|
||||
+ set(_lib64 "lib64")
|
||||
+ endif()
|
||||
+
|
||||
+
|
||||
+ # Find all ICU programs
|
||||
+ list(APPEND icu_binary_suffixes "${_bin64}" "bin" "sbin")
|
||||
+ foreach(program ${icu_programs})
|
||||
+ string(TOUPPER "${program}" program_upcase)
|
||||
+ set(cache_var "ICU_${program_upcase}_EXECUTABLE")
|
||||
+ set(program_var "ICU_${program_upcase}_EXECUTABLE")
|
||||
+ find_program("${cache_var}"
|
||||
+ NAMES "${program}"
|
||||
+ HINTS ${icu_roots}
|
||||
+ PATH_SUFFIXES ${icu_binary_suffixes}
|
||||
+ DOC "ICU ${program} executable"
|
||||
+ NO_PACKAGE_ROOT_PATH
|
||||
+ )
|
||||
+ mark_as_advanced("${cache_var}")
|
||||
+ set("${program_var}" "${${cache_var}}" PARENT_SCOPE)
|
||||
+ endforeach()
|
||||
+
|
||||
+ # Find all ICU libraries
|
||||
+ list(APPEND icu_library_suffixes "${_lib64}" "lib")
|
||||
+ set(ICU_REQUIRED_LIBS_FOUND ON)
|
||||
+ set(static_prefix )
|
||||
+ # static icu libraries compiled with MSVC have the prefix 's'
|
||||
+ if(MSVC)
|
||||
+ set(static_prefix "s")
|
||||
+ endif()
|
||||
+ foreach(component ${ICU_FIND_COMPONENTS})
|
||||
+ string(TOUPPER "${component}" component_upcase)
|
||||
+ set(component_cache "ICU_${component_upcase}_LIBRARY")
|
||||
+ set(component_cache_release "${component_cache}_RELEASE")
|
||||
+ set(component_cache_debug "${component_cache}_DEBUG")
|
||||
+ set(component_found "ICU_${component_upcase}_FOUND")
|
||||
+ set(component_found_compat "${component_upcase}_FOUND")
|
||||
+ set(component_libnames "icu${component}")
|
||||
+ set(component_debug_libnames "icu${component}d")
|
||||
+
|
||||
+ # Special case deliberate library naming mismatches between Unix
|
||||
+ # and Windows builds
|
||||
+ unset(component_libnames)
|
||||
+ unset(component_debug_libnames)
|
||||
+ list(APPEND component_libnames "icu${component}")
|
||||
+ list(APPEND component_debug_libnames "icu${component}d")
|
||||
+ if(component STREQUAL "data")
|
||||
+ list(APPEND component_libnames "icudt")
|
||||
+ # Note there is no debug variant at present
|
||||
+ list(APPEND component_debug_libnames "icudtd")
|
||||
+ endif()
|
||||
+ if(component STREQUAL "dt")
|
||||
+ list(APPEND component_libnames "icudata")
|
||||
+ # Note there is no debug variant at present
|
||||
+ list(APPEND component_debug_libnames "icudatad")
|
||||
+ endif()
|
||||
+ if(component STREQUAL "i18n")
|
||||
+ list(APPEND component_libnames "icuin")
|
||||
+ list(APPEND component_debug_libnames "icuind")
|
||||
+ endif()
|
||||
+ if(component STREQUAL "in")
|
||||
+ list(APPEND component_libnames "icui18n")
|
||||
+ list(APPEND component_debug_libnames "icui18nd")
|
||||
+ endif()
|
||||
+
|
||||
+ if(static_prefix)
|
||||
+ unset(static_component_libnames)
|
||||
+ unset(static_component_debug_libnames)
|
||||
+ foreach(component_libname ${component_libnames})
|
||||
+ list(APPEND static_component_libnames
|
||||
+ ${static_prefix}${component_libname})
|
||||
+ endforeach()
|
||||
+ foreach(component_libname ${component_debug_libnames})
|
||||
+ list(APPEND static_component_debug_libnames
|
||||
+ ${static_prefix}${component_libname})
|
||||
+ endforeach()
|
||||
+ list(APPEND component_libnames ${static_component_libnames})
|
||||
+ list(APPEND component_debug_libnames ${static_component_debug_libnames})
|
||||
+ endif()
|
||||
+ find_library("${component_cache_release}"
|
||||
+ NAMES ${component_libnames}
|
||||
+ HINTS ${icu_roots}
|
||||
+ PATH_SUFFIXES ${icu_library_suffixes}
|
||||
+ DOC "ICU ${component} library (release)"
|
||||
+ NO_PACKAGE_ROOT_PATH
|
||||
+ )
|
||||
+ find_library("${component_cache_debug}"
|
||||
+ NAMES ${component_debug_libnames}
|
||||
+ HINTS ${icu_roots}
|
||||
+ PATH_SUFFIXES ${icu_library_suffixes}
|
||||
+ DOC "ICU ${component} library (debug)"
|
||||
+ NO_PACKAGE_ROOT_PATH
|
||||
+ )
|
||||
+ include(SelectLibraryConfigurations)
|
||||
+ select_library_configurations(ICU_${component_upcase})
|
||||
+ mark_as_advanced("${component_cache_release}" "${component_cache_debug}")
|
||||
+ if(${component_cache})
|
||||
+ set("${component_found}" ON)
|
||||
+ set("${component_found_compat}" ON)
|
||||
+ list(APPEND ICU_LIBRARY "${${component_cache}}")
|
||||
+ if (ICU_FIND_REQUIRED_${component})
|
||||
+ list(APPEND ICU_LIBS_FOUND "${component} (required): ${${component_cache}}")
|
||||
+ else()
|
||||
+ list(APPEND ICU_LIBS_FOUND "${component} (optional): ${${component_cache}}")
|
||||
+ endif()
|
||||
+ else()
|
||||
+ if (ICU_FIND_REQUIRED_${component})
|
||||
+ set(ICU_REQUIRED_LIBS_FOUND OFF)
|
||||
+ list(APPEND ICU_LIBS_NOTFOUND "${component} (required)")
|
||||
+ else()
|
||||
+ list(APPEND ICU_LIBS_NOTFOUND "${component} (optional)")
|
||||
+ endif()
|
||||
+ endif()
|
||||
+ mark_as_advanced("${component_found}")
|
||||
+ mark_as_advanced("${component_found_compat}")
|
||||
+ set("${component_cache}" "${${component_cache}}" PARENT_SCOPE)
|
||||
+ set("${component_found}" "${${component_found}}" PARENT_SCOPE)
|
||||
+ set("${component_found_compat}" "${${component_found_compat}}" PARENT_SCOPE)
|
||||
+ endforeach()
|
||||
+ set(_ICU_REQUIRED_LIBS_FOUND "${ICU_REQUIRED_LIBS_FOUND}" PARENT_SCOPE)
|
||||
+ set(ICU_LIBRARY "${ICU_LIBRARY}" PARENT_SCOPE)
|
||||
+
|
||||
+ # Find all ICU data files
|
||||
+ if(CMAKE_LIBRARY_ARCHITECTURE)
|
||||
+ list(APPEND icu_data_suffixes
|
||||
+ "${_lib64}/${CMAKE_LIBRARY_ARCHITECTURE}/icu/${ICU_VERSION}"
|
||||
+ "lib/${CMAKE_LIBRARY_ARCHITECTURE}/icu/${ICU_VERSION}"
|
||||
+ "${_lib64}/${CMAKE_LIBRARY_ARCHITECTURE}/icu"
|
||||
+ "lib/${CMAKE_LIBRARY_ARCHITECTURE}/icu")
|
||||
+ endif()
|
||||
+ list(APPEND icu_data_suffixes
|
||||
+ "${_lib64}/icu/${ICU_VERSION}"
|
||||
+ "lib/icu/${ICU_VERSION}"
|
||||
+ "${_lib64}/icu"
|
||||
+ "lib/icu")
|
||||
+ foreach(data ${icu_data})
|
||||
+ string(TOUPPER "${data}" data_upcase)
|
||||
+ string(REPLACE "." "_" data_upcase "${data_upcase}")
|
||||
+ set(cache_var "ICU_${data_upcase}")
|
||||
+ set(data_var "ICU_${data_upcase}")
|
||||
+ find_file("${cache_var}"
|
||||
+ NAMES "${data}"
|
||||
+ HINTS ${icu_roots}
|
||||
+ PATH_SUFFIXES ${icu_data_suffixes}
|
||||
+ DOC "ICU ${data} data file")
|
||||
+ mark_as_advanced("${cache_var}")
|
||||
+ set("${data_var}" "${${cache_var}}" PARENT_SCOPE)
|
||||
+ endforeach()
|
||||
+
|
||||
+ if(NOT ICU_FIND_QUIETLY)
|
||||
+ if(ICU_LIBS_FOUND)
|
||||
+ message(STATUS "Found the following ICU libraries:")
|
||||
+ foreach(found ${ICU_LIBS_FOUND})
|
||||
+ message(STATUS " ${found}")
|
||||
+ endforeach()
|
||||
+ endif()
|
||||
+ if(ICU_LIBS_NOTFOUND)
|
||||
+ message(STATUS "The following ICU libraries were not found:")
|
||||
+ foreach(notfound ${ICU_LIBS_NOTFOUND})
|
||||
+ message(STATUS " ${notfound}")
|
||||
+ endforeach()
|
||||
+ endif()
|
||||
+ endif()
|
||||
+
|
||||
+ if(ICU_DEBUG)
|
||||
+ message(STATUS "--------FindICU.cmake search debug--------")
|
||||
+ message(STATUS "ICU binary path search order: ${icu_roots}")
|
||||
+ message(STATUS "ICU include path search order: ${icu_roots}")
|
||||
+ message(STATUS "ICU library path search order: ${icu_roots}")
|
||||
+ message(STATUS "----------------")
|
||||
+ endif()
|
||||
+endfunction()
|
||||
+
|
||||
+_ICU_FIND()
|
||||
+
|
||||
+include(FindPackageHandleStandardArgs)
|
||||
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(ICU
|
||||
+ FOUND_VAR ICU_FOUND
|
||||
+ REQUIRED_VARS ICU_INCLUDE_DIR
|
||||
+ ICU_LIBRARY
|
||||
+ _ICU_REQUIRED_LIBS_FOUND
|
||||
+ VERSION_VAR ICU_VERSION
|
||||
+ FAIL_MESSAGE "Failed to find all ICU components")
|
||||
+
|
||||
+unset(_ICU_REQUIRED_LIBS_FOUND)
|
||||
+
|
||||
+if(ICU_FOUND)
|
||||
+ set(ICU_INCLUDE_DIRS "${ICU_INCLUDE_DIR}")
|
||||
+ set(ICU_LIBRARIES "${ICU_LIBRARY}")
|
||||
+ foreach(_ICU_component ${ICU_FIND_COMPONENTS})
|
||||
+ string(TOUPPER "${_ICU_component}" _ICU_component_upcase)
|
||||
+ set(_ICU_component_cache "ICU_${_ICU_component_upcase}_LIBRARY")
|
||||
+ set(_ICU_component_cache_release "ICU_${_ICU_component_upcase}_LIBRARY_RELEASE")
|
||||
+ set(_ICU_component_cache_debug "ICU_${_ICU_component_upcase}_LIBRARY_DEBUG")
|
||||
+ set(_ICU_component_lib "ICU_${_ICU_component_upcase}_LIBRARIES")
|
||||
+ set(_ICU_component_found "ICU_${_ICU_component_upcase}_FOUND")
|
||||
+ set(_ICU_imported_target "ICU::${_ICU_component}")
|
||||
+ if(${_ICU_component_found})
|
||||
+ set("${_ICU_component_lib}" "${${_ICU_component_cache}}")
|
||||
+ if(NOT TARGET ${_ICU_imported_target})
|
||||
+ add_library(${_ICU_imported_target} UNKNOWN IMPORTED)
|
||||
+ if(ICU_INCLUDE_DIR)
|
||||
+ set_target_properties(${_ICU_imported_target} PROPERTIES
|
||||
+ INTERFACE_INCLUDE_DIRECTORIES "${ICU_INCLUDE_DIR}")
|
||||
+ endif()
|
||||
+ if(EXISTS "${${_ICU_component_cache}}")
|
||||
+ set_target_properties(${_ICU_imported_target} PROPERTIES
|
||||
+ IMPORTED_LINK_INTERFACE_LANGUAGES "CXX"
|
||||
+ IMPORTED_LOCATION "${${_ICU_component_cache}}")
|
||||
+ endif()
|
||||
+ if(EXISTS "${${_ICU_component_cache_release}}")
|
||||
+ set_property(TARGET ${_ICU_imported_target} APPEND PROPERTY
|
||||
+ IMPORTED_CONFIGURATIONS RELEASE)
|
||||
+ set_target_properties(${_ICU_imported_target} PROPERTIES
|
||||
+ IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "CXX"
|
||||
+ IMPORTED_LOCATION_RELEASE "${${_ICU_component_cache_release}}")
|
||||
+ endif()
|
||||
+ if(EXISTS "${${_ICU_component_cache_debug}}")
|
||||
+ set_property(TARGET ${_ICU_imported_target} APPEND PROPERTY
|
||||
+ IMPORTED_CONFIGURATIONS DEBUG)
|
||||
+ set_target_properties(${_ICU_imported_target} PROPERTIES
|
||||
+ IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "CXX"
|
||||
+ IMPORTED_LOCATION_DEBUG "${${_ICU_component_cache_debug}}")
|
||||
+ endif()
|
||||
+ if(CMAKE_DL_LIBS AND _ICU_component STREQUAL "uc")
|
||||
+ set_target_properties(${_ICU_imported_target} PROPERTIES
|
||||
+ INTERFACE_LINK_LIBRARIES "${CMAKE_DL_LIBS}")
|
||||
+ endif()
|
||||
+ endif()
|
||||
+ endif()
|
||||
+ unset(_ICU_component_upcase)
|
||||
+ unset(_ICU_component_cache)
|
||||
+ unset(_ICU_component_lib)
|
||||
+ unset(_ICU_component_found)
|
||||
+ unset(_ICU_imported_target)
|
||||
+ endforeach()
|
||||
+endif()
|
||||
+
|
||||
+if(ICU_DEBUG)
|
||||
+ message(STATUS "--------FindICU.cmake results debug--------")
|
||||
+ message(STATUS "ICU found: ${ICU_FOUND}")
|
||||
+ message(STATUS "ICU_VERSION number: ${ICU_VERSION}")
|
||||
+ message(STATUS "ICU_ROOT directory: ${ICU_ROOT}")
|
||||
+ message(STATUS "ICU_INCLUDE_DIR directory: ${ICU_INCLUDE_DIR}")
|
||||
+ message(STATUS "ICU_LIBRARIES: ${ICU_LIBRARIES}")
|
||||
+
|
||||
+ foreach(program IN LISTS icu_programs)
|
||||
+ string(TOUPPER "${program}" program_upcase)
|
||||
+ set(program_lib "ICU_${program_upcase}_EXECUTABLE")
|
||||
+ message(STATUS "${program} program: ${program_lib}=${${program_lib}}")
|
||||
+ unset(program_upcase)
|
||||
+ unset(program_lib)
|
||||
+ endforeach()
|
||||
+
|
||||
+ foreach(data IN LISTS icu_data)
|
||||
+ string(TOUPPER "${data}" data_upcase)
|
||||
+ string(REPLACE "." "_" data_upcase "${data_upcase}")
|
||||
+ set(data_lib "ICU_${data_upcase}")
|
||||
+ message(STATUS "${data} data: ${data_lib}=${${data_lib}}")
|
||||
+ unset(data_upcase)
|
||||
+ unset(data_lib)
|
||||
+ endforeach()
|
||||
+
|
||||
+ foreach(component IN LISTS ICU_FIND_COMPONENTS)
|
||||
+ string(TOUPPER "${component}" component_upcase)
|
||||
+ set(component_lib "ICU_${component_upcase}_LIBRARIES")
|
||||
+ set(component_found "ICU_${component_upcase}_FOUND")
|
||||
+ set(component_found_compat "${component_upcase}_FOUND")
|
||||
+ message(STATUS "${component} library found: ${component_found}=${${component_found}}")
|
||||
+ message(STATUS "${component} library found (compat name): ${component_found_compat}=${${component_found_compat}}")
|
||||
+ message(STATUS "${component} library: ${component_lib}=${${component_lib}}")
|
||||
+ unset(component_upcase)
|
||||
+ unset(component_lib)
|
||||
+ unset(component_found)
|
||||
+ unset(component_found_compat)
|
||||
+ endforeach()
|
||||
+ message(STATUS "----------------")
|
||||
+endif()
|
||||
+
|
||||
+unset(icu_programs)
|
||||
diff -Naur boost/libs/locale/CMakeLists.txt BOOST_BLD/libs/locale/CMakeLists.txt
|
||||
--- boost/libs/locale/CMakeLists.txt 2023-09-19 20:13:32.379183041 -0400
|
||||
+++ BOOST_BLD/libs/locale/CMakeLists.txt 2023-09-19 20:12:31.660513836 -0400
|
||||
@@ -6,6 +6,8 @@
|
||||
|
||||
project(boost_locale VERSION "${BOOST_SUPERPROJECT_VERSION}" LANGUAGES CXX)
|
||||
|
||||
+list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
|
||||
+
|
||||
# Using glob here is ok as it is only for headers
|
||||
file(GLOB_RECURSE headers include/*.hpp)
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
|
||||
bext_enable(DEFLATE)
|
||||
|
||||
if (ENABLE_DEFLATE)
|
||||
|
||||
git_submodule_init(libdeflate CMakeLists.txt)
|
||||
|
||||
RegisterDeps(DEFLATE)
|
||||
|
||||
ExternalProject_Add(DEFLATE_BLD
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/libdeflate"
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
CMAKE_ARGS
|
||||
${BUILD_TYPE_SPECIFIER}
|
||||
-DDEFLATE_BUILD_CLI=OFF
|
||||
-DBIN_DIR=${BIN_DIR}
|
||||
-DLIB_DIR=${LIB_DIR}
|
||||
-DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS}
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_BUNDLE_INSTALL_PREFIX}
|
||||
-DCMAKE_INSTALL_LIBDIR:PATH=${LIB_DIR}
|
||||
-DCMAKE_INSTALL_RPATH=${CMAKE_BUNDLE_INSTALL_PREFIX}/${LIB_DIR}
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(DEFLATE DEFLATE_DEPENDS)
|
||||
|
||||
# Copy the license into position in CMAKE_BUNDLE_INSTALL_PREFIX
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libdeflate/COPYING
|
||||
${DOC_LICENSE_DIR}/deflate.txt
|
||||
COPYONLY
|
||||
)
|
||||
|
||||
endif (ENABLE_DEFLATE)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
PATCH
|
||||
|
||||
Submodule
+1
Submodule deflate/libdeflate added at 275aa5141d
@@ -0,0 +1,299 @@
|
||||
###############################################################################
|
||||
# Applying patch files cross platform is a challenging problem due to the
|
||||
# shortage of portable tools and issues with LF vs CRLF files - see
|
||||
# https://gitlab.kitware.com/cmake/cmake/-/issues/16854 for more background on
|
||||
# this. We need to address the patch build tool first thing, since any of the
|
||||
# other ExternalProject_Add builds that follow may depend on it.
|
||||
###############################################################################
|
||||
add_project(patch)
|
||||
|
||||
###############################################################################
|
||||
# Although we have bundled flex and bison programs, they can be problematic to
|
||||
# build - they require working Autotools tool chains (except on Windows where
|
||||
# we have winflexbison). We therefore attempt these builds only if we need to.
|
||||
# This check must come after the patch subdirectory, since if we DO add_project
|
||||
# the flexbison directory it will need the patch executable.
|
||||
###############################################################################
|
||||
if (USE_APPLESEED OR USE_OSPRAY)
|
||||
|
||||
find_package(FLEX)
|
||||
|
||||
if (NOT FLEX_FOUND)
|
||||
set(ENABLE_FLEX ON)
|
||||
endif (NOT FLEX_FOUND)
|
||||
find_package(BISON)
|
||||
|
||||
if (NOT BISON_FOUND)
|
||||
set(ENABLE_BISON ON)
|
||||
endif (NOT BISON_FOUND)
|
||||
|
||||
if (ENABLE_FLEX OR ENABLE_BISON)
|
||||
add_project(flexbison GROUPS "APPLESEED;OSPRAY")
|
||||
endif (ENABLE_FLEX OR ENABLE_BISON)
|
||||
|
||||
# Whether or not we actually added the subdirectories, let subsequent targets
|
||||
# know we have handled the FLEX and BISON dependencies. Some will list these
|
||||
# as potential build targets, since we may try to compile them, but as the
|
||||
# default orientation for these is "build only if we have to" the find
|
||||
# process itself needs to satisfy the check.
|
||||
set(FLEX_ADDED 1)
|
||||
set(BISON_ADDED 1)
|
||||
|
||||
endif (USE_APPLESEED OR USE_OSPRAY)
|
||||
|
||||
###############################################################################
|
||||
# Build tools are used during compilation, but are not bundled or distributed
|
||||
# with binary packages. We group these tools here for convenience. Unlike the
|
||||
# build targets intended for distribution, these outputs are all
|
||||
# targeted to the noinstall subdirectory.
|
||||
###############################################################################
|
||||
add_project(astyle GROUPS "BRLCAD")
|
||||
add_project(lemon GROUPS "BRLCAD")
|
||||
add_project(re2c GROUPS "BRLCAD")
|
||||
add_project(perplex GROUPS "BRLCAD")
|
||||
add_project(strclear GROUPS "BRLCAD")
|
||||
add_project(xmltools GROUPS "BRLCAD_EXTRA") # Used for Docbook building
|
||||
|
||||
# RPATH editing - LIEF has the core capabilities, and plief exposes them via
|
||||
# a command line utility with patchelf compatible options, so we can drop
|
||||
# either patchelf or plief into our upstream workflows.
|
||||
add_project(lief GROUPS "BRLCAD")
|
||||
add_project(plief GROUPS "BRLCAD")
|
||||
|
||||
# Keeping this set up for easy turn-on until we're confident plief+LIEF has
|
||||
# all of our use cases covered - plief is preferred, but we've already hit
|
||||
# one case where a bug in LIEF had to be fixed.
|
||||
#add_project(patchelf GROUPS "BRLCAD")
|
||||
|
||||
###############################################################################
|
||||
# Build logic is broken out per-library, but the ordering is important. Some
|
||||
# libraries will depend on others listed here (for example, we want openNURBS
|
||||
# to use our bundled zlib if it is enabled.) Developers adding, reordering or
|
||||
# removing dependencies here need to make sure they are aware of impact they
|
||||
# may be having on other external projects in other files.
|
||||
###############################################################################
|
||||
|
||||
# zlib compression/decompression library
|
||||
# https://zlib.net
|
||||
add_project(zlib GROUPS "APPLESEED;BRLCAD;OSPRAY")
|
||||
|
||||
# zstd - fast lossless compression library
|
||||
# https://github.com/facebook/zstd
|
||||
add_project(zstd GROUPS "APPLESEED;OSPRAY")
|
||||
|
||||
# minizip-ng - zip manipulation library written in C
|
||||
# https://github.com/zlib-ng/minizip-ng
|
||||
add_project(minizip-ng GROUPS "APPLESEED")
|
||||
|
||||
# LZ4 - lossless compression algorithm
|
||||
# https://github.com/lz4/lz4
|
||||
add_project(lz4 GROUPS "APPLESEED")
|
||||
|
||||
# libdeflate fast, whole-buffer DEFLATE-based compression
|
||||
# https://github.com/ebiggers/libdeflate
|
||||
add_project(deflate GROUPS "APPLESEED")
|
||||
|
||||
# fmt - formatting library providing an alternative to C++ iostreams
|
||||
# https://github.com/fmtlib/fmt
|
||||
add_project(fmt GROUPS "APPLESEED")
|
||||
|
||||
# yaml-cpp - YAML parser and emitter in C++ matching the YAML 1.2 spec
|
||||
# https://github.com/jbeder/yaml-cpp
|
||||
add_project(yaml-cpp GROUPS "APPLESEED")
|
||||
|
||||
# pystring - collection of C++ functions which match the interface and behavior
|
||||
# of python's string class methods
|
||||
# https://github.com/imageworks/pystring
|
||||
add_project(pystring GROUPS "APPLESEED")
|
||||
|
||||
# Henry Spencer's regular expression matching library
|
||||
# https://github.com/BRL-CAD/regex
|
||||
add_project(regex GROUPS "BRLCAD")
|
||||
|
||||
# expat - library for parsing XML 1.0 Fourth Edition
|
||||
# https://github.com/libexpat/libexpat
|
||||
add_project(expat GROUPS "APPLESEED")
|
||||
|
||||
# International Components for Unicode
|
||||
# https://github.com/unicode-org/icu
|
||||
add_project(icu GROUPS "APPLESEED")
|
||||
|
||||
# Xerces-C++ - a validating XML parser
|
||||
# https://xerces.apache.org/xerces-c/
|
||||
add_project(xerces-c GROUPS "APPLESEED")
|
||||
|
||||
# Boost - C++ libraries
|
||||
# https://www.boost.org
|
||||
# https://github.com/boostorg/boost
|
||||
add_project(boost GROUPS "APPLESEED")
|
||||
|
||||
# netpbm library - support for pnm,ppm,pbm, etc. image files
|
||||
# http://netpbm.sourceforge.net/
|
||||
add_project(netpbm GROUPS "BRLCAD")
|
||||
|
||||
# libjpeg-turbo - JPEG image codec
|
||||
# https://github.com/libjpeg-turbo/libjpeg-turbo
|
||||
add_project(jpeg GROUPS "APPLESEED;GDAL")
|
||||
|
||||
# libpng - Portable Network Graphics image file support
|
||||
# http://www.libpng.org/pub/png/libpng.html
|
||||
add_project(png GROUPS "APPLESEED;BRLCAD")
|
||||
|
||||
# libtiff - Tag Image File Format (TIFF) support
|
||||
# https://libtiff.gitlab.io/libtiff/
|
||||
# https://gitlab.com/libtiff/libtiff
|
||||
add_project(tiff GROUPS "APPLESEED;GDAL")
|
||||
|
||||
# OpenEXR - EXR image storage format
|
||||
# https://openexr.com/
|
||||
# https://github.com/AcademySoftwareFoundation/openexr
|
||||
add_project(openexr GROUPS "APPLESEED")
|
||||
|
||||
# UtahRLE - Raster Image library
|
||||
# https://github.com/BRL-CAD/utahrle
|
||||
add_project(utahrle GROUPS "BRLCAD")
|
||||
|
||||
# OpenColorIO - color management
|
||||
# https://opencolorio.org
|
||||
# https://github.com/AcademySoftwareFoundation/OpenColorIO
|
||||
# Note - the VFX Reference Platform (https://vfxplatform.com/)
|
||||
# is a useful reference for what versions to expect elements
|
||||
# of the rendering pipeline software stack to use/require
|
||||
add_project(opencolorio GROUPS "APPLESEED")
|
||||
|
||||
# OpenImageIO - reading and writing images, aimed at VFX studios
|
||||
# https://github.com/OpenImageIO/oiio
|
||||
add_project(openimageio GROUPS "APPLESEED")
|
||||
|
||||
# ncurses - text-based user interfaces library
|
||||
# https://invisible-island.net/ncurses/
|
||||
add_project(ncurses GROUPS "OSPRAY")
|
||||
|
||||
# Linenoise - line editing library
|
||||
# https://github.com/msteveb/linenoise
|
||||
add_project(linenoise GROUPS "BRLCAD")
|
||||
|
||||
# Lightning Memory-Mapped Database
|
||||
# https://github.com/LMDB/lmdb
|
||||
add_project(lmdb GROUPS "BRLCAD")
|
||||
|
||||
# Eigen - linear algebra library
|
||||
# https://eigen.tuxfamily.org
|
||||
add_project(eigen GROUPS "BRLCAD;APPLESEED")
|
||||
|
||||
# oneTBB - Threading Building Blocks
|
||||
# https://github.com/oneapi-src/oneTBB
|
||||
add_project(onetbb GROUPS "APPLESEED;OSPRAY")
|
||||
|
||||
# rkcommon - C++ infrastructure and CMake utilities
|
||||
# https://github.com/ospray/rkcommon
|
||||
add_project(rkcommon GROUPS "OSPRAY")
|
||||
|
||||
# LLVM - code generation support
|
||||
# https://llvm.org/
|
||||
add_project(llvm GROUPS "APPLESEED;OSPRAY")
|
||||
|
||||
# ISPC - Implicit SPMD Program Compiler
|
||||
# https://ispc.github.io
|
||||
# https://github.com/ispc/ispc
|
||||
add_project(ispc GROUPS "OSPRAY")
|
||||
|
||||
# STEPcode - support for reading and writing STEP files
|
||||
# https://github.com/stepcode/stepcode
|
||||
add_project(stepcode GROUPS "BRLCAD_EXTRA")
|
||||
|
||||
# SQLITE3 - embeddable database
|
||||
# https://www.sqlite.org
|
||||
add_project(sqlite3 GROUPS "GDAL")
|
||||
|
||||
# PROJ - generic coordinate transformation
|
||||
# https://proj.org
|
||||
add_project(proj GROUPS "GDAL")
|
||||
|
||||
# GDAL - translator library for raster and vector geospatial data formats
|
||||
# https://gdal.org
|
||||
add_project(gdal GROUPS "GDAL")
|
||||
|
||||
# pugixml - a light-weight C++ XML processing library
|
||||
# https://pugixml.org/
|
||||
add_project(pugixml GROUPS "BRLCAD;APPLESEED")
|
||||
|
||||
# Open Asset Import Library - library for supporting I/O for a number of
|
||||
# Geometry file formats
|
||||
# https://github.com/assimp/assimp
|
||||
add_project(assetimport GROUPS "BRLCAD")
|
||||
|
||||
# OpenCV - Open Source Computer Vision Library
|
||||
# http://opencv.org
|
||||
add_project(opencv GROUPS "BRLCAD_EXTRA")
|
||||
|
||||
# GeometricTools - a collection of geometry algorithms.
|
||||
# https://github.com/davideberly/GeometricTools
|
||||
add_project(gte GROUPS "BRLCAD")
|
||||
|
||||
# Adaptive Multigrid Solvers - Poisson Surface Reconstruction code.
|
||||
# https://github.com/mkazhdan/PoissonRecon
|
||||
#add_project(poissonrecon GROUPS "BRLCAD")
|
||||
|
||||
# OpenMesh Library - library for representing and manipulating polygonal meshes
|
||||
# https://www.graphics.rwth-aachen.de/software/openmesh/
|
||||
add_project(openmesh GROUPS "BRLCAD_EXTRA")
|
||||
|
||||
# Manifold Library - used for performing boolean ops on meshes
|
||||
# https://github.com/elalish/manifold
|
||||
add_project(manifold GROUPS "BRLCAD")
|
||||
|
||||
# openNURBS - Non-Uniform Rational BSpline library
|
||||
# https://github.com/mcneel/opennurbs
|
||||
add_project(opennurbs GROUPS "BRLCAD")
|
||||
|
||||
# OSMesa - Off Screen Mesa Rendering Library
|
||||
# https://github.com/starseeker/osmesa
|
||||
add_project(osmesa GROUPS "BRLCAD")
|
||||
|
||||
# Geogram - a programming library with geometric algorithms
|
||||
# https://github.com/BrunoLevy/geogram
|
||||
add_project(geogram GROUPS "BRLCAD_EXTRA")
|
||||
|
||||
# Open Shading Language (OSL) - language for programmable shading
|
||||
# https://github.com/AcademySoftwareFoundation/OpenShadingLanguage
|
||||
#
|
||||
# TODO - need to check if https://github.com/lexxmark/winflexbison will
|
||||
# work for Windows for OSL's usage of flex/bison...
|
||||
add_project(osl GROUPS "APPLESEED")
|
||||
|
||||
# Embree raytracing kernel
|
||||
# https://github.com/embree/embree
|
||||
add_project(embree GROUPS "APPLESEED;OSPRAY")
|
||||
|
||||
# TCL - scripting language. For Tcl/Tk builds we want
|
||||
# static lib building on so we get the stub libraries.
|
||||
# https://www.tcl.tk
|
||||
set(TCL_ENABLE_TK ON CACHE BOOL "enable tk")
|
||||
add_project(tcl GROUPS "TCL")
|
||||
add_project(tk GROUPS "TCL")
|
||||
add_project(itcl GROUPS "TCL")
|
||||
add_project(itk GROUPS "TCL")
|
||||
add_project(iwidgets GROUPS "TCL")
|
||||
add_project(tkhtml GROUPS "TCL")
|
||||
add_project(tktable GROUPS "TCL")
|
||||
|
||||
# Qt - cross-platform user interface/application development toolkit
|
||||
# https://download.qt.io/archive/qt
|
||||
add_project(qt GROUPS "QT")
|
||||
|
||||
# Appleseed - global illumination rendering engine
|
||||
# https://github.com/appleseedhq/appleseed
|
||||
add_project(appleseed GROUPS "APPLESEED")
|
||||
|
||||
# OSPRay - ray tracing engine
|
||||
# https://github.com/ospray/OSPRay
|
||||
add_project(ospray GROUPS "OSPRAY")
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
|
||||
@@ -0,0 +1,167 @@
|
||||
/* D E P E N D E N C I E S . D O T
|
||||
*
|
||||
* Copyright (c) 2023 United States Government as represented by
|
||||
* the U.S. Army Research Laboratory.
|
||||
*
|
||||
* Redistribution and use in source (Graphviz format) and 'compiled'
|
||||
* forms (PDF, PostScript, HTML, RTF, etc.), with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
*
|
||||
* 1. Redistributions of source code (DOT format) must retain the
|
||||
* above copyright notice, this list of conditions and the following
|
||||
* disclaimer.
|
||||
*
|
||||
* 2. Redistributions in compiled form (transformed to other DTDs,
|
||||
* converted to PDF, PostScript, HTML, RTF, and other formats) must
|
||||
* reproduce the above copyright notice, this list of conditions and
|
||||
* the following disclaimer in the documentation and/or other
|
||||
* materials provided with the distribution.
|
||||
*
|
||||
* 3. The name of the author may not be used to endorse or promote
|
||||
* products derived from this documentation without specific prior
|
||||
* written permission.
|
||||
*
|
||||
* THIS DOCUMENTATION IS PROVIDED BY THE AUTHOR AS IS'' AND ANY
|
||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
|
||||
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
|
||||
* OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
|
||||
* BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
|
||||
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
|
||||
* USE OF THIS DOCUMENTATION, EVEN IF ADVISED OF THE POSSIBILITY OF
|
||||
* SUCH DAMAGE.
|
||||
*
|
||||
* To generate a PDF from this input, use dot:
|
||||
*
|
||||
* dot -Tpdf -o bext.pdf bext.dot
|
||||
*
|
||||
* The checked-in dependencies.dot file is a prefix - most of the relationships
|
||||
* between components come from the dependency information in the bext CMake
|
||||
* build system. The build directory should hold a bext.dot file with that
|
||||
* information populated.
|
||||
*
|
||||
* To generated the most complete DOT file, enable all build options in CMake -
|
||||
* for example: -DENABLE_ALL=ON -DUSE_APPLESEED=ON -DUSE_OSPRAY=ON
|
||||
*/
|
||||
|
||||
digraph Deps{
|
||||
|
||||
// Top level BRL-CAD node
|
||||
brlcad [color = "black", style = bold, shape = box, URL="https://github.com/BRL-CAD/brlcad", label = "BRL-CAD"];
|
||||
|
||||
// Dependency Nodes
|
||||
appleseed [color = "blue", style = bold, shape = box, URL="https://github.com/appleseedhq/appleseed", label = "Appleseed"];
|
||||
assetimport [color = "black", style = bold, shape = box, URL="https://github.com/assimp/assimp", label = "ASSIMP"];
|
||||
astyle [color = "orange", style = bold, shape = box, URL="https://astyle.sourceforge.net/", label = "AStyle"];
|
||||
bison [color = "orange", style = bold, shape = box, URL="https://www.gnu.org/software/bison", label = "Bison"];
|
||||
boost [color = "blue", style = bold, shape = box, URL="https://github.com/boostorg/boost", label = "Boost"];
|
||||
deflate [color = "blue", style = bold, shape = box, URL="https://github.com/ebiggers/libdeflate", label = "libdeflate"];
|
||||
eigen [color = "black", style = bold, shape = box, URL="https://eigen.tuxfamily.org", label = "Eigen"];
|
||||
embree [color = "blue", style = bold, shape = box, URL="https://github.com/embree/embree", label = "Embree"];
|
||||
expat [color = "blue", style = bold, shape = box, URL="https://github.com/libexpat/libexpat", label = "expat"];
|
||||
flex [color = "orange", style = bold, shape = box, URL="https://github.com/westes/flex", label = "Flex"];
|
||||
flexbison [color = "orange", style = bold, shape = box, URL="https://github.com/lexxmark/winflexbison", label = "winflexbison"];
|
||||
fmt [color = "blue", style = bold, shape = box, URL="https://github.com/fmtlib/fmt", label = "fmt"];
|
||||
gdal [color = "black", style = bold, shape = box, URL="https://gdal.org", label = "GDAL"];
|
||||
icu [color = "blue", style = bold, shape = box, URL="https://github.com/unicode-org/icu", label = "ICU"];
|
||||
ispc [color = "blue", style = bold, shape = box, URL="https://github.com/ispc/ispc", label = "ISPC"];
|
||||
itcl [color = "black", style = bold, shape = box, URL="https://core.tcl-lang.org/itcl", label = "ITcl"];
|
||||
itk [color = "black", style = bold, shape = box, URL="https://core.tcl-lang.org/itk", label = "ITk"];
|
||||
iwidgets [color = "black", style = bold, shape = box, URL="https://incrtcl.sourceforge.net/iwidgets/iwidgets.html", label = "Iwidgets"];
|
||||
jpeg [color = "blue", style = bold, shape = box, URL="https://github.com/libjpeg-turbo/libjpeg-turbo", label = "libjpeg"];
|
||||
lemon [color = "orange", style = bold, shape = box, URL="https://www.sqlite.org/src/file/tool", label = "Lemon"];
|
||||
lief [color = "orange", style = bold, shape = box, URL="https://github.com/lief-project/LIEF", label = "LIEF"];
|
||||
linenoise [color = "black", style = bold, shape = box, URL="https://github.com/msteveb/linenoise", label = "Linenoise"];
|
||||
llvm [color = "blue", style = bold, shape = box, URL="https://llvm.org", label = "LLVM"];
|
||||
lmdb [color = "black", style = bold, shape = box, URL="https://github.com/LMDB/lmdb", label = "LMDB"];
|
||||
lz4 [color = "blue", style = bold, shape = box, URL="https://github.com/lz4/lz4", label = "LZ4"];
|
||||
minizip_ng [color = "blue", style = bold, shape = box, URL="https://github.com/zlib-ng/minizip-ng", label = "minizip-ng"];
|
||||
ncurses [color = "blue", style = bold, shape = box, URL="https://invisible-island.net/ncurses", label = "ncurses"];
|
||||
netpbm [color = "black", style = bold, shape = box, URL="http://netpbm.sourceforge.net", label = "netpbm"];
|
||||
onetbb [color = "blue", style = bold, shape = box, URL="https://github.com/oneapi-src/oneTBB", label = "oneTBB"];
|
||||
opencolorio [color = "blue", style = bold, shape = box, URL="https://github.com/AcademySoftwareFoundation/OpenColorIO", label = "OpenColorIO"];
|
||||
opencv [color = "black", style = bold, shape = box, URL="http://opencv.org", label = "OpenCV"];
|
||||
openexr [color = "blue", style = bold, shape = box, URL="https://github.com/AcademySoftwareFoundation/openexr", label = "OpenEXR"];
|
||||
openimageio [color = "blue", style = bold, shape = box, URL="https://github.com/OpenImageIO/oiio", label = "OpenImageIO"];
|
||||
openmesh [color = "black", style = bold, shape = box, URL="https://www.graphics.rwth-aachen.de/software/openmesh", label = "OpenMesh"];
|
||||
opennurbs [color = "black", style = bold, shape = box, URL="https://github.com/mcneel/opennurbs", label = "openNURBS"];
|
||||
osl [color = "blue", style = bold, shape = box, URL="https://github.com/AcademySoftwareFoundation/OpenShadingLanguage", label = "OSL"];
|
||||
osmesa [color = "black", style = bold, shape = box, URL="https://github.com/starseeker/osmesa", label = "OSMesa"];
|
||||
ospray [color = "blue", style = bold, shape = box, URL="https://github.com/ospray/OSPRay", label = "OSPRay"];
|
||||
//patch [color = "orange", style = bold, shape = box, URL="https://github.com/shannonbooth/patch", label = "Patch"];
|
||||
patchelf [color = "orange", style = bold, shape = box, URL="https://github.com/NixOS/patchelf", label = "patchelf"];
|
||||
perplex [color = "orange", style = bold, shape = box, URL="https://github.com/BRL-CAD/perplex", label = "perplex"];
|
||||
plief [color = "orange", style = bold, shape = box, URL="https://github.com/BRL-CAD/plief", label = "plief"];
|
||||
png [color = "black", style = bold, shape = box, URL="http://www.libpng.org/pub/png/libpng.html", label = "libpng"];
|
||||
poly2tri [color = "black", style = bold, shape = box, URL="https://github.com/jhasse/poly2tri", label = "Poly2Tri"];
|
||||
proj [color = "black", style = bold, shape = box, URL="https://proj.org", label = "PROJ"];
|
||||
pugixml [color = "black", style = bold, shape = box, URL="https://pugixml.org", label = "pugixml"];
|
||||
pystring [color = "blue", style = bold, shape = box, URL="https://github.com/imageworks/pystring", label = "pystring"];
|
||||
qt [color = "black", style = bold, shape = box, URL="https://download.qt.io/archive/qt", label = "Qt"];
|
||||
re2c [color = "orange", style = bold, shape = box, URL="https://github.com/skvadrik/re2c", label = "re2c"];
|
||||
regex [color = "black", style = bold, shape = box, URL="https://github.com/BRL-CAD/regex", label = "regex"];
|
||||
rkcommon [color = "blue", style = bold, shape = box, URL="https://github.com/ospray/rkcommon", label = "rkcommon"];
|
||||
sqlite3 [color = "black", style = bold, shape = box, URL="https://www.sqlite.org", label = "SQLite3"];
|
||||
stepcode [color = "black", style = bold, shape = box, URL="https://github.com/stepcode/stepcode", label = "STEPcode"];
|
||||
strclear [color = "orange", style = bold, shape = box, URL="https://github.com/BRL-CAD/strclear", label = "strclear"];
|
||||
tcl [color = "black", style = bold, shape = box, URL="https://www.tcl.tk", label = "Tcl"];
|
||||
tiff [color = "blue", style = bold, shape = box, URL="https://gitlab.com/libtiff/libtiff", label = "libtiff"];
|
||||
tk [color = "black", style = bold, shape = box, URL="https://www.tcl.tk", label = "Tk"];
|
||||
tkhtml [color = "black", style = bold, shape = box, URL="https://github.com/BRL-CAD/tkhtml", label = "Tkhtml"];
|
||||
tktable [color = "black", style = bold, shape = box, URL="https://tktable.sourceforge.net", label = "Tktable"];
|
||||
utahrle [color = "black", style = bold, shape = box, URL="https://github.com/BRL-CAD/utahrle", label = "UtahRLE"];
|
||||
xerces_c [color = "blue", style = bold, shape = box, URL="https://xerces.apache.org/xerces-c", label = "Xerces-C++"];
|
||||
xmltools [color = "orange", style = bold, shape = box, URL="https://github.com/GNOME/libxml2", label = "xmltools"];
|
||||
yaml_cpp [color = "blue", style = bold, shape = box, URL="https://github.com/jbeder/yaml-cpp", label = "yaml-cpp"];
|
||||
zlib [color = "black", style = bold, shape = box, URL="https://zlib.net", label = "Zlib"];
|
||||
zstd [color = "blue", style = bold, shape = box, URL="https://github.com/facebook/zstd", label = "Zstd"];
|
||||
|
||||
iwidgets -> itk;
|
||||
itk -> itcl;
|
||||
itk -> tk;
|
||||
tk -> tcl;
|
||||
tkhtml -> tk;
|
||||
tktable -> tk;
|
||||
|
||||
ispc -> flexbison;
|
||||
osl -> flexbison;
|
||||
|
||||
brlcad -> assetimport;
|
||||
brlcad -> astyle;
|
||||
brlcad -> eigen;
|
||||
brlcad -> gdal;
|
||||
brlcad -> itcl;
|
||||
brlcad -> itk;
|
||||
brlcad -> tcl;
|
||||
brlcad -> tk;
|
||||
brlcad -> iwidgets;
|
||||
brlcad -> lemon;
|
||||
brlcad -> linenoise;
|
||||
brlcad -> lmdb;
|
||||
brlcad -> netpbm;
|
||||
brlcad -> opencv;
|
||||
brlcad -> openmesh;
|
||||
brlcad -> opennurbs;
|
||||
brlcad -> osmesa;
|
||||
brlcad -> patchelf;
|
||||
brlcad -> perplex;
|
||||
brlcad -> plief;
|
||||
brlcad -> png;
|
||||
brlcad -> poly2tri;
|
||||
brlcad -> qt;
|
||||
brlcad -> re2c;
|
||||
brlcad -> regex;
|
||||
brlcad -> stepcode;
|
||||
brlcad -> strclear;
|
||||
brlcad -> tkhtml;
|
||||
brlcad -> tktable;
|
||||
brlcad -> utahrle;
|
||||
brlcad -> xmltools;
|
||||
brlcad -> zlib;
|
||||
brlcad -> appleseed;
|
||||
brlcad -> ospray;
|
||||
|
||||
-3686
File diff suppressed because it is too large
Load Diff
-3497
File diff suppressed because it is too large
Load Diff
-1243
File diff suppressed because it is too large
Load Diff
@@ -1,261 +0,0 @@
|
||||
|
||||
# AES Encryption Information:
|
||||
Encryption Specification AE-1 and AE-2
|
||||
|
||||
**Document version: 1.04
|
||||
Last modified: January 30, 2009**
|
||||
|
||||
**NOTE: WinZip® users do not need to read or understand the information contained on this page. It is intended for developers of Zip file utilities.**
|
||||
|
||||
Changes since the original version of this document are summarized in the [Change History](https://www.winzip.com/aes_info.htm#changes) section below.
|
||||
|
||||
This document describes the file format that WinZip uses to create [AES-encrypted Zip files](https://www.winzip.com/learn/aes-encryption.html). The AE-1 encryption specification was introduced in WinZip 9.0 Beta 1, released in May 2003. The AE-2 encryption specification, a minor variant of the original AE-1 specification differing only in how the CRC is handled, was introduced in WinZip 9.0 Beta 3, released in January, 2004. Note that as of WinZip 11, WinZip itself encrypts most files using the AE-1 format and encrypts others using the AE-2 format.
|
||||
|
||||
From time to time we may update the information provided here, for example to document any changes to the file formats, or to add additional notes or implementation tips. If you would like to receive e-mail announcements of any substantive changes we make to this document, you can [sign up below](https://www.winzip.com/aes_info.htm#mailing-list)for our Developer Information mailing list.
|
||||
|
||||
Without compromising the basic Zip file format, WinZip Computing has extended the format specification to support AES encryption, and this document fully describes the format extension. Additionally, we are providing information about a no-cost third-party source for the actual AES encryption code--the same code that is used by WinZip. We believe that use of the free encryption code and of this specification will make it easy for all developers to add compatible advanced encryption to their Zip file utilities.
|
||||
|
||||
This document is not a tutorial on encryption or Zip file structure. While we have attempted to provide the necessary details of the current WinZip AES encryption format, developers and other interested third parties will need to have or obtain an understanding of basic encryption concepts, Zip file format, etc.
|
||||
|
||||
Developers should also review [AES Coding Tips](https://www.winzip.com/aes_tips.html) page.
|
||||
|
||||
WinZip Computing makes no warranties regarding the information provided in this document. In particular, WinZip Computing does not represent or warrant that the information provided here is free from errors or is suitable for any particular use, or that the file formats described here will be supported in future versions of WinZip. You should test and validate all code and techniques in accordance with good programming practice.
|
||||
|
||||
----------
|
||||
|
||||
**I. Encryption services**
|
||||
|
||||
To perform AES encryption and decryption, WinZip uses AES functions written by Dr. Brian Gladman. The source code for these functions is available in C/C++ and Pentium family assembler for anyone to use under an open source BSD or GPL license from [the AES project page](https://www.winzip.com/gladman.cgi) on Dr. Gladman's web site. The [AES Coding Tips](https://www.winzip.com/aes_tips.html) page also has some information on the use of these functions. WinZip Computing thanks Dr. Gladman for making his AES functions available to anyone under liberal license terms.
|
||||
|
||||
Dr. Gladman's encryption functions are portable to a number of operating systems and can be static linked into your applications, so there are no operating system version or library dependencies. In particular, the functions do not require Microsoft's Cryptography API.
|
||||
|
||||
General information on the AES standard and the encryption algorithm (also known as _Rijndael_) is readily available on the Internet. A good place to start is [http://www.nist.gov/public_affairs/releases/g00-176.htm](http://www.nist.gov/public_affairs/releases/g00-176.htm).
|
||||
|
||||
**II. Zip file format**
|
||||
|
||||
1. Base format reference
|
||||
|
||||
AES-encrypted files are stored within the guidelines of the standard Zip file format using only a new "extra data" field, a new compression method code, and a value in the CRC field dependant on the encryption version, AE-1 or AE-2. The basic Zip file format is otherwise unchanged.
|
||||
|
||||
WinZip sets the version needed to extract and version made by fields in the local and central headers to the same values it would use if the file were not encrypted.
|
||||
|
||||
The basic Zip file format specification used by WinZip is available via FTP from the Info-ZIP group at [ftp://ftp.info-zip.org/pub/infozip/doc/appnote-iz-latest.zip](ftp://ftp.info-zip.org/pub/infozip/doc/appnote-iz-latest.zip).
|
||||
|
||||
2. Compression method and encryption flag
|
||||
|
||||
As for any encrypted file, bit 0 of the "general purpose bit flags" field must be set to 1 in each AES-encrypted file's local header and central directory entry.
|
||||
|
||||
Additionally, the presence of an AES-encrypted file in a Zip file is indicated by a new compression method code (decimal 99) in the file's local header and central directory entry, used along with the AES extra data field described below. There is no change in either the _version made by_ or _version needed to extract_ codes.
|
||||
|
||||
The code for the actual compression method is stored in the AES extra data field (see below).
|
||||
|
||||
3. CRC value
|
||||
|
||||
For files encrypted using the AE-2 method, the standard Zip CRC value is _not_ used, and a 0 must be stored in this field. Corruption of encrypted data within a Zip file is instead detected via the [authentication code](https://www.winzip.com/aes_info.htm#authentication-code) field.
|
||||
|
||||
Files encrypted using the AE-1 method _do_ include the standard Zip CRC value. This, along with the fact that the vendor version stored in the AES extra data field is 0x0001 for AE-1 and 0x0002 for AE-2, is the only difference between the AE-1 and AE-2 formats.
|
||||
|
||||
**NOTE:** Zip utilities that support the AE-2 format are required to be able to read files that were created in the AE-1 format, and during decryption/extraction of files in AE-1 format should verify that the file's CRC matches the value stored in the CRC field.
|
||||
|
||||
4. AES extra data field
|
||||
1. A file encrypted with AES encryption will have a special "extra data" field associated with it. This extra data field is stored in both the local header and central directory entry for the file.
|
||||
|
||||
Note: see the Zip file format document referenced above for general information on the format and use of extra data fields.
|
||||
|
||||
2. The extra data header ID for AES encryption is 0x9901. The fields are all stored in Intel low-byte/high-byte order. The extra data field currently has a length of 11: seven data bytes plus two bytes for the header ID and two bytes for the data size. Therefore, the extra data overhead for each file in the archive is 22 bytes (11 bytes in the central header plus 11 bytes in the local header).
|
||||
3. The format of the data in the AES extra data field is as follows. See the notes below for additional information.
|
||||
|
||||
|**Offset**|**Size(bytes)**|**Content**|
|
||||
|:-|:-|:-|
|
||||
|0|2|Extra field header ID (0x9901)|
|
||||
|2|2|Data size (currently 7, but subject to possible increase in the future)|
|
||||
|4|2|Integer version number specific to the zip vendor|
|
||||
|6|2|2-character vendor ID|
|
||||
|8|1|Integer mode value indicating AES encryption strength|
|
||||
|9|2|The actual compression method used to compress the file|
|
||||
|
||||
4. Notes
|
||||
- **Data size**: this value is currently 7, but because it is possible that this specification will be modified in the future to store additional data in this extra field, vendors should not assume that it will always remain 7.
|
||||
- **Vendor ID**: the vendor ID field should always be set to the two ASCII characters "AE".
|
||||
- **Vendor version**: the vendor version for AE-1 is 0x0001. The vendor version for AE-2 is 0x0002.
|
||||
|
||||
Zip utilities that support AE-2 must also be able to process files that are encrypted in AE-1 format. The handling of the [CRC value](https://www.winzip.com/aes_info.htm#CRC) is the only difference between the AE-1 and AE-2 formats.
|
||||
|
||||
- **Encryption strength**: the mode values (encryption strength) for AE-1 and AE-2 are:
|
||||
|
||||
|**Value**|**Strength**|
|
||||
|-|-|
|
||||
|0x01|128-bit encryption key|
|
||||
|0x02|192-bit encryption key|
|
||||
|0x03|256-bit encryption key|
|
||||
|
||||
The encryption specification supports _only_ 128-, 192-, and 256-bit encryption keys. No other key lengths are permitted.
|
||||
|
||||
(Note: the current version of WinZip does not support encrypting files using 192-bit keys. This specification, however, does provide for the use of 192-bit keys, and WinZip is able to decrypt such files.)
|
||||
|
||||
- **Compression method**: the compression method is the one that would otherwise have been stored in the local and central headers for the file. For example, if the file is imploded, this field will contain the compression code 6. This is needed because a compression method of 99 is used to indicate the presence of an AES-encrypted file (see [above](https://www.winzip.com/aes_info.htm#comp-method)).
|
||||
|
||||
**III. Encrypted file storage format**
|
||||
|
||||
1. File format
|
||||
|
||||
Additional overhead data required for decryption is stored with the encrypted file itself (i.e., not in the headers). The actual format of the stored file is as follows; additional information about these fields is below. All fields are byte-aligned.
|
||||
|
||||
|**Size (bytes)**|**Content**|
|
||||
|:-|:-|
|
||||
|Variable|Salt value|
|
||||
|2|Password verification value|
|
||||
|Variable|Encrypted file data|
|
||||
|10|Authentication code|
|
||||
|
||||
Note that the value in the "compressed size" fields of the local file header and the central directory entry is the total size of all the items listed above. In other words, it is the total size of the salt value, password verification value, encrypted data, and authentication code.
|
||||
|
||||
2. Salt value
|
||||
|
||||
The "salt" or "salt value" is a random or pseudo-random sequence of bytes that is combined with the encryption password to create encryption and authentication keys. The salt is generated by the encrypting application and is stored unencrypted with the file data. The addition of salt values to passwords provides a number of security benefits and makes dictionary attacks based on precomputed keys much more difficult.
|
||||
|
||||
Good cryptographic practice requires that a different salt value be used for each of multiple files encrypted with the same password. If two files are encrypted with the same password and salt, they can leak information about each other. For example, it is possible to determine whether two files encrypted with the same password and salt are identical, and an attacker who somehow already knows the contents of one of two files encrypted with the same password and salt can determine some or all of the contents of the other file. Therefore, you should make every effort to use a unique salt value for each file.
|
||||
|
||||
The size of the salt value depends on the length of the encryption key, as follows:
|
||||
|
||||
|**Key size**|**Salt size**|
|
||||
|:-|:-|
|
||||
|128 bits|8 bytes|
|
||||
|192 bits|12 bytes|
|
||||
|256 bits|16 bytes|
|
||||
|
||||
3. Password verification value
|
||||
|
||||
This two-byte value is produced as part of the process that derives the encryption and decryption keys from the password. When encrypting, a verification value is derived from the encryption password and stored with the encrypted file. Before decrypting, a verification value can be derived from the decryption password and compared to the value stored with the file, serving as a quick check that will detect _most_, but not all, incorrect passwords. There is a 1 in 65,536 chance that an incorrect password will yield a matching verification value; therefore, a matching verification value cannot be absolutely relied on to indicate a correct password.
|
||||
|
||||
Information on how to obtain the password verification value from Dr. Gladman's encryption library can be found on the [coding tips](https://www.winzip.com/aes_tips.html) page.
|
||||
|
||||
This value is stored unencrypted.
|
||||
|
||||
4. Encrypted file data
|
||||
|
||||
Encryption is applied only to the content of files. It is performed after compression, and not to any other associated data. The file data is encrypted byte-for-byte using the AES encryption algorithm operating in "CTR" mode, which means that the lengths of the compressed data and the compressed, encrypted data are the same.
|
||||
|
||||
It is important for implementors to note that, although the data is encrypted byte-for-byte, it is presented to the encryption and decryption functions in blocks. The block size used for encryption and decryption must be the same. To be compatible with the encryption specification, this block size must be 16 bytes (although the last block may be smaller).
|
||||
|
||||
5. Authentication code
|
||||
|
||||
Authentication provides a high quality check that the contents of an encrypted file have not been inadvertently changed or deliberately tampered with since they were first encrypted. In effect, this is a super-CRC check on the data in the file _after_ compression and encryption. (Additionally, authentication is essential when using CTR mode encryption because this mode is vulnerable to several trivial attacks in its absence.)
|
||||
|
||||
The authentication code is derived from the output of the encryption process. [Dr. Gladman's AES code](https://www.winzip.com/aes_info.htm#encryption) provides this service, and information about how to obtain it is in the [coding tips](https://www.winzip.com/aes_tips.html).
|
||||
|
||||
The authentication code is stored unencrypted. It is byte-aligned and immediately follows the last byte of encrypted data.
|
||||
|
||||
For more discussion about authentication, see the [authentication code FAQ](https://www.winzip.com/aes_info.htm#auth-faq) below.
|
||||
|
||||
|
||||
**IV. Changes in WinZip 11**
|
||||
|
||||
Beginning with WinZip 11, WinZip makes a change in its use of the AE-1 and AE-2 file formats. The file formats themselves have not changed, and AES-encrypted files created by WinZip 11 are completely compatible with version 1.02 the WinZip AES encryption specification, which was published in January 2004.
|
||||
|
||||
[WinZip 9.0](https://www.winzip.com/win/en/winzip-9.html) and [WinZip 10.0](https://www.winzip.com/win/en/winzip-10.html) stored all AES-encrypted files using the AE-2 file format, which does not store the encrypted file's CRC. WinZip 11 instead uses the AE-1 file format, which does store the CRC, for most files. This provides an extra integrity check against the possibility of hardware or software errors that occur during the actual process of [file compression/encryption](https://www.winzip.com/win/en/features/data-protection.html) or decryption/decompression. For more information on this point, see the discussion of the [CRC](https://www.winzip.com/aes_info.htm#crc-faq) below.
|
||||
|
||||
Because for some very small files the CRC can be used to determine the exact contents of a file, regardless of the encryption method used, WinZip 11 continues to use the AE-2 file format, with no CRC stored, for files with an uncompressed size of less than 20 bytes. WinZip 11 also uses the AE-2 file format for files compressed in BZIP2 format, because the BZIP2 format contains its own integrity checks equivalent to those provided by the Zip format's CRC.
|
||||
|
||||
Other vendors who support WinZip's AES encryption specification may want to consider making a similar change to their own implementations of the specification, to get the benefit of the extra integrity check that it provides.
|
||||
|
||||
Note that the January 2004 version of the WinZip AE-2 specification, version 1.0.2, already required that all utilities that implemented the AE-2 format also be able to process files in AE-1 format, and should check on decryption/extraction of those files that the CRC was correct.
|
||||
|
||||
**V. Notes**
|
||||
|
||||
1. Non-files and zero-length files
|
||||
|
||||
To reduce Zip file size, it is recommended that non-file entries such as folder/directory entries not be encrypted. This, however, is only a recommendation; it is permissible to encrypt or not encrypt these entries, as you prefer.
|
||||
|
||||
On the other hand, it is recommended that you _do_ encrypt zero-length files. The presence of both encrypted and unencrypted files in a Zip file may trigger user warnings in some Zip file utilities, so the user experience may be improved if all files (including zero-length files) are encrypted.
|
||||
|
||||
If zero-length files are encrypted, the encrypted data portion of the file storage (see [above](https://www.winzip.com/aes_info.htm#encrypted-data)) will be empty, but the remainder of the encryption overhead data must be present, both in the file storage area and in the local and central headers.
|
||||
|
||||
2. "Mixed" Zip files
|
||||
|
||||
There is no requirement that all files in a Zip file be encrypted or that all files that _are_ encrypted use the same encryption method or the same password.
|
||||
|
||||
A Zip file can contain any combination of unencrypted files and files encrypted with any of the four currently defined encryption methods (Zip 2.0, AES-128, AES-192, AES-256). Encrypted files may use the same password or different passwords.
|
||||
|
||||
3. Key Generation
|
||||
|
||||
Key derivation, as used by AE-1 and AE-2 and as implemented in Dr. Gladman's library, is done according to the PBKDF2 algorithm, which is described in the [RFC2898](http://www.faqs.org/rfcs/rfc2898.html) guidelines. An iteration count of 1000 is used. An appropriate number of bits from the resulting hash value are used to compose three output values: an encryption key, an authentication key, and a password verification value. The first _n_ bits become the encryption key, the next _m_ bits become the authentication key, and the last 16 bits (two bytes) become the password verification value.
|
||||
|
||||
As part of the process outlined in RFC 2898 a pseudo-random function must be called; AE-2 uses the HMAC-SHA1 function, since it is a well-respected algorithm that has been in wide use for this purpose for several years.
|
||||
|
||||
Note that, when used in connection with 192- or 256-bit AES encryption, the fact that HMAC-SHA1 produces a 160-bit result means that, regardless of the password that you specify, the search space for the encryption key is unlikely to reach the theoretical 192- or 256-bit maximum, and cannot be guaranteed to exceed 160 bits. This is discussed in section B.1.1 of the [RFC2898 specification](http://www.faqs.org/rfcs/rfc2898.html).
|
||||
|
||||
|
||||
**VI. FAQs**
|
||||
|
||||
- **Why is the compression method field used to indicate AES encryption?**
|
||||
|
||||
As opposed to using new _version made by_ and _version needed to extract_ values to signal AES encryption for a file, the new compression method is more likely to be handled gracefully by older versions of existing Zip file utilities. Zip file utilities typically do not attempt to extract files compressed with unknown methods, presumably notifying the user with an appropriate message.
|
||||
|
||||
- **How can I guarantee that the salt value is unique?**
|
||||
|
||||
In principle, the value of the salt should be different whenever the same password is used more than once, for the reasons described [above](https://www.winzip.com/aes_info.htm#salt), but this is difficult to guarantee.
|
||||
|
||||
In practice, the number of bytes in the salt (as specified by AE-1 and AE-2) is such that using a pseudo-random value will ensure that the probability of duplicated salt values is very low and can be safely ignored.
|
||||
|
||||
There is one exception to this: With the 8-byte salt values used with WinZip's 128-bit encryption it is likely that, if approximately 4 billion files are encrypted with the same password, two of the files will have the same salt, so it is advisable to stay well below this limit. Because of this, when using the same password to encrypt very large numbers of files in WinZip's AES encryption format (that is, files totalling in the millions, for example 2000 Zip files, each containing 1000 encrypted files), we recommend the use of 192-bit or 256-bit AES keys, with their 12- and 16-byte salt values, rather than 128-bit AES keys, with their 8-byte salt values.
|
||||
|
||||
Although salt values do not need to be truly random, it is important that they be generated in a way that the probability of duplicated salt values is not significantly higher than that which would be expected if truly random values were being used.
|
||||
|
||||
One technique for generating salt values is presented in the [coding tips](https://www.winzip.com/aes_tips.html#prng) page.
|
||||
|
||||
- **Why is there an authentication code?**
|
||||
|
||||
The purpose of the authentication code is to insure that, once a file's data has been compressed and encrypted, any accidental corruption of the encrypted data, and any deliberate attempts to modify the encrypted data by an attacker who does not know the password, can be detected.
|
||||
|
||||
The current consensus in the cryptographic community is that associating a message authentication code (or MAC) with encrypted data has strong security value because it makes a number of attacks more difficult to engineer. For AES CTR mode encryption in particular, a MAC is especially important because a number of trivial attacks are possible in its absence. The MAC used with WinZip's AES encryption is based on[HMAC-SHA1-80](http://www.faqs.org/rfcs/rfc2104.html), a mature and widely respected authentication algorithm.
|
||||
|
||||
The MAC is calculated after the file data has been compressed and encrypted. This order of calculation is referred to as Encrypt-then-MAC, and is preferred by many cryptographers to the alternative order of MAC-then-Encrypt because Encrypt-then-MAC is immune to some known attacks on MAC-then-Encrypt.
|
||||
|
||||
- **What is the role of the CRC in WinZip 11?**
|
||||
|
||||
Within the Zip format, the primary use of the CRC value is to detect accidental corruption of data that has been stored in the Zip file. With files encrypted according to the Zip 2.0 encryption specification, it also functions to some extent as a method of detecting deliberate attempts to modify the encrypted data, but not one that can be considered cryptographically strong. The CRC is not needed for these purposes with the WinZip AES encryption specification, where the HMAC-SHA1-based authentication code instead serves these roles.
|
||||
|
||||
The CRC has a drawback in that for very small files, such as files with four or fewer bytes, the CRC can be used, independent of the encryption algorithm, to determine the unencrypted contents of the file. And, in general, it is preferable to store as little information as possible about the encrypted file in the unencrypted Zip headers.
|
||||
|
||||
The CRC does serve one purpose that the authentication code does not. The CRC is computed based on the original uncompressed, unencrypted contents of the file, and it is checked after the file has been decrypted and decompressed. In contrast, the authentication code used with WinZip AES encryption is computed after compression/encryption and it is checked before decryption/decompression. In the very rare event of a hardware or software error that corrupts data during compression and encryption, or during decryption and decompression, the CRC will catch the error, but the authentication code will not.
|
||||
|
||||
WinZip 9.0 and WinZip 10.0 used AE-2 for all files that they created, and did not store the CRC. As of WinZip 11, WinZip instead uses AE-1 for most files, storing the CRC as an additional integrity check against hardware or software errors occurring during the actual compression/encryption or decryption/decompression processes. WinZip 11 will continue to use AE-2, with no CRC, for very small files of less than 20 bytes. It will also use AE-2 for files compressed in BZIP2 format, because this format has internal integrity checks equivalent to a CRC check built in.
|
||||
|
||||
Note that the AES-encrypted files created by WinZip 11 are fully compatible with January 2004's version 1.0.2 of the WinZip AES encryption specification, in which both the AE-1 and AE-2 variants of the file format were already defined.
|
||||
|
||||
|
||||
**VII. Change history**
|
||||
|
||||
**Changes made in document version 1.04, January, 2009:** Minor clarification regarding the algorithm used to generate the authentication code.
|
||||
|
||||
**Changes made in document version 1.03, November, 2006:** Minor editorial and clarifying changes have been made throughout the document. The following substantive technical changes have been made:
|
||||
|
||||
1. WinZip 11 Usage of AE-1 and AE-2
|
||||
|
||||
WinZip's AES encryption specification defines two formats, known as AE-1 and AE-2, which differ in whether the CRC of the encrypted file is stored in the Zip headers. While the file formats themselves remain unchanged, WinZip's usage of them is changing. Beginning with [WinZip 11](https://www.winzip.com/aes_info.htm#winzip11), WinZip uses the AE-1 format, which includes the CRC of the encrypted file, for many encrypted files, in order to provide an additional integrity check against hardware or software errors occurring during the compression/encryption or decryption/decompression processes. Note that AES-encrypted files created by WinZip 11 are completely compatible with the previous version of the WinZip encryption specification, January 2004's version 1.0.2.
|
||||
|
||||
2. The discussion of [salt values](https://www.winzip.com/aes_info.htm#salt) mentions a limitation that applies to the uniqueness of salt values when very large numbers of files are encrypted with 128-bit encryption.
|
||||
3. Older versions of this specification suggested that other vendors might want to use their own vendor IDs to create their own unique encryption formats. We no longer suggest that vendor-specific alternative encryption methods be created in this way.
|
||||
|
||||
**Changes made in document version 1.02, January, 2004:** The introductory text at the start of the document has been rewritten, and minor editorial and clarifying changes have been made throughout the document. Two substantive technical changes have been made:
|
||||
|
||||
1. AE-2 Specification
|
||||
|
||||
Standard Zip files store the CRC of each file's unencrypted data. This value is used to help detect damage or other alterations to Zip files. However, storing the CRC value has a drawback in that, for a very small file, such as a file of four or fewer bytes, the CRC value can be used, independent of the encryption algorithm, to help determine the unencrypted contents of the file.
|
||||
|
||||
Because of this, files encrypted with the new AE-2 method store a 0 in the CRC field of the Zip header, and use the [authentication code](https://www.winzip.com/aes_info.htm#authentication-code) instead of the CRC value to verify that encrypted data within the Zip file has not been corrupted.
|
||||
|
||||
The only differences between the AE-1 and AE-2 methods are the storage in AE-2 of 0 instead of the CRC in the Zip file header,and the use in the AES extra data field of 0x0002 for AE-2 instead of 0x0001 for AE-1 as the vendor version.
|
||||
|
||||
Zip utilities that support the AE-2 format are required to be able to read files that were created in the AE-1 format, and during decryption/extraction of files in AE-1 format should verify that the file's CRC matches the value stored in the CRC field.
|
||||
|
||||
2. Key Generation and HMAC-SHA1
|
||||
|
||||
The description of the [key generation](https://www.winzip.com/aes_info.htm#key-generation) mechanism has been updated to point out a limitation arising from its use of HMAC-SHA1 as the pseudo-random function: When used in connection with 192- or 256-bit AES encryption, the fact that HMAC-SHA1 produces a 160-bit result means that, regardless of the password that you specify, the search space for the encryption key is unlikely to reach the theoretical 192- or 256-bit maximum, and cannot be guaranteed to exceed 160 bits. This is discussed in section B.1.1 of the [RFC2898 specification](http://www.faqs.org/rfcs/rfc2898.html).
|
||||
|
||||
Document version: 1.04
|
||||
Last modified: January 30, 2009
|
||||
|
||||
Copyright© 2003-2018 Corel Corporation.
|
||||
All Rights Reserved
|
||||
@@ -0,0 +1,64 @@
|
||||
# Decide if we're using Eigen
|
||||
cad_enable(EIGEN "libbg;libbn;librt")
|
||||
|
||||
unset(ENGEN_BUNDLED CACHE)
|
||||
|
||||
if (NOT ENABLE_EIGEN AND NOT DISABLE_EIGEN)
|
||||
|
||||
# https://eigen.tuxfamily.org/dox/TopicCMakeGuide.html
|
||||
find_package(Eigen3 NO_MODULE)
|
||||
|
||||
if (NOT TARGET Eigen3::Eigen)
|
||||
set(ENABLE_EIGEN "ON" CACHE BOOL "Enable Eigen build")
|
||||
endif (NOT TARGET Eigen3::Eigen)
|
||||
|
||||
endif (NOT ENABLE_EIGEN AND NOT DISABLE_EIGEN)
|
||||
|
||||
set(ENABLE_EIGEN "${ENABLE_EIGEN}" CACHE BOOL "Enable Eigen build")
|
||||
|
||||
# Decision made
|
||||
|
||||
if (ENABLE_EIGEN)
|
||||
|
||||
git_submodule_init(eigen CMakeLists.txt)
|
||||
|
||||
RegisterDeps(EIGEN)
|
||||
|
||||
ExternalProject_Add(EIGEN_BLD
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/eigen"
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
PATCH_COMMAND ${PATCH_EXECUTABLE};-E;-p1;${PATCH_OPTIONS};-i;${CMAKE_CURRENT_SOURCE_DIR}/eigen.patch
|
||||
CMAKE_ARGS
|
||||
-DBUILD_TESTING=OFF
|
||||
-DEIGEN_BUILD_DOC=OFF
|
||||
-DEIGEN_BUILD_PKGCONFIG=OFF
|
||||
${BUILD_TYPE_SPECIFIER}
|
||||
-DBIN_DIR=${BIN_DIR}
|
||||
-DLIB_DIR=${LIB_DIR}
|
||||
-DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS}
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_Fortran_COMPILER=OFF
|
||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_NOBUNDLE_INSTALL_PREFIX}
|
||||
-DCMAKE_INSTALL_LIBDIR:PATH=${LIB_DIR}
|
||||
-DCMAKE_INSTALL_RPATH=${CMAKE_BUNDLE_INSTALL_PREFIX}/${LIB_DIR}
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(EIGEN EIGEN_DEPENDS)
|
||||
|
||||
set(EIGEN_BUNDLED TRUE CACHE BOOL "Eigen bundle flag")
|
||||
|
||||
endif (ENABLE_EIGEN)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
|
||||
Submodule
+1
Submodule eigen/eigen added at 3147391d94
@@ -0,0 +1,2 @@
|
||||
PATCH
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
diff -Naur eigen/CMakeLists.txt EIGEN_BLD/CMakeLists.txt
|
||||
--- eigen/CMakeLists.txt 2024-04-16 20:37:46.506698007 -0400
|
||||
+++ EIGEN_BLD/CMakeLists.txt 2024-04-16 20:38:21.574118370 -0400
|
||||
@@ -635,7 +635,7 @@
|
||||
export (TARGETS eigen NAMESPACE Eigen3:: FILE Eigen3Targets.cmake)
|
||||
# Export Eigen3 package to CMake registry such that it can be easily found by
|
||||
# CMake even if it has not been installed to a standard directory.
|
||||
-export (PACKAGE Eigen3)
|
||||
+#export (PACKAGE Eigen3)
|
||||
|
||||
install (EXPORT Eigen3Targets NAMESPACE Eigen3:: DESTINATION ${CMAKEPACKAGE_INSTALL_DIR})
|
||||
|
||||
diff -Naur eigen/Eigen/src/Core/util/Memory.h EIGEN_BLD/Eigen/src/Core/util/Memory.h
|
||||
--- eigen/Eigen/src/Core/util/Memory.h 2024-04-16 20:37:46.522697745 -0400
|
||||
+++ EIGEN_BLD/Eigen/src/Core/util/Memory.h 2024-04-16 20:37:14.119233248 -0400
|
||||
@@ -586,6 +586,9 @@
|
||||
// to the appropriate stack allocation function
|
||||
#if ! defined EIGEN_ALLOCA && ! defined EIGEN_GPU_COMPILE_PHASE
|
||||
#if EIGEN_OS_LINUX || EIGEN_OS_MAC || (defined alloca)
|
||||
+ #if EIGEN_OS_MAC
|
||||
+ # include <alloca.h>
|
||||
+ #endif
|
||||
#define EIGEN_ALLOCA alloca
|
||||
#elif EIGEN_COMP_MSVC
|
||||
#define EIGEN_ALLOCA _alloca
|
||||
@@ -0,0 +1,62 @@
|
||||
|
||||
bext_enable(EMBREE)
|
||||
|
||||
if (ENABLE_EMBREE)
|
||||
|
||||
git_submodule_init(embree CMakeLists.txt)
|
||||
|
||||
RegisterDeps(EMBREE)
|
||||
if (TARGET ZLIB_BLD)
|
||||
set(Z_PREFIX_STR "brl_")
|
||||
endif (TARGET ZLIB_BLD)
|
||||
|
||||
ExternalProject_Add(EMBREE_BLD
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/embree"
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
PATCH_COMMAND ${PATCH_EXECUTABLE};-E;-p1;${PATCH_OPTIONS};-i;${CMAKE_CURRENT_SOURCE_DIR}/embree.patch
|
||||
CMAKE_ARGS
|
||||
${BUILD_TYPE_SPECIFIER}
|
||||
$<$<BOOL:${ZLIB_TARGET}>:-DZ_PREFIX=ON>
|
||||
$<$<BOOL:${ZLIB_TARGET}>:-DZ_PREFIX_STR=${Z_PREFIX_STR}>
|
||||
-DTBB_ROOT=$<$<BOOL:${TBB_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DISPC_ROOT=$<$<BOOL:${ISPC_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DZLIB_ROOT=$<$<BOOL:${ZLIB_TARGET}>:${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DEMBREE_TUTORIALS=OFF
|
||||
$<$<BOOL:${USE_OSPRAY}>:-DEMBREE_ISPC_SUPPORT=ON>
|
||||
-DBIN_DIR=${BIN_DIR}
|
||||
-DLIB_DIR=${LIB_DIR}
|
||||
-DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS}
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_BUNDLE_INSTALL_PREFIX}
|
||||
-DCMAKE_INSTALL_LIBDIR:PATH=${LIB_DIR}
|
||||
-DCMAKE_INSTALL_RPATH=${CMAKE_BUNDLE_INSTALL_PREFIX}/${LIB_DIR}
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(EMBREE EMBREE_DEPENDS)
|
||||
# ISPC use is conditional so it's not (currently) part of the deps file
|
||||
if (USE_OSPRAY AND TARGET ISPC_BLD)
|
||||
ExternalProject_Add_stepdependencies(EMBREE_BLD configure ISPC_BLD-install)
|
||||
endif (USE_OSPRAY AND TARGET ISPC_BLD)
|
||||
|
||||
# Copy the license into position in CMAKE_BUNDLE_INSTALL_PREFIX
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/embree/LICENSE.txt
|
||||
${DOC_LICENSE_DIR}/embree.txt
|
||||
COPYONLY
|
||||
)
|
||||
|
||||
endif (ENABLE_EMBREE)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
|
||||
Submodule
+1
Submodule embree/embree added at 800794931f
@@ -0,0 +1,5 @@
|
||||
BOOST
|
||||
ONETBB
|
||||
PATCH
|
||||
ZLIB
|
||||
|
||||
@@ -0,0 +1,20 @@
|
||||
--- embree/common/cmake/package.cmake 2024-06-25 19:45:03.229489407 -0400
|
||||
+++ EMBREE_BLD/common/cmake/package.cmake 2024-06-25 19:42:33.118981564 -0400
|
||||
@@ -178,13 +178,13 @@
|
||||
ELSEIF(APPLE)
|
||||
CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/scripts/install_macosx/embree-vars.sh" embree-vars.sh @ONLY)
|
||||
CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/scripts/install_macosx/embree-vars.csh" embree-vars.csh @ONLY)
|
||||
- INSTALL(FILES "${PROJECT_BINARY_DIR}/embree-vars.sh" DESTINATION "." COMPONENT lib)
|
||||
- INSTALL(FILES "${PROJECT_BINARY_DIR}/embree-vars.csh" DESTINATION "." COMPONENT lib)
|
||||
+ INSTALL(FILES "${PROJECT_BINARY_DIR}/embree-vars.sh" DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib)
|
||||
+ INSTALL(FILES "${PROJECT_BINARY_DIR}/embree-vars.csh" DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib)
|
||||
ELSE()
|
||||
CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/scripts/install_linux/embree-vars.sh" embree-vars.sh @ONLY)
|
||||
CONFIGURE_FILE("${PROJECT_SOURCE_DIR}/scripts/install_linux/embree-vars.csh" embree-vars.csh @ONLY)
|
||||
- INSTALL(FILES "${PROJECT_BINARY_DIR}/embree-vars.sh" DESTINATION "." COMPONENT lib)
|
||||
- INSTALL(FILES "${PROJECT_BINARY_DIR}/embree-vars.csh" DESTINATION "." COMPONENT lib)
|
||||
+ INSTALL(FILES "${PROJECT_BINARY_DIR}/embree-vars.sh" DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib)
|
||||
+ INSTALL(FILES "${PROJECT_BINARY_DIR}/embree-vars.csh" DESTINATION "${CMAKE_INSTALL_BINDIR}" COMPONENT lib)
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
|
||||
bext_enable(EXPAT)
|
||||
|
||||
if (ENABLE_EXPAT)
|
||||
|
||||
git_submodule_init(libexpat CMakeLists.txt)
|
||||
|
||||
RegisterDeps(EXPAT)
|
||||
|
||||
ExternalProject_Add(EXPAT_BLD
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/libexpat"
|
||||
SOURCE_SUBDIR expat
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
PATCH_COMMAND ${PATCH_EXECUTABLE};-E;-p1;${PATCH_OPTIONS};-i;${CMAKE_CURRENT_SOURCE_DIR}/expat.patch
|
||||
CMAKE_ARGS
|
||||
${BUILD_TYPE_SPECIFIER}
|
||||
-DEXPAT_SHARED_LIBS=ON
|
||||
-DBIN_DIR=${BIN_DIR}
|
||||
-DLIB_DIR=${LIB_DIR}
|
||||
-DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS}
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_BUNDLE_INSTALL_PREFIX}
|
||||
-DCMAKE_INSTALL_LIBDIR:PATH=${LIB_DIR}
|
||||
-DCMAKE_INSTALL_RPATH=${CMAKE_BUNDLE_INSTALL_PREFIX}/${LIB_DIR}
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(EXPAT EXPAT_DEPENDS)
|
||||
|
||||
# Copy the license into position in CMAKE_BUNDLE_INSTALL_PREFIX
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/libexpat/COPYING
|
||||
${DOC_LICENSE_DIR}/expat.txt
|
||||
COPYONLY
|
||||
)
|
||||
|
||||
endif (ENABLE_EXPAT)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
|
||||
@@ -0,0 +1,2 @@
|
||||
PATCH
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
diff -Naur libexpat/expat/CMakeLists.txt EXPAT_BLD/expat/CMakeLists.txt
|
||||
--- libexpat/expat/CMakeLists.txt 2024-06-24 20:14:05.745779978 -0400
|
||||
+++ EXPAT_BLD/expat/CMakeLists.txt 2024-06-24 20:13:21.062107763 -0400
|
||||
@@ -462,7 +462,7 @@
|
||||
|
||||
expat_shy_set(EXPAT_${build_type_upper}_POSTFIX "${_POSTFIX_WIDE}${_POSTFIX_DEBUG}${_POSTFIX_CRT}" CACHE STRING "Library filename postfix for build type ${build_type_upper}; yields filenames libexpat<postfix=[w][d][MD|MT]>.(dll|dylib|lib|so)")
|
||||
mark_as_advanced(EXPAT_${build_type_upper}_POSTFIX)
|
||||
- set_property(TARGET expat PROPERTY ${build_type_upper}_POSTFIX ${EXPAT_${build_type_upper}_POSTFIX})
|
||||
+ #set_property(TARGET expat PROPERTY ${build_type_upper}_POSTFIX ${EXPAT_${build_type_upper}_POSTFIX})
|
||||
endforeach()
|
||||
|
||||
set(LIBCURRENT 10) # sync
|
||||
Submodule
+1
Submodule expat/libexpat added at fa75b96546
@@ -0,0 +1,113 @@
|
||||
if (WIN32)
|
||||
# With winflexbison do all or nothing
|
||||
if (ENABLE_FLEX OR ENABLE_BISON)
|
||||
set(ENABLE_FLEX ON)
|
||||
set(ENABLE_BISON ON)
|
||||
endif (ENABLE_FLEX OR ENABLE_BISON)
|
||||
endif (WIN32)
|
||||
|
||||
set(ENABLE_FLEX "${ENABLE_FLEX}" CACHE BOOL "Enable flex build")
|
||||
set(ENABLE_BISON "${ENABLE_BISON}" CACHE BOOL "Enable GNU Bison build")
|
||||
|
||||
if (WIN32 AND ENABLE_FLEX)
|
||||
|
||||
git_submodule_init(winflexbison CMakeLists.txt)
|
||||
|
||||
set(FLEX_DEPENDS PATCH)
|
||||
TargetVars(FLEX_DEPENDS)
|
||||
|
||||
# https://github.com/lexxmark/winflexbison
|
||||
ExternalProject_Add(FLEX_BLD
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/winflexbison"
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
PATCH_COMMAND ${PATCH_EXECUTABLE};-E;-p1;${PATCH_OPTIONS};-i;${CMAKE_CURRENT_SOURCE_DIR}/winflexbison.patch
|
||||
CMAKE_ARGS
|
||||
${BUILD_TYPE_SPECIFIER}
|
||||
-DBIN_DIR=${BIN_DIR}
|
||||
-DLIB_DIR=${LIB_DIR}
|
||||
-DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS}
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_NOBUNDLE_INSTALL_PREFIX}
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(FLEX FLEX_DEPENDS)
|
||||
|
||||
endif (WIN32 AND ENABLE_FLEX)
|
||||
|
||||
if (NOT WIN32)
|
||||
if (ENABLE_FLEX)
|
||||
|
||||
git_submodule_init(flex configure)
|
||||
|
||||
set(FLEX_DEPENDS PATCH)
|
||||
TargetVars(FLEX_DEPENDS)
|
||||
|
||||
set(FLEX_SRC_DIR "${CMAKE_CURRENT_BINARY_DIR}/FLEX_BLD-prefix/src/FLEX_BLD")
|
||||
|
||||
ExternalProject_Add(FLEX_BLD
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/flex"
|
||||
BUILD_IN_SOURCE ON
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
PATCH_COMMAND ${PATCH_EXECUTABLE};-E;-p1;${PATCH_OPTIONS};-i;${CMAKE_CURRENT_SOURCE_DIR}/flex.patch
|
||||
CONFIGURE_COMMAND ${FLEX_SRC_DIR}/autogen.sh
|
||||
COMMAND ${FLEX_SRC_DIR}/configure --prefix=${CMAKE_NOBUNDLE_INSTALL_PREFIX}
|
||||
BUILD_COMMAND make -j${pcnt}
|
||||
INSTALL_COMMAND make -j1 install
|
||||
DEPENDS ${ZLIB_TARGET}
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(FLEX FLEX_DEPENDS)
|
||||
|
||||
endif (ENABLE_FLEX)
|
||||
if (ENABLE_BISON)
|
||||
|
||||
git_submodule_init(bison configure)
|
||||
|
||||
set(BISON_DEPENDS PATCH)
|
||||
TargetVars(BISON_DEPENDS)
|
||||
|
||||
set(BISON_SRC_DIR "${CMAKE_CURRENT_BINARY_DIR}/BISON_BLD-prefix/src/BISON_BLD")
|
||||
|
||||
ExternalProject_Add(BISON_BLD
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/bison"
|
||||
BUILD_IN_SOURCE ON
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
PATCH_COMMAND ${PATCH_EXECUTABLE};-E;-p1;${PATCH_OPTIONS};-i;${CMAKE_CURRENT_SOURCE_DIR}/bison.patch
|
||||
CONFIGURE_COMMAND chmod +x ${BISON_SRC_DIR}/autogen.sh
|
||||
COMMAND ${BISON_SRC_DIR}/autogen.sh
|
||||
COMMAND ${BISON_SRC_DIR}/configure --prefix=${CMAKE_NOBUNDLE_INSTALL_PREFIX}
|
||||
BUILD_COMMAND make -j${pcnt}
|
||||
INSTALL_COMMAND make -j1 install
|
||||
DEPENDS ${ZLIB_TARGET}
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(BISON BISON_DEPENDS)
|
||||
|
||||
endif (ENABLE_BISON)
|
||||
|
||||
endif (NOT WIN32)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
The Flex lexer (https://github.com/westes/flex) and GNU Bison parser generator
|
||||
tools (https://www.gnu.org/software/bison/) aren't targeted for WIN32
|
||||
deployment by their original upstreams. Consequently, we also include the
|
||||
winflexbison project from https://github.com/lexxmark/winflexbison to provide
|
||||
these tools on that platform as well.
|
||||
|
||||
We patch the build files of both flex and bison(a vanilla build on Ubuntu
|
||||
failed with both, during initial testing.) However, this means we also need to
|
||||
regenerate the build files and require at least a minimal autotools chain for
|
||||
successful building on platforms other than Windows.
|
||||
|
||||
NOTE: These are build-only tools, not intended to be bundled with BRL-CAD. In
|
||||
particular, GNU Bison uses the GNU General Public License (GPLv3) and is not a
|
||||
candidate for distribution with BRL-CAD.
|
||||
|
||||
Submodule
+1
Submodule flexbison/bison added at 17479d234a
@@ -0,0 +1,83 @@
|
||||
diff -Naur bison-3.8/autogen.sh bison/autogen.sh
|
||||
--- bison-3.8/autogen.sh 1969-12-31 19:00:00.000000000 -0500
|
||||
+++ bison/autogen.sh 2023-09-14 10:59:17.620985283 -0400
|
||||
@@ -0,0 +1,51 @@
|
||||
+#!/bin/sh
|
||||
+
|
||||
+# This file is part of flex.
|
||||
+
|
||||
+# Redistribution and use in source and binary forms, with or without
|
||||
+# modification, are permitted provided that the following conditions
|
||||
+# are met:
|
||||
+
|
||||
+# 1. Redistributions of source code must retain the above copyright
|
||||
+# notice, this list of conditions and the following disclaimer.
|
||||
+# 2. Redistributions in binary form must reproduce the above copyright
|
||||
+# notice, this list of conditions and the following disclaimer in the
|
||||
+# documentation and/or other materials provided with the distribution.
|
||||
+
|
||||
+# Neither the name of the University nor the names of its contributors
|
||||
+# may be used to endorse or promote products derived from this software
|
||||
+# without specific prior written permission.
|
||||
+
|
||||
+# THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
|
||||
+# IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
|
||||
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
+# PURPOSE.
|
||||
+
|
||||
+# If you see no configure script, then run ./autogen.sh to create it
|
||||
+# and procede with the "normal" build procedures.
|
||||
+
|
||||
+# use LIBTOOLIZE, if set
|
||||
+LIBTOOLIZE_ORIG="$LIBTOOLIZE";
|
||||
+if test "x$LIBTOOLIZE" = "x"; then LIBTOOLIZE=libtoolize; fi
|
||||
+
|
||||
+# test libtoolize
|
||||
+$LIBTOOLIZE --version 2>/dev/null
|
||||
+if test "$?" -ne 0; then
|
||||
+ LIBTOOLIZE=glibtoolize
|
||||
+ $LIBTOOLIZE --version 2>/dev/null
|
||||
+ if test "$?" -ne 0; then
|
||||
+ echo "error: libtoolize not working, re-run with LIBTOOLIZE=/path/to/libtoolize"
|
||||
+ echo " LIBTOOLIZE is currently \"$LIBTOOLIZE_ORIG\""
|
||||
+ exit 1
|
||||
+ fi
|
||||
+fi
|
||||
+
|
||||
+#if we pretend to have a ChangeLog, then automake is less
|
||||
+#worried. (Don't worry, we *do* have a ChangeLog, we just need the
|
||||
+#Makefile first.)
|
||||
+
|
||||
+if ! test -f ChangeLog; then
|
||||
+ touch ChangeLog
|
||||
+fi
|
||||
+"$LIBTOOLIZE" --install --force
|
||||
+autoreconf --install --force
|
||||
diff -Naur bison-3.8/lib/gnulib.mk bison/lib/gnulib.mk
|
||||
--- bison-3.8/lib/gnulib.mk 2021-09-07 06:54:09.000000000 -0400
|
||||
+++ bison/lib/gnulib.mk 2023-09-14 11:00:31.903736511 -0400
|
||||
@@ -1223,7 +1223,7 @@
|
||||
mv $(top_srcdir)/lib/iconv_open-zos.h-t $(top_srcdir)/lib/iconv_open-zos.h
|
||||
BUILT_SOURCES += lib/iconv_open-aix.h lib/iconv_open-hpux.h lib/iconv_open-irix.h lib/iconv_open-osf.h lib/iconv_open-solaris.h lib/iconv_open-zos.h
|
||||
MOSTLYCLEANFILES += lib/iconv_open-aix.h-t lib/iconv_open-hpux.h-t lib/iconv_open-irix.h-t lib/iconv_open-osf.h-t lib/iconv_open-solaris.h-t lib/iconv_open-zos.h-t
|
||||
-MAINTAINERCLEANFILES += lib/iconv_open-aix.h lib/iconv_open-hpux.h lib/iconv_open-irix.h lib/iconv_open-osf.h lib/iconv_open-solaris.h lib/iconv_open-zos.h
|
||||
+MAINTAINERCLEANFILES = lib/iconv_open-aix.h lib/iconv_open-hpux.h lib/iconv_open-irix.h lib/iconv_open-osf.h lib/iconv_open-solaris.h lib/iconv_open-zos.h
|
||||
EXTRA_DIST += lib/iconv_open-aix.h lib/iconv_open-hpux.h lib/iconv_open-irix.h lib/iconv_open-osf.h lib/iconv_open-solaris.h lib/iconv_open-zos.h
|
||||
|
||||
EXTRA_DIST += lib/iconv.c lib/iconv_close.c lib/iconv_open-aix.gperf lib/iconv_open-hpux.gperf lib/iconv_open-irix.gperf lib/iconv_open-osf.gperf lib/iconv_open-solaris.gperf lib/iconv_open-zos.gperf lib/iconv_open.c
|
||||
diff -Naur bison-3.8/Makefile.am bison/Makefile.am
|
||||
--- bison-3.8/Makefile.am 2021-06-23 00:48:48.000000000 -0400
|
||||
+++ bison/Makefile.am 2023-09-14 10:57:47.586496865 -0400
|
||||
@@ -66,12 +66,8 @@
|
||||
|
||||
include build-aux/local.mk
|
||||
include data/local.mk
|
||||
-include doc/local.mk
|
||||
-include etc/local.mk
|
||||
-include examples/local.mk
|
||||
include lib/local.mk
|
||||
include src/local.mk
|
||||
-include tests/local.mk
|
||||
|
||||
clean-local:
|
||||
rm -rf $(CLEANDIRS)
|
||||
Submodule
+1
Submodule flexbison/flex added at ab49343b08
@@ -0,0 +1,15 @@
|
||||
diff -Naur flex-2.6.4/Makefile.am flex/Makefile.am
|
||||
--- flex-2.6.4/Makefile.am 2017-05-03 16:16:37.000000000 -0400
|
||||
+++ flex/Makefile.am 2023-09-14 10:54:03.506247328 -0400
|
||||
@@ -43,10 +43,6 @@
|
||||
|
||||
SUBDIRS = \
|
||||
src \
|
||||
- doc \
|
||||
- examples \
|
||||
- po \
|
||||
- tests \
|
||||
tools
|
||||
|
||||
# Create the ChangeLog, but only if we're inside a git working directory
|
||||
|
||||
Submodule
+1
Submodule flexbison/winflexbison added at 1176da2ada
@@ -0,0 +1,35 @@
|
||||
diff -Naur winflexbison-2.5.25/CMakeLists.txt winflexbison/CMakeLists.txt
|
||||
--- winflexbison-2.5.25/CMakeLists.txt 2022-01-09 23:47:26.000000000 -0500
|
||||
+++ winflexbison/CMakeLists.txt 2023-09-14 13:19:51.353807462 -0400
|
||||
@@ -66,16 +66,16 @@
|
||||
if(CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR)
|
||||
# CPACK
|
||||
if(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
- install(DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}/" DESTINATION "./")
|
||||
+ install(DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_DEBUG}/" DESTINATION "bin/")
|
||||
else()
|
||||
- install(DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}/" DESTINATION "./")
|
||||
+ install(DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY_RELEASE}/" DESTINATION "bin/")
|
||||
endif()
|
||||
|
||||
- install(DIRECTORY "custom_build_rules/" DESTINATION "./custom_build_rules/")
|
||||
- install(DIRECTORY "bison/data/" DESTINATION "./data/")
|
||||
- install(FILES "flex/src/FlexLexer.h" DESTINATION "./")
|
||||
- install(FILES "changelog.md" DESTINATION "./")
|
||||
- install(FILES "README.md" DESTINATION "./")
|
||||
+ install(DIRECTORY "custom_build_rules/" DESTINATION "share/custom_build_rules/")
|
||||
+ install(DIRECTORY "bison/data/" DESTINATION "share/data/")
|
||||
+ install(FILES "flex/src/FlexLexer.h" DESTINATION "include/winflexbison/")
|
||||
+ install(FILES "changelog.md" DESTINATION "share/winflexbison")
|
||||
+ install(FILES "README.md" DESTINATION "share/winflexbison")
|
||||
|
||||
set(PACKAGE_GENERATORS_DEFAULT ZIP)
|
||||
|
||||
@@ -96,4 +96,5 @@
|
||||
set(CPACK_PACKAGE_FILE_NAME "win_flex_bison-${CPACK_PACKAGE_VERSION}")
|
||||
|
||||
include(CPack)
|
||||
-endif()
|
||||
\ No newline at end of file
|
||||
+endif()
|
||||
+
|
||||
@@ -0,0 +1,49 @@
|
||||
|
||||
bext_enable(FMT)
|
||||
|
||||
if (ENABLE_FMT)
|
||||
|
||||
git_submodule_init(fmt CMakeLists.txt)
|
||||
|
||||
RegisterDeps(FMT)
|
||||
|
||||
ExternalProject_Add(FMT_BLD
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/fmt"
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
CMAKE_ARGS
|
||||
-DFMT_DOC=OFF
|
||||
-DFMT_TEST=OFF
|
||||
${BUILD_TYPE_SPECIFIER}
|
||||
-DBIN_DIR=${BIN_DIR}
|
||||
-DLIB_DIR=${LIB_DIR}
|
||||
-DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS}
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_BUNDLE_INSTALL_PREFIX}
|
||||
-DCMAKE_INSTALL_LIBDIR:PATH=${LIB_DIR}
|
||||
-DCMAKE_INSTALL_RPATH=${CMAKE_BUNDLE_INSTALL_PREFIX}/${LIB_DIR}
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(FMT FMT_DEPENDS)
|
||||
|
||||
# Copy the license into position in CMAKE_BUNDLE_INSTALL_PREFIX
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/fmt/LICENSE
|
||||
${DOC_LICENSE_DIR}/fmt.txt
|
||||
COPYONLY
|
||||
)
|
||||
|
||||
endif (ENABLE_FMT)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
|
||||
Submodule
+1
Submodule fmt/fmt added at e69e5f977d
@@ -0,0 +1,2 @@
|
||||
PATCH
|
||||
|
||||
@@ -0,0 +1,183 @@
|
||||
# Decide if we're using GDAL
|
||||
cad_enable(GDAL "libgcv")
|
||||
|
||||
bext_enable(GDAL)
|
||||
|
||||
# Decision made
|
||||
|
||||
if (ENABLE_GDAL)
|
||||
|
||||
git_submodule_init(gdal CMakeLists.txt)
|
||||
|
||||
RegisterDeps(GDAL)
|
||||
if (TARGET ZLIB_BLD)
|
||||
set(Z_PREFIX_STR "brl_")
|
||||
endif (TARGET ZLIB_BLD)
|
||||
|
||||
ExternalProject_Add(GDAL_BLD
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/gdal"
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
PATCH_COMMAND ${PATCH_EXECUTABLE};-E;-p1;${PATCH_OPTIONS};-i;${CMAKE_CURRENT_SOURCE_DIR}/gdal.patch
|
||||
CMAKE_ARGS
|
||||
${BUILD_TYPE_SPECIFIER}
|
||||
$<$<BOOL:${ZLIB_TARGET}>:-DZ_PREFIX=ON>
|
||||
$<$<BOOL:${ZLIB_TARGET}>:-DZ_PREFIX_STR=${Z_PREFIX_STR}>
|
||||
-DBIN_DIR=${BIN_DIR}
|
||||
-DLIB_DIR=${LIB_DIR}
|
||||
-DCMAKE_INSTALL_LIBDIR:PATH=${LIB_DIR}
|
||||
-DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS}
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_BUNDLE_INSTALL_PREFIX}
|
||||
-DCMAKE_INSTALL_RPATH=${CMAKE_BUNDLE_INSTALL_PREFIX}/${LIB_DIR}
|
||||
-DCMAKE_INSTALL_LIBDIR:PATH=${LIB_DIR}
|
||||
-DCMAKE_INSTALL_INCLUDEDIR:PATH=${INCLUDE_DIR}/gdal
|
||||
-DBUILD_TESTING=OFF
|
||||
-DGDAL_INST_DATA_DIR=${CMAKE_BUNDLE_INSTALL_PREFIX}/${DATA_DIR}/gdal
|
||||
-DGDAL_USE_EXTERNAL_LIBS=OFF
|
||||
-DGDAL_USE_INTERNAL_LIBS=ON # GEOTIFF, GIF, JPEG, JSONC, LERC, OPENCAD, PNG, QHULL, TIFF, ZLIB
|
||||
# TODO - we can't just be hard-setting this - USE_*_INTERNAL flags need to
|
||||
# key on which build targets we have
|
||||
-DGDAL_USE_ZLIB_INTERNAL=OFF
|
||||
-DGDAL_USE_ZLIB=ON
|
||||
$<$<BOOL:${ZLIB_TARGET}>:-DZLIB_ROOT=${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DGDAL_USE_PNG_INTERNAL=OFF
|
||||
-DGDAL_USE_PNG=ON
|
||||
$<$<BOOL:${PNG_TARGET}>:-DPNG_ROOT=${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DGDAL_USE_PROJ_INTERNAL=OFF
|
||||
-DGDAL_USE_PROJ=ON
|
||||
$<$<BOOL:${PROJ_TARGET}>:-DPROJ_ROOT=${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DGDAL_USE_TIFF_INTERNAL=OFF
|
||||
-DGDAL_USE_TIFF=ON
|
||||
$<$<BOOL:${TIFF_TARGET}>:-DTIFF_ROOT=${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DGDAL_USE_SQLITE3=ON
|
||||
$<$<BOOL:${SQLITE3_TARGET}>:-DSQLite3_ROOT=${CMAKE_BUNDLE_INSTALL_PREFIX}>
|
||||
-DGDAL_BUILD_OPTIONAL_DRIVERS=OFF
|
||||
-DGDAL_ENABLE_DRIVER_RAW=ON # ACE2, BT, BYN, CPG, CTable2, DIPEx, DOQ1, DOQ2, EHDR, EIR, ENVI, FAST, GenBIN, GSC, GTX, MFF2, ISCE, KRO, MFF, LAN, LCP, LOSLAS, NDF, NTv2, PAUX, PNM, ROIPAC, RRASTER, SNODAS
|
||||
-DGDAL_ENABLE_DRIVER_PDS=ON # PDS, PDS4, ISIS2, ISIS3, VICAR
|
||||
-DGDAL_ENABLE_DRIVER_AAIGRID=ON # AAIGRID, GRASSASCIIGRID, ISG
|
||||
-DGDAL_ENABLE_DRIVER_GSG=ON # GSAG, GSBG, GS7BG
|
||||
-DGDAL_ENABLE_DRIVER_NITF=ON # NITF, RPFTOC, ECRGTOC
|
||||
-DGDAL_ENABLE_DRIVER_NORTHWOOD=ON # NWT_GRD, NWT_GRC
|
||||
-DGDAL_ENABLE_DRIVER_ADRG=ON # SRP, ADRG
|
||||
-DGDAL_ENABLE_DRIVER_AVC=ON # AVCBIN, AVCE00
|
||||
-DGDAL_ENABLE_DRIVER_AIGRID=ON
|
||||
-DGDAL_ENABLE_DRIVER_AIRSAR=ON
|
||||
-DGDAL_ENABLE_DRIVER_ARG=ON
|
||||
-DGDAL_ENABLE_DRIVER_BLX=ON
|
||||
-DGDAL_ENABLE_DRIVER_BMP=ON
|
||||
-DGDAL_ENABLE_DRIVER_BSB=ON
|
||||
-DGDAL_ENABLE_DRIVER_CALS=ON
|
||||
-DGDAL_ENABLE_DRIVER_CEOS=ON
|
||||
-DGDAL_ENABLE_DRIVER_COASP=ON
|
||||
-DGDAL_ENABLE_DRIVER_COSAR=ON
|
||||
-DGDAL_ENABLE_DRIVER_CTG=ON
|
||||
-DGDAL_ENABLE_DRIVER_DIMAP=ON
|
||||
-DGDAL_ENABLE_DRIVER_DTED=ON
|
||||
-DGDAL_ENABLE_DRIVER_ELAS=ON
|
||||
-DGDAL_ENABLE_DRIVER_ERS=ON
|
||||
-DGDAL_ENABLE_DRIVER_ENVISAT=ON
|
||||
-DGDAL_ENABLE_DRIVER_ESRIC=ON
|
||||
-DGDAL_ENABLE_DRIVER_FIT=ON
|
||||
-DGDAL_ENABLE_DRIVER_GFF=ON
|
||||
-DGDAL_ENABLE_DRIVER_GIF=ON
|
||||
-DGDAL_ENABLE_DRIVER_GRIB=ON
|
||||
-DGDAL_ENABLE_DRIVER_GXF=ON
|
||||
-DGDAL_ENABLE_DRIVER_HF2=ON
|
||||
-DGDAL_ENABLE_DRIVER_HFA=ON
|
||||
-DGDAL_ENABLE_DRIVER_IDRISI=ON
|
||||
-DGDAL_ENABLE_DRIVER_ILWIS=ON
|
||||
-DGDAL_ENABLE_DRIVER_IRIS=ON
|
||||
-DGDAL_ENABLE_DRIVER_JDEM=ON
|
||||
-DGDAL_ENABLE_DRIVER_JPEG=ON
|
||||
-DGDAL_ENABLE_DRIVER_KMLSUPEROVERLAY=ON
|
||||
-DGDAL_ENABLE_DRIVER_L1B=ON
|
||||
-DGDAL_ENABLE_DRIVER_LEVELLER=ON
|
||||
-DGDAL_ENABLE_DRIVER_MAP=ON
|
||||
-DGDAL_ENABLE_DRIVER_MRF=ON
|
||||
-DGDAL_ENABLE_DRIVER_MEM=ON
|
||||
-DGDAL_ENABLE_DRIVER_MSGN=ON
|
||||
-DGDAL_ENABLE_DRIVER_NGSGEOID=ON
|
||||
-DGDAL_ENABLE_DRIVER_OZI=ON
|
||||
-DGDAL_ENABLE_DRIVER_JAXAPALSAR=ON
|
||||
-DGDAL_ENABLE_DRIVER_PCIDSK=ON
|
||||
-DGDAL_ENABLE_DRIVER_PCRASTER=ON
|
||||
-DGDAL_ENABLE_DRIVER_PDF=ON
|
||||
-DGDAL_ENABLE_DRIVER_PNG=ON
|
||||
-DGDAL_ENABLE_DRIVER_PRF=ON
|
||||
-DGDAL_ENABLE_DRIVER_R=ON
|
||||
-DGDAL_ENABLE_DRIVER_RASTERLITE=ON
|
||||
-DGDAL_ENABLE_DRIVER_RIK=ON
|
||||
-DGDAL_ENABLE_DRIVER_RMF=ON
|
||||
-DGDAL_ENABLE_DRIVER_RS2=ON
|
||||
-DGDAL_ENABLE_DRIVER_SAFE=ON
|
||||
-DGDAL_ENABLE_DRIVER_SAR_CEOS=ON
|
||||
-DGDAL_ENABLE_DRIVER_SAGA=ON
|
||||
-DGDAL_ENABLE_DRIVER_SDTS=ON
|
||||
-DGDAL_ENABLE_DRIVER_SENTINEL2=ON
|
||||
-DGDAL_ENABLE_DRIVER_SGI=ON
|
||||
-DGDAL_ENABLE_DRIVER_SIGDEM=ON
|
||||
-DGDAL_ENABLE_DRIVER_SRTMHGT=ON
|
||||
-DGDAL_ENABLE_DRIVER_STACIT=ON
|
||||
-DGDAL_ENABLE_DRIVER_STACTA=ON
|
||||
-DGDAL_ENABLE_DRIVER_TERRAGEN=ON
|
||||
-DGDAL_ENABLE_DRIVER_TGA=ON
|
||||
-DGDAL_ENABLE_DRIVER_TIL=ON
|
||||
-DGDAL_ENABLE_DRIVER_TSX=ON
|
||||
-DGDAL_ENABLE_DRIVER_USGSDEM=ON
|
||||
-DGDAL_ENABLE_DRIVER_VRT=ON
|
||||
-DGDAL_ENABLE_DRIVER_XPM=ON
|
||||
-DGDAL_ENABLE_DRIVER_XYZ=ON
|
||||
-DGDAL_ENABLE_DRIVER_ZARR=ON
|
||||
-DGDAL_ENABLE_DRIVER_ZMAP=ON
|
||||
-DOGR_BUILD_OPTIONAL_DRIVERS=OFF
|
||||
-DOGR_ENABLE_DRIVER_AVC=ON
|
||||
-DOGR_ENABLE_DRIVER_CAD=ON
|
||||
-DOGR_ENABLE_DRIVER_CSV=ON
|
||||
-DOGR_ENABLE_DRIVER_DGN=ON
|
||||
-DOGR_ENABLE_DRIVER_DXF=ON
|
||||
-DOGR_ENABLE_DRIVER_EDIGEO=ON
|
||||
-DOGR_ENABLE_DRIVER_FLATGEOBUF=ON
|
||||
-DOGR_ENABLE_DRIVER_GEOCONCEPT=ON
|
||||
-DOGR_ENABLE_DRIVER_GPKG=ON
|
||||
-DOGR_ENABLE_DRIVER_GMT=ON
|
||||
-DOGR_ENABLE_DRIVER_IDRISI=ON
|
||||
-DOGR_ENABLE_DRIVER_MAPML=ON
|
||||
-DOGR_ENABLE_DRIVER_MITAB=ON
|
||||
-DOGR_ENABLE_DRIVER_NTF=ON
|
||||
-DOGR_ENABLE_DRIVER_PGDUMP=ON
|
||||
-DOGR_ENABLE_DRIVER_S57=ON
|
||||
-DOGR_ENABLE_DRIVER_SDTS=ON
|
||||
-DOGR_ENABLE_DRIVER_SELAFIN=ON
|
||||
-DOGR_ENABLE_DRIVER_SQLITE=ON
|
||||
-DOGR_ENABLE_DRIVER_SXF=ON
|
||||
-DOGR_ENABLE_DRIVER_TIGER=ON
|
||||
-DOGR_ENABLE_DRIVER_VDV=ON
|
||||
-DOGR_ENABLE_DRIVER_WASP=ON
|
||||
-DBUILD_PYTHON_BINDINGS=OFF
|
||||
-DBUILD_JAVA_BINDINGS=OFF
|
||||
-DBUILD_CSHARP_BINDINGS=OFF
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(GDAL GDAL_DEPENDS)
|
||||
|
||||
# Copy the license into position in CMAKE_BUNDLE_INSTALL_PREFIX
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/gdal/LICENSE.TXT
|
||||
${DOC_LICENSE_DIR}/gdal.txt
|
||||
COPYONLY
|
||||
)
|
||||
|
||||
endif (ENABLE_GDAL)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
Submodule
+1
Submodule gdal/gdal added at eca61600a5
@@ -0,0 +1,7 @@
|
||||
PATCH
|
||||
PNG
|
||||
PROJ
|
||||
SQLITE3
|
||||
TIFF
|
||||
ZLIB
|
||||
|
||||
+350
@@ -0,0 +1,350 @@
|
||||
diff -Naurw gdal-3.6.3/cmake/modules/FindPNG.cmake gdal/cmake/modules/FindPNG.cmake
|
||||
--- gdal-3.6.3/cmake/modules/FindPNG.cmake 1969-12-31 19:00:00.000000000 -0500
|
||||
+++ gdal/cmake/modules/FindPNG.cmake 2023-08-17 10:20:09.862683802 -0400
|
||||
@@ -0,0 +1,161 @@
|
||||
+# Distributed under the OSI-approved BSD 3-Clause License. See accompanying
|
||||
+# file Copyright.txt or https://cmake.org/licensing for details.
|
||||
+
|
||||
+#[=======================================================================[.rst:
|
||||
+FindPNG
|
||||
+-------
|
||||
+
|
||||
+Find libpng, the official reference library for the PNG image format.
|
||||
+
|
||||
+Imported targets
|
||||
+^^^^^^^^^^^^^^^^
|
||||
+
|
||||
+.. versionadded:: 3.5
|
||||
+
|
||||
+This module defines the following :prop_tgt:`IMPORTED` target:
|
||||
+
|
||||
+``PNG::PNG``
|
||||
+ The libpng library, if found.
|
||||
+
|
||||
+Result variables
|
||||
+^^^^^^^^^^^^^^^^
|
||||
+
|
||||
+This module will set the following variables in your project:
|
||||
+
|
||||
+``PNG_INCLUDE_DIRS``
|
||||
+ where to find png.h, etc.
|
||||
+``PNG_LIBRARIES``
|
||||
+ the libraries to link against to use PNG.
|
||||
+``PNG_DEFINITIONS``
|
||||
+ You should add_definitions(${PNG_DEFINITIONS}) before compiling code
|
||||
+ that includes png library files.
|
||||
+``PNG_FOUND``
|
||||
+ If false, do not try to use PNG.
|
||||
+``PNG_VERSION_STRING``
|
||||
+ the version of the PNG library found (since CMake 2.8.8)
|
||||
+
|
||||
+Obsolete variables
|
||||
+^^^^^^^^^^^^^^^^^^
|
||||
+
|
||||
+The following variables may also be set, for backwards compatibility:
|
||||
+
|
||||
+``PNG_LIBRARY``
|
||||
+ where to find the PNG library.
|
||||
+``PNG_INCLUDE_DIR``
|
||||
+ where to find the PNG headers (same as PNG_INCLUDE_DIRS)
|
||||
+
|
||||
+Since PNG depends on the ZLib compression library, none of the above
|
||||
+will be defined unless ZLib can be found.
|
||||
+#]=======================================================================]
|
||||
+
|
||||
+if(PNG_FIND_QUIETLY)
|
||||
+ set(_FIND_ZLIB_ARG QUIET)
|
||||
+endif()
|
||||
+find_package(ZLIB ${_FIND_ZLIB_ARG})
|
||||
+
|
||||
+if(ZLIB_FOUND)
|
||||
+ find_path(PNG_PNG_INCLUDE_DIR png.h PATH_SUFFIXES include/libpng)
|
||||
+ mark_as_advanced(PNG_PNG_INCLUDE_DIR)
|
||||
+
|
||||
+ list(APPEND PNG_NAMES png_brl libpng_brl png libpng)
|
||||
+ unset(PNG_NAMES_DEBUG)
|
||||
+ set(_PNG_VERSION_SUFFIXES 17 16 15 14 12)
|
||||
+ if (PNG_FIND_VERSION MATCHES "^([0-9]+)\\.([0-9]+)(\\..*)?$")
|
||||
+ set(_PNG_VERSION_SUFFIX_MIN "${CMAKE_MATCH_1}${CMAKE_MATCH_2}")
|
||||
+ if (PNG_FIND_VERSION_EXACT)
|
||||
+ set(_PNG_VERSION_SUFFIXES ${_PNG_VERSION_SUFFIX_MIN})
|
||||
+ else ()
|
||||
+ string(REGEX REPLACE
|
||||
+ "${_PNG_VERSION_SUFFIX_MIN}.*" "${_PNG_VERSION_SUFFIX_MIN}"
|
||||
+ _PNG_VERSION_SUFFIXES "${_PNG_VERSION_SUFFIXES}")
|
||||
+ endif ()
|
||||
+ unset(_PNG_VERSION_SUFFIX_MIN)
|
||||
+ endif ()
|
||||
+ foreach(v IN LISTS _PNG_VERSION_SUFFIXES)
|
||||
+ list(APPEND PNG_NAMES png_brl${v} libpng_brl${v} png${v} libpng${v} libpng${v}_static)
|
||||
+ list(APPEND PNG_NAMES_DEBUG png_brl${v}d libpng_brl${v}d png${v}d libpng${v}d libpng${v}_staticd)
|
||||
+ endforeach()
|
||||
+ unset(_PNG_VERSION_SUFFIXES)
|
||||
+ # For compatibility with versions prior to this multi-config search, honor
|
||||
+ # any PNG_LIBRARY that is already specified and skip the search.
|
||||
+ if(NOT PNG_LIBRARY)
|
||||
+ find_library(PNG_LIBRARY_RELEASE NAMES ${PNG_NAMES} NAMES_PER_DIR)
|
||||
+ find_library(PNG_LIBRARY_DEBUG NAMES ${PNG_NAMES_DEBUG} NAMES_PER_DIR)
|
||||
+ include(SelectLibraryConfigurations)
|
||||
+ select_library_configurations(PNG)
|
||||
+ mark_as_advanced(PNG_LIBRARY_RELEASE PNG_LIBRARY_DEBUG)
|
||||
+ endif()
|
||||
+ unset(PNG_NAMES)
|
||||
+ unset(PNG_NAMES_DEBUG)
|
||||
+
|
||||
+ # Set by select_library_configurations(), but we want the one from
|
||||
+ # find_package_handle_standard_args() below.
|
||||
+ unset(PNG_FOUND)
|
||||
+
|
||||
+ if (PNG_LIBRARY AND PNG_PNG_INCLUDE_DIR)
|
||||
+ # png.h includes zlib.h. Sigh.
|
||||
+ set(PNG_INCLUDE_DIRS ${PNG_PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} )
|
||||
+ set(PNG_INCLUDE_DIR ${PNG_INCLUDE_DIRS} ) # for backward compatibility
|
||||
+ set(PNG_LIBRARIES ${PNG_LIBRARY} ${ZLIB_LIBRARY})
|
||||
+ if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND
|
||||
+ ("${PNG_LIBRARY}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$"))
|
||||
+ list(APPEND PNG_LIBRARIES m)
|
||||
+ endif()
|
||||
+
|
||||
+ if (CYGWIN)
|
||||
+ if(BUILD_SHARED_LIBS)
|
||||
+ # No need to define PNG_USE_DLL here, because it's default for Cygwin.
|
||||
+ else()
|
||||
+ set (PNG_DEFINITIONS -DPNG_STATIC)
|
||||
+ set(_PNG_COMPILE_DEFINITIONS PNG_STATIC)
|
||||
+ endif()
|
||||
+ endif ()
|
||||
+
|
||||
+ if(NOT TARGET PNG::PNG)
|
||||
+ add_library(PNG::PNG UNKNOWN IMPORTED)
|
||||
+ set_target_properties(PNG::PNG PROPERTIES
|
||||
+ INTERFACE_COMPILE_DEFINITIONS "${_PNG_COMPILE_DEFINITIONS}"
|
||||
+ INTERFACE_INCLUDE_DIRECTORIES "${PNG_INCLUDE_DIRS}"
|
||||
+ INTERFACE_LINK_LIBRARIES ZLIB::ZLIB)
|
||||
+ if((CMAKE_SYSTEM_NAME STREQUAL "Linux") AND
|
||||
+ ("${PNG_LIBRARY}" MATCHES "\\${CMAKE_STATIC_LIBRARY_SUFFIX}$"))
|
||||
+ set_property(TARGET PNG::PNG APPEND PROPERTY
|
||||
+ INTERFACE_LINK_LIBRARIES m)
|
||||
+ endif()
|
||||
+
|
||||
+ if(EXISTS "${PNG_LIBRARY}")
|
||||
+ set_target_properties(PNG::PNG PROPERTIES
|
||||
+ IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
||||
+ IMPORTED_LOCATION "${PNG_LIBRARY}")
|
||||
+ endif()
|
||||
+ if(EXISTS "${PNG_LIBRARY_RELEASE}")
|
||||
+ set_property(TARGET PNG::PNG APPEND PROPERTY
|
||||
+ IMPORTED_CONFIGURATIONS RELEASE)
|
||||
+ set_target_properties(PNG::PNG PROPERTIES
|
||||
+ IMPORTED_LINK_INTERFACE_LANGUAGES_RELEASE "C"
|
||||
+ IMPORTED_LOCATION_RELEASE "${PNG_LIBRARY_RELEASE}")
|
||||
+ endif()
|
||||
+ if(EXISTS "${PNG_LIBRARY_DEBUG}")
|
||||
+ set_property(TARGET PNG::PNG APPEND PROPERTY
|
||||
+ IMPORTED_CONFIGURATIONS DEBUG)
|
||||
+ set_target_properties(PNG::PNG PROPERTIES
|
||||
+ IMPORTED_LINK_INTERFACE_LANGUAGES_DEBUG "C"
|
||||
+ IMPORTED_LOCATION_DEBUG "${PNG_LIBRARY_DEBUG}")
|
||||
+ endif()
|
||||
+ endif()
|
||||
+
|
||||
+ unset(_PNG_COMPILE_DEFINITIONS)
|
||||
+ endif ()
|
||||
+
|
||||
+ if (PNG_PNG_INCLUDE_DIR AND EXISTS "${PNG_PNG_INCLUDE_DIR}/png.h")
|
||||
+ file(STRINGS "${PNG_PNG_INCLUDE_DIR}/png.h" png_version_str REGEX "^#define[ \t]+PNG_LIBPNG_VER_STRING[ \t]+\".+\"")
|
||||
+
|
||||
+ string(REGEX REPLACE "^#define[ \t]+PNG_LIBPNG_VER_STRING[ \t]+\"([^\"]+)\".*" "\\1" PNG_VERSION_STRING "${png_version_str}")
|
||||
+ unset(png_version_str)
|
||||
+ endif ()
|
||||
+endif()
|
||||
+
|
||||
+include(FindPackageHandleStandardArgs)
|
||||
+find_package_handle_standard_args(PNG
|
||||
+ REQUIRED_VARS PNG_LIBRARY PNG_PNG_INCLUDE_DIR
|
||||
+ VERSION_VAR PNG_VERSION_STRING)
|
||||
diff -Naur gdal/cmake/modules/packages/FindSQLite3.cmake GDAL_BLD/cmake/modules/packages/FindSQLite3.cmake
|
||||
--- gdal/cmake/modules/packages/FindSQLite3.cmake 2024-06-25 09:56:45.835498631 -0400
|
||||
+++ GDAL_BLD/cmake/modules/packages/FindSQLite3.cmake 2024-06-25 09:59:46.365399374 -0400
|
||||
@@ -57,7 +57,7 @@
|
||||
NAMES sqlite3.h
|
||||
HINTS ${PC_SQLITE3_INCLUDE_DIRS})
|
||||
find_library(SQLite3_LIBRARY
|
||||
- NAMES sqlite3 sqlite3_i
|
||||
+ NAMES sqlite3 sqlite3_i libsqlite3 libsqlite libsqlite3_i
|
||||
HINTS ${PC_SQLITE3_LIBRARY_DIRS})
|
||||
endif()
|
||||
|
||||
# Extract version information from the header file
|
||||
diff -Naurw gdal-3.6.3/cmake/modules/packages/FindZLIB.cmake gdal/cmake/modules/packages/FindZLIB.cmake
|
||||
--- gdal-3.6.3/cmake/modules/packages/FindZLIB.cmake 1969-12-31 19:00:00.000000000 -0500
|
||||
+++ gdal/cmake/modules/packages/FindZLIB.cmake 2023-08-17 10:20:09.866683737 -0400
|
||||
@@ -0,0 +1,123 @@
|
||||
+#.rst:
|
||||
+# FindZLIB
|
||||
+# --------
|
||||
+#
|
||||
+# Find the native ZLIB includes and library.
|
||||
+#
|
||||
+# IMPORTED Targets
|
||||
+# ^^^^^^^^^^^^^^^^
|
||||
+#
|
||||
+# This module defines :prop_tgt:`IMPORTED` target ``ZLIB::ZLIB``, if
|
||||
+# ZLIB has been found.
|
||||
+#
|
||||
+# Result Variables
|
||||
+# ^^^^^^^^^^^^^^^^
|
||||
+#
|
||||
+# This module defines the following variables:
|
||||
+#
|
||||
+# ::
|
||||
+#
|
||||
+# ZLIB_INCLUDE_DIRS - where to find zlib.h, etc.
|
||||
+# ZLIB_LIBRARIES - List of libraries when using zlib.
|
||||
+# ZLIB_FOUND - True if zlib found.
|
||||
+#
|
||||
+# ::
|
||||
+#
|
||||
+# ZLIB_VERSION_STRING - The version of zlib found (x.y.z)
|
||||
+# ZLIB_VERSION_MAJOR - The major version of zlib
|
||||
+# ZLIB_VERSION_MINOR - The minor version of zlib
|
||||
+# ZLIB_VERSION_PATCH - The patch version of zlib
|
||||
+# ZLIB_VERSION_TWEAK - The tweak version of zlib
|
||||
+#
|
||||
+# Backward Compatibility
|
||||
+# ^^^^^^^^^^^^^^^^^^^^^^
|
||||
+#
|
||||
+# The following variable are provided for backward compatibility
|
||||
+#
|
||||
+# ::
|
||||
+#
|
||||
+# ZLIB_MAJOR_VERSION - The major version of zlib
|
||||
+# ZLIB_MINOR_VERSION - The minor version of zlib
|
||||
+# ZLIB_PATCH_VERSION - The patch version of zlib
|
||||
+#
|
||||
+# Hints
|
||||
+# ^^^^^
|
||||
+#
|
||||
+# A user may set ``ZLIB_ROOT`` to a zlib installation root to tell this
|
||||
+# module where to look.
|
||||
+
|
||||
+#=============================================================================
|
||||
+# Copyright 2001-2011 Kitware, Inc.
|
||||
+#
|
||||
+# Distributed under the OSI-approved BSD License (the "License");
|
||||
+# see accompanying file Copyright.txt for details.
|
||||
+#
|
||||
+# This software is distributed WITHOUT ANY WARRANTY; without even the
|
||||
+# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||||
+# See the License for more information.
|
||||
+#=============================================================================
|
||||
+# (To distribute this file outside of CMake, substitute the full
|
||||
+# License text for the above reference.)
|
||||
+
|
||||
+set(_ZLIB_SEARCHES)
|
||||
+
|
||||
+# Search ZLIB_ROOT first if it is set.
|
||||
+if(ZLIB_ROOT)
|
||||
+ set(_ZLIB_SEARCH_ROOT PATHS ${ZLIB_ROOT} NO_DEFAULT_PATH)
|
||||
+ list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_ROOT)
|
||||
+endif()
|
||||
+
|
||||
+# Normal search.
|
||||
+set(_ZLIB_SEARCH_NORMAL
|
||||
+ PATHS "[HKEY_LOCAL_MACHINE\\SOFTWARE\\GnuWin32\\Zlib;InstallPath]"
|
||||
+ "$ENV{PROGRAMFILES}/zlib"
|
||||
+ )
|
||||
+list(APPEND _ZLIB_SEARCHES _ZLIB_SEARCH_NORMAL)
|
||||
+
|
||||
+set(ZLIB_NAMES z_brl z zlib zdll zlib1 zlibd zlibd1)
|
||||
+
|
||||
+# Try each search configuration.
|
||||
+foreach(search ${_ZLIB_SEARCHES})
|
||||
+ find_path(ZLIB_INCLUDE_DIR NAMES zlib.h ${${search}} PATH_SUFFIXES include)
|
||||
+ find_library(ZLIB_LIBRARY NAMES ${ZLIB_NAMES} ${${search}} PATH_SUFFIXES lib)
|
||||
+endforeach()
|
||||
+
|
||||
+mark_as_advanced(ZLIB_LIBRARY ZLIB_INCLUDE_DIR)
|
||||
+
|
||||
+if(ZLIB_INCLUDE_DIR AND EXISTS "${ZLIB_INCLUDE_DIR}/zlib.h")
|
||||
+ file(STRINGS "${ZLIB_INCLUDE_DIR}/zlib.h" ZLIB_H REGEX "^#define ZLIB_VERSION \"[^\"]*\"$")
|
||||
+
|
||||
+ string(REGEX REPLACE "^.*ZLIB_VERSION \"([0-9]+).*$" "\\1" ZLIB_VERSION_MAJOR "${ZLIB_H}")
|
||||
+ string(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_MINOR "${ZLIB_H}")
|
||||
+ string(REGEX REPLACE "^.*ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.([0-9]+).*$" "\\1" ZLIB_VERSION_PATCH "${ZLIB_H}")
|
||||
+ set(ZLIB_VERSION_STRING "${ZLIB_VERSION_MAJOR}.${ZLIB_VERSION_MINOR}.${ZLIB_VERSION_PATCH}")
|
||||
+
|
||||
+ # only append a TWEAK version if it exists:
|
||||
+ set(ZLIB_VERSION_TWEAK "")
|
||||
+ if( "${ZLIB_H}" MATCHES "ZLIB_VERSION \"[0-9]+\\.[0-9]+\\.[0-9]+\\.([0-9]+)")
|
||||
+ set(ZLIB_VERSION_TWEAK "${CMAKE_MATCH_1}")
|
||||
+ set(ZLIB_VERSION_STRING "${ZLIB_VERSION_STRING}.${ZLIB_VERSION_TWEAK}")
|
||||
+ endif()
|
||||
+
|
||||
+ set(ZLIB_MAJOR_VERSION "${ZLIB_VERSION_MAJOR}")
|
||||
+ set(ZLIB_MINOR_VERSION "${ZLIB_VERSION_MINOR}")
|
||||
+ set(ZLIB_PATCH_VERSION "${ZLIB_VERSION_PATCH}")
|
||||
+endif()
|
||||
+
|
||||
+# handle the QUIETLY and REQUIRED arguments and set ZLIB_FOUND to TRUE if
|
||||
+# all listed variables are TRUE
|
||||
+include(FindPackageHandleStandardArgs)
|
||||
+FIND_PACKAGE_HANDLE_STANDARD_ARGS(ZLIB REQUIRED_VARS ZLIB_LIBRARY ZLIB_INCLUDE_DIR
|
||||
+ VERSION_VAR ZLIB_VERSION_STRING)
|
||||
+
|
||||
+if(ZLIB_FOUND)
|
||||
+ set(ZLIB_INCLUDE_DIRS ${ZLIB_INCLUDE_DIR})
|
||||
+ set(ZLIB_LIBRARIES ${ZLIB_LIBRARY})
|
||||
+
|
||||
+ if(NOT TARGET ZLIB::ZLIB)
|
||||
+ add_library(ZLIB::ZLIB UNKNOWN IMPORTED)
|
||||
+ set_target_properties(ZLIB::ZLIB PROPERTIES
|
||||
+ IMPORTED_LOCATION "${ZLIB_LIBRARY}"
|
||||
+ INTERFACE_INCLUDE_DIRECTORIES "${ZLIB_INCLUDE_DIRS}")
|
||||
+ endif()
|
||||
+endif()
|
||||
diff -Naur gdal/gcore/gdal_priv.h GDAL_BLD/gcore/gdal_priv.h
|
||||
--- gdal/gcore/gdal_priv.h 2024-06-26 17:01:06.199711566 -0400
|
||||
+++ GDAL_BLD/gcore/gdal_priv.h 2024-06-26 17:00:48.433037793 -0400
|
||||
@@ -96,6 +96,13 @@
|
||||
/* GDALMultiDomainMetadata */
|
||||
/************************************************************************/
|
||||
|
||||
+#if defined(_WIN32)
|
||||
+#define STRCASECMP(a, b) (_stricmp(a, b))
|
||||
+#else
|
||||
+/** Alias for strcasecmp() */
|
||||
+#define STRCASECMP(a, b) (strcasecmp(a, b))
|
||||
+#endif
|
||||
+
|
||||
//! @cond Doxygen_Suppress
|
||||
class CPL_DLL GDALMultiDomainMetadata
|
||||
{
|
||||
diff -Naur gdal/gdal.cmake GDAL_BLD/gdal.cmake
|
||||
--- gdal/gdal.cmake 2024-06-25 09:56:45.660500506 -0400
|
||||
+++ GDAL_BLD/gdal.cmake 2024-06-25 09:55:37.834206511 -0400
|
||||
@@ -379,12 +379,6 @@
|
||||
set_property(TARGET ${GDAL_LIB_TARGET_NAME} PROPERTY PLUGIN_OUTPUT_DIR "${CMAKE_CURRENT_BINARY_DIR}/gdalplugins")
|
||||
file(MAKE_DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/gdalplugins")
|
||||
|
||||
-if (MSVC)
|
||||
- set(GDAL_DEBUG_POSTFIX
|
||||
- "d"
|
||||
- CACHE STRING "Postfix to add to the GDAL dll name for debug builds")
|
||||
- set_target_properties(${GDAL_LIB_TARGET_NAME} PROPERTIES DEBUG_POSTFIX "${GDAL_DEBUG_POSTFIX}")
|
||||
-endif ()
|
||||
if (MINGW AND BUILD_SHARED_LIBS)
|
||||
set_target_properties(${GDAL_LIB_TARGET_NAME} PROPERTIES SUFFIX "-${GDAL_SOVERSION}${CMAKE_SHARED_LIBRARY_SUFFIX}")
|
||||
endif ()
|
||||
diff -Naur gdal/port/cpl_port.h GDAL_BLD/port/cpl_port.h
|
||||
--- gdal/port/cpl_port.h 2024-06-25 09:56:45.954497348 -0400
|
||||
+++ GDAL_BLD/port/cpl_port.h 2024-06-25 09:55:37.836206491 -0400
|
||||
@@ -1123,7 +1123,7 @@
|
||||
#define TRUE 1
|
||||
#endif
|
||||
|
||||
-#if __clang_major__ >= 4 || (__clang_major__ == 3 && __clang_minor__ >= 8)
|
||||
+#if defined(__clang_major__) && (__clang_major__ >= 4 || ( __clang_major__ == 3 && __clang_minor__ >= 8) )
|
||||
#define CPL_NOSANITIZE_UNSIGNED_INT_OVERFLOW \
|
||||
__attribute__((no_sanitize("unsigned-integer-overflow")))
|
||||
#else
|
||||
@@ -0,0 +1,60 @@
|
||||
# Decide if we're using Geogram
|
||||
cad_enable(GEOGRAM "librt")
|
||||
|
||||
bext_enable(Geogram)
|
||||
|
||||
# Decision made, start processing if we are enabled
|
||||
|
||||
if (ENABLE_GEOGRAM)
|
||||
|
||||
git_submodule_init(geogram CMakeLists.txt)
|
||||
|
||||
RegisterDeps(GEOGRAM)
|
||||
|
||||
ExternalProject_Add(GEOGRAM_BLD
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/geogram"
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
PATCH_COMMAND ${PATCH_EXECUTABLE};-E;-p1;${PATCH_OPTIONS};-i;${CMAKE_CURRENT_SOURCE_DIR}/geogram_cmake.patch
|
||||
COMMAND ${PATCH_EXECUTABLE};-E;-p1;${PATCH_OPTIONS};-i;${CMAKE_CURRENT_SOURCE_DIR}/geogram_win32.patch
|
||||
CMAKE_ARGS
|
||||
${BUILD_TYPE_SPECIFIER}
|
||||
-DBIN_DIR=${BIN_DIR}
|
||||
-DLIB_DIR=${LIB_DIR}
|
||||
-DBUILD_STATIC_LIBS=${BUILD_STATIC_LIBS}
|
||||
-DCMAKE_CXX_COMPILER=${CMAKE_CXX_COMPILER}
|
||||
-DCMAKE_C_COMPILER=${CMAKE_C_COMPILER}
|
||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_BUNDLE_INSTALL_PREFIX}
|
||||
-DCMAKE_INSTALL_LIBDIR:PATH=${LIB_DIR}
|
||||
-DCMAKE_INSTALL_RPATH=${CMAKE_BUNDLE_INSTALL_PREFIX}/${LIB_DIR}
|
||||
-DGEOGRAM_LIB_ONLY=ON
|
||||
-DGEOGRAM_WITH_GRAPHICS=OFF
|
||||
-DGEOGRAM_WITH_LUA=OFF
|
||||
-DGEOGRAM_WITH_HLBFGS=OFF
|
||||
-DGEOGRAM_WITH_TETGEN=OFF
|
||||
-DGEOGRAM_WITH_TRIANGLE=OFF
|
||||
-DCMAKE_WINDOWS_EXPORT_ALL_SYMBOLS=ON
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(GEOGRAM GEOGRAM_DEPENDS)
|
||||
|
||||
# Copy the license into position in CMAKE_BUNDLE_INSTALL_PREFIX
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/geogram/LICENSE
|
||||
${DOC_LICENSE_DIR}/geogram.txt
|
||||
COPYONLY
|
||||
)
|
||||
|
||||
endif (ENABLE_GEOGRAM)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
|
||||
Submodule
+1
Submodule geogram/geogram added at 888172e37e
@@ -0,0 +1,2 @@
|
||||
PATCH
|
||||
|
||||
@@ -0,0 +1,41 @@
|
||||
diff -Naur geogram/CMakeLists.txt GEOGRAM_BLD/CMakeLists.txt
|
||||
--- geogram/CMakeLists.txt 2024-04-19 18:18:32.084173009 -0400
|
||||
+++ GEOGRAM_BLD/CMakeLists.txt 2024-04-19 18:19:29.107021784 -0400
|
||||
@@ -88,18 +88,6 @@
|
||||
endif()
|
||||
|
||||
##############################################################################
|
||||
-# RPATH (where executables find the .so / DLLs)
|
||||
-# - Enables RPATH support for MACOSX
|
||||
-# - Makes RPATH of dynamic libraries and executable point to the directory
|
||||
-# where libraries are installed.
|
||||
-
|
||||
-if(VORPALINE_BUILD_DYNAMIC)
|
||||
- set(CMAKE_MACOSX_RPATH 1)
|
||||
- set(CMAKE_INSTALL_RPATH "${CMAKE_INSTALL_PREFIX}/lib")
|
||||
-endif()
|
||||
-
|
||||
-set(CMAKE_INSTALL_NAME_DIR "${CMAKE_INSTALL_PREFIX}/lib")
|
||||
-
|
||||
# uninstall target
|
||||
# Needs to be created before add_subdirectory() because GLFw has
|
||||
# also an uninstall target that will be inhibited if there is
|
||||
diff -Naur geogram/src/lib/geogram/CMakeLists.txt GEOGRAM_BLD/src/lib/geogram/CMakeLists.txt
|
||||
--- geogram/src/lib/geogram/CMakeLists.txt 2024-04-19 18:18:32.092172847 -0400
|
||||
+++ GEOGRAM_BLD/src/lib/geogram/CMakeLists.txt 2024-04-19 18:18:42.479961704 -0400
|
||||
@@ -45,7 +45,7 @@
|
||||
|
||||
include_directories(${PROJECT_BINARY_DIR}/src/lib)
|
||||
|
||||
-add_library(geogram ${SOURCES} $<TARGET_OBJECTS:geogram_third_party>)
|
||||
+add_library(geogram SHARED ${SOURCES} $<TARGET_OBJECTS:geogram_third_party>)
|
||||
|
||||
target_include_directories(geogram PRIVATE
|
||||
${PROJECT_SOURCE_DIR}/src/lib/geogram/third_party/amgcl
|
||||
--- geogram/cmake/platforms/Linux-clang.cmake 2024-07-12 20:43:59.314646694 -0400
|
||||
+++ GEOGRAM_BLD/cmake/platforms/Linux-clang.cmake 2024-07-12 20:42:45.974952959 -0400
|
||||
@@ -147,3 +147,4 @@
|
||||
|
||||
endmacro()
|
||||
|
||||
+add_link_options(-latomic)
|
||||
@@ -0,0 +1,217 @@
|
||||
diff -Naur geogram/cmake/FindGeogram.cmake GEOGRAM_BLD/cmake/FindGeogram.cmake
|
||||
--- geogram/cmake/FindGeogram.cmake 2024-05-16 19:12:42.296106646 -0400
|
||||
+++ GEOGRAM_BLD/cmake/FindGeogram.cmake 2024-05-16 19:13:05.295717740 -0400
|
||||
@@ -109,36 +109,3 @@
|
||||
# Hide variables from the default CMake-Gui options
|
||||
mark_as_advanced (GEOGRAM_LIBRARY GEOGRAM_GFX_LIBRARY GEOGRAM_INCLUDE_DIR)
|
||||
|
||||
-# Some specific settings for Windows
|
||||
-
|
||||
-if(WIN32)
|
||||
-
|
||||
- # Default mode for Windows uses static libraries. Use this variable to
|
||||
- # link with geogram compiled as DLLs.
|
||||
- set(VORPALINE_BUILD_DYNAMIC FALSE CACHE BOOL "Installed Geogram uses DLLs")
|
||||
-
|
||||
- # remove warning for multiply defined symbols (caused by multiple
|
||||
- # instanciations of STL templates)
|
||||
- add_definitions(/wd4251)
|
||||
-
|
||||
- # remove all unused stuff from windows.h
|
||||
- add_definitions(-DWIN32_LEAN_AND_MEAN)
|
||||
- add_definitions(-DVC_EXTRALEAN)
|
||||
-
|
||||
- # do not define a min() and a max() macro, breaks
|
||||
- # std::min() and std::max() !!
|
||||
- add_definitions(-DNOMINMAX )
|
||||
-
|
||||
- # we want M_PI etc...
|
||||
- add_definitions(-D_USE_MATH_DEFINES)
|
||||
-
|
||||
- if(NOT VORPALINE_BUILD_DYNAMIC)
|
||||
- # If we use static library, we link with the static C++ runtime.
|
||||
- foreach(config ${CMAKE_CONFIGURATION_TYPES})
|
||||
- string(TOUPPER ${config} config)
|
||||
- string(REPLACE /MD /MT CMAKE_C_FLAGS_${config} "${CMAKE_C_FLAGS_${config}}")
|
||||
- string(REPLACE /MD /MT CMAKE_CXX_FLAGS_${config} "${CMAKE_CXX_FLAGS_${config}}")
|
||||
- endforeach()
|
||||
- endif()
|
||||
-
|
||||
-endif()
|
||||
diff -Naur geogram/cmake/platforms/Windows-vs.cmake GEOGRAM_BLD/cmake/platforms/Windows-vs.cmake
|
||||
--- geogram/cmake/platforms/Windows-vs.cmake 2024-05-16 19:12:42.300106579 -0400
|
||||
+++ GEOGRAM_BLD/cmake/platforms/Windows-vs.cmake 2024-05-16 19:13:46.791015211 -0400
|
||||
@@ -64,18 +64,9 @@
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /Z7")
|
||||
endif()
|
||||
|
||||
-# Change flags for static link
|
||||
-if(VORPALINE_BUILD_DYNAMIC)
|
||||
# remove warning for multiply defined symbols (caused by multiple
|
||||
# instanciations of STL templates)
|
||||
- add_definitions(/wd4251)
|
||||
-else()
|
||||
- foreach(config ${CMAKE_CONFIGURATION_TYPES})
|
||||
- string(TOUPPER ${config} config)
|
||||
- string(REPLACE /MD /MT CMAKE_C_FLAGS_${config} "${CMAKE_C_FLAGS_${config}}")
|
||||
- string(REPLACE /MD /MT CMAKE_CXX_FLAGS_${config} "${CMAKE_CXX_FLAGS_${config}}")
|
||||
- endforeach()
|
||||
-endif()
|
||||
+add_definitions(/wd4251)
|
||||
|
||||
# Additional release flags
|
||||
foreach(config RELEASE RELWITHDEBINFO MINSIZEREL)
|
||||
diff -Naur geogram/src/tutorial/01_basics/hello_geogram/FindGeogram.cmake GEOGRAM_BLD/src/tutorial/01_basics/hello_geogram/FindGeogram.cmake
|
||||
--- geogram/src/tutorial/01_basics/hello_geogram/FindGeogram.cmake 2024-05-16 19:12:42.376105295 -0400
|
||||
+++ GEOGRAM_BLD/src/tutorial/01_basics/hello_geogram/FindGeogram.cmake 2024-05-16 19:14:56.457833524 -0400
|
||||
@@ -5,8 +5,9 @@
|
||||
#
|
||||
# This module defines the following variables:
|
||||
#
|
||||
-# Geogram_FOUND - True if geogram has been found.
|
||||
-# Geogram::geogram - Imported target for the main Geogram library.
|
||||
+# Geogram_FOUND - True if geogram has been found.
|
||||
+# Geogram::geogram - Imported target for the main Geogram library.
|
||||
+# Geogram::geogram_gfx - Imported target for Geogram graphics library.
|
||||
#
|
||||
# This module reads hints about the Geogram location from the following
|
||||
# environment variables:
|
||||
@@ -52,20 +53,20 @@
|
||||
# system search path since it may be already installed
|
||||
# in the system
|
||||
find_library (GEOGRAM_GLFW3_LIBRARY
|
||||
- NAMES glfw3 glfw geogram_glfw3
|
||||
+ NAMES glfw3 glfw geogram_glfw3 glfw3dll glfwdll
|
||||
PATHS ${GEOGRAM_SEARCH_PATHS} ${GEOGRAM_SEARCH_PATHS_SYSTEM}
|
||||
PATH_SUFFIXES lib
|
||||
)
|
||||
|
||||
include (FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(
|
||||
- Geogram DEFAULT_MSG GEOGRAM_LIBRARY GEOGRAM_INCLUDE_DIR
|
||||
+ GEOGRAM DEFAULT_MSG GEOGRAM_LIBRARY GEOGRAM_INCLUDE_DIR
|
||||
)
|
||||
|
||||
# Create an imported target for Geogram
|
||||
-If (Geogram_FOUND)
|
||||
+If (GEOGRAM_FOUND)
|
||||
|
||||
- set(GEOGRAM_INSTALL_PREFIX ${GEOGRAM_INCLUDE_DIR}/..)
|
||||
+ set(GEOGRAM_INSTALL_PREFIX ${GEOGRAM_INCLUDE_DIR}/../..)
|
||||
|
||||
if (NOT TARGET Geogram::geogram)
|
||||
add_library (Geogram::geogram UNKNOWN IMPORTED)
|
||||
@@ -108,36 +109,3 @@
|
||||
# Hide variables from the default CMake-Gui options
|
||||
mark_as_advanced (GEOGRAM_LIBRARY GEOGRAM_GFX_LIBRARY GEOGRAM_INCLUDE_DIR)
|
||||
|
||||
-# Some specific settings for Windows
|
||||
-
|
||||
-if(WIN32)
|
||||
-
|
||||
- # Default mode for Windows uses static libraries. Use this variable to
|
||||
- # link with geogram compiled as DLLs.
|
||||
- set(VORPALINE_BUILD_DYNAMIC FALSE CACHE BOOL "Installed Geogram uses DLLs")
|
||||
-
|
||||
- # remove warning for multiply defined symbols (caused by multiple
|
||||
- # instanciations of STL templates)
|
||||
- add_definitions(/wd4251)
|
||||
-
|
||||
- # remove all unused stuff from windows.h
|
||||
- add_definitions(-DWIN32_LEAN_AND_MEAN)
|
||||
- add_definitions(-DVC_EXTRALEAN)
|
||||
-
|
||||
- # do not define a min() and a max() macro, breaks
|
||||
- # std::min() and std::max() !!
|
||||
- add_definitions(-DNOMINMAX )
|
||||
-
|
||||
- # we want M_PI etc...
|
||||
- add_definitions(-D_USE_MATH_DEFINES)
|
||||
-
|
||||
- if(NOT VORPALINE_BUILD_DYNAMIC)
|
||||
- # If we use static library, we link with the static C++ runtime.
|
||||
- foreach(config ${CMAKE_CONFIGURATION_TYPES})
|
||||
- string(TOUPPER ${config} config)
|
||||
- string(REPLACE /MD /MT CMAKE_C_FLAGS_${config} "${CMAKE_C_FLAGS_${config}}")
|
||||
- string(REPLACE /MD /MT CMAKE_CXX_FLAGS_${config} "${CMAKE_CXX_FLAGS_${config}}")
|
||||
- endforeach()
|
||||
- endif()
|
||||
-
|
||||
-endif()
|
||||
diff -Naur geogram/src/tutorial/01_basics/hello_GLUP_app/FindGeogram.cmake GEOGRAM_BLD/src/tutorial/01_basics/hello_GLUP_app/FindGeogram.cmake
|
||||
--- geogram/src/tutorial/01_basics/hello_GLUP_app/FindGeogram.cmake 2024-05-16 19:12:42.376105295 -0400
|
||||
+++ GEOGRAM_BLD/src/tutorial/01_basics/hello_GLUP_app/FindGeogram.cmake 2024-05-16 19:14:16.402513268 -0400
|
||||
@@ -5,8 +5,9 @@
|
||||
#
|
||||
# This module defines the following variables:
|
||||
#
|
||||
-# Geogram_FOUND - True if geogram has been found.
|
||||
-# Geogram::geogram - Imported target for the main Geogram library.
|
||||
+# Geogram_FOUND - True if geogram has been found.
|
||||
+# Geogram::geogram - Imported target for the main Geogram library.
|
||||
+# Geogram::geogram_gfx - Imported target for Geogram graphics library.
|
||||
#
|
||||
# This module reads hints about the Geogram location from the following
|
||||
# environment variables:
|
||||
@@ -52,20 +53,20 @@
|
||||
# system search path since it may be already installed
|
||||
# in the system
|
||||
find_library (GEOGRAM_GLFW3_LIBRARY
|
||||
- NAMES glfw3 glfw geogram_glfw3
|
||||
+ NAMES glfw3 glfw geogram_glfw3 glfw3dll glfwdll
|
||||
PATHS ${GEOGRAM_SEARCH_PATHS} ${GEOGRAM_SEARCH_PATHS_SYSTEM}
|
||||
PATH_SUFFIXES lib
|
||||
)
|
||||
|
||||
include (FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(
|
||||
- Geogram DEFAULT_MSG GEOGRAM_LIBRARY GEOGRAM_INCLUDE_DIR
|
||||
+ GEOGRAM DEFAULT_MSG GEOGRAM_LIBRARY GEOGRAM_INCLUDE_DIR
|
||||
)
|
||||
|
||||
# Create an imported target for Geogram
|
||||
-If (Geogram_FOUND)
|
||||
+If (GEOGRAM_FOUND)
|
||||
|
||||
- set(GEOGRAM_INSTALL_PREFIX ${GEOGRAM_INCLUDE_DIR}/..)
|
||||
+ set(GEOGRAM_INSTALL_PREFIX ${GEOGRAM_INCLUDE_DIR}/../..)
|
||||
|
||||
if (NOT TARGET Geogram::geogram)
|
||||
add_library (Geogram::geogram UNKNOWN IMPORTED)
|
||||
@@ -108,36 +109,3 @@
|
||||
# Hide variables from the default CMake-Gui options
|
||||
mark_as_advanced (GEOGRAM_LIBRARY GEOGRAM_GFX_LIBRARY GEOGRAM_INCLUDE_DIR)
|
||||
|
||||
-# Some specific settings for Windows
|
||||
-
|
||||
-if(WIN32)
|
||||
-
|
||||
- # Default mode for Windows uses static libraries. Use this variable to
|
||||
- # link with geogram compiled as DLLs.
|
||||
- set(VORPALINE_BUILD_DYNAMIC FALSE CACHE BOOL "Installed Geogram uses DLLs")
|
||||
-
|
||||
- # remove warning for multiply defined symbols (caused by multiple
|
||||
- # instanciations of STL templates)
|
||||
- add_definitions(/wd4251)
|
||||
-
|
||||
- # remove all unused stuff from windows.h
|
||||
- add_definitions(-DWIN32_LEAN_AND_MEAN)
|
||||
- add_definitions(-DVC_EXTRALEAN)
|
||||
-
|
||||
- # do not define a min() and a max() macro, breaks
|
||||
- # std::min() and std::max() !!
|
||||
- add_definitions(-DNOMINMAX )
|
||||
-
|
||||
- # we want M_PI etc...
|
||||
- add_definitions(-D_USE_MATH_DEFINES)
|
||||
-
|
||||
- if(NOT VORPALINE_BUILD_DYNAMIC)
|
||||
- # If we use static library, we link with the static C++ runtime.
|
||||
- foreach(config ${CMAKE_CONFIGURATION_TYPES})
|
||||
- string(TOUPPER ${config} config)
|
||||
- string(REPLACE /MD /MT CMAKE_C_FLAGS_${config} "${CMAKE_C_FLAGS_${config}}")
|
||||
- string(REPLACE /MD /MT CMAKE_CXX_FLAGS_${config} "${CMAKE_CXX_FLAGS_${config}}")
|
||||
- endforeach()
|
||||
- endif()
|
||||
-
|
||||
-endif()
|
||||
@@ -0,0 +1,53 @@
|
||||
# Decide if we're using GeometricTools
|
||||
cad_enable(GTE "libbg")
|
||||
|
||||
unset(GTE_BUNDLED CACHE)
|
||||
|
||||
if (NOT ENABLE_GTE AND NOT DISABLE_GTE)
|
||||
|
||||
# https://github.com/davideberly/GeometricTools
|
||||
find_package(GTE)
|
||||
|
||||
if (NOT TARGET GTE::GTE)
|
||||
set(ENABLE_GTE "ON" CACHE BOOL "Enable GeometricTools build")
|
||||
endif (NOT TARGET GTE::GTE)
|
||||
|
||||
endif (NOT ENABLE_GTE AND NOT DISABLE_GTE)
|
||||
|
||||
set(ENABLE_GTE "${ENABLE_GTE}" CACHE BOOL "Enable GeometricTools build")
|
||||
|
||||
# Decision made
|
||||
|
||||
if (ENABLE_GTE)
|
||||
|
||||
git_submodule_init(GeometricTools GTE/CMakeLists.txt)
|
||||
|
||||
RegisterDeps(GTE)
|
||||
|
||||
ExternalProject_Add(GTE_BLD
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/GeometricTools"
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
PATCH_COMMAND ${PATCH_EXECUTABLE};-E;-p1;${PATCH_OPTIONS};-i;${CMAKE_CURRENT_SOURCE_DIR}/gte.patch
|
||||
CMAKE_ARGS
|
||||
${BUILD_TYPE_SPECIFIER}
|
||||
-DCMAKE_INSTALL_PREFIX=${CMAKE_NOBUNDLE_INSTALL_PREFIX}
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(GTE GTE_DEPENDS)
|
||||
|
||||
set(GTE_BUNDLED TRUE CACHE BOOL "GeometricTools bundle flag")
|
||||
|
||||
endif (ENABLE_GTE)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
|
||||
Submodule
+1
Submodule gte/GeometricTools added at 435934dd27
@@ -0,0 +1,2 @@
|
||||
PATCH
|
||||
|
||||
@@ -0,0 +1,23 @@
|
||||
diff -Naur GeometricTools/CMakeLists.txt GTE_BLD/CMakeLists.txt
|
||||
--- GeometricTools/CMakeLists.txt 1969-12-31 19:00:00.000000000 -0500
|
||||
+++ GTE_BLD/CMakeLists.txt 2024-07-31 16:48:17.163077007 -0400
|
||||
@@ -0,0 +1,19 @@
|
||||
+cmake_minimum_required(VERSION 3.8)
|
||||
+
|
||||
+project(GTE)
|
||||
+
|
||||
+file(GLOB GTE_MFILES "${CMAKE_SOURCE_DIR}/GTE/Mathematics/*")
|
||||
+
|
||||
+if(NOT DEFINED INCLUDE_DIR)
|
||||
+ set(INCLUDE_DIR include)
|
||||
+endif(NOT DEFINED INCLUDE_DIR)
|
||||
+
|
||||
+install(FILES ${GTE_MFILES} DESTINATION ${INCLUDE_DIR}/GTE/Mathematics)
|
||||
+
|
||||
+# Local Variables:
|
||||
+# tab-width: 8
|
||||
+# mode: cmake
|
||||
+# indent-tabs-mode: t
|
||||
+# End:
|
||||
+# ex: shiftwidth=2 tabstop=8
|
||||
+
|
||||
@@ -0,0 +1,46 @@
|
||||
# It looks like Windows and OSX have their own solutions for unicode...
|
||||
if (NOT WIN32 AND NOT APPLE)
|
||||
|
||||
bext_enable(ICU)
|
||||
|
||||
if (ENABLE_ICU)
|
||||
|
||||
git_submodule_init(icu icu4c/source/configure)
|
||||
|
||||
RegisterDeps(ICU)
|
||||
|
||||
ExternalProject_Add(ICU_BLD
|
||||
URL "${CMAKE_CURRENT_SOURCE_DIR}/icu"
|
||||
SOURCE_SUBDIR icu4c/source
|
||||
BUILD_IN_SOURCE ON
|
||||
BUILD_ALWAYS ${EXT_BUILD_ALWAYS} ${LOG_OPTS}
|
||||
CONFIGURE_COMMAND <SOURCE_DIR>/<SOURCE_SUBDIR>/configure --disable-extras --disable-tools --disable-tests --disable-samples --prefix=${CMAKE_BUNDLE_INSTALL_PREFIX}
|
||||
BUILD_COMMAND make -j${pcnt}
|
||||
INSTALL_COMMAND make -j1 install
|
||||
LOG_CONFIGURE ${EXT_BUILD_QUIET}
|
||||
LOG_BUILD ${EXT_BUILD_QUIET}
|
||||
LOG_INSTALL ${EXT_BUILD_QUIET}
|
||||
LOG_OUTPUT_ON_FAILURE ${EXT_BUILD_QUIET}
|
||||
STEP_TARGETS install
|
||||
)
|
||||
|
||||
TargetInstallDeps(FMT FMT_DEPENDS)
|
||||
|
||||
# Copy the license into position in CMAKE_BUNDLE_INSTALL_PREFIX
|
||||
configure_file(
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/icu/icu4c/LICENSE
|
||||
${DOC_LICENSE_DIR}/icu.txt
|
||||
COPYONLY
|
||||
)
|
||||
|
||||
endif (ENABLE_ICU)
|
||||
|
||||
endif (NOT WIN32 AND NOT APPLE)
|
||||
|
||||
# Local Variables:
|
||||
# tab-width: 8
|
||||
# mode: cmake
|
||||
# indent-tabs-mode: t
|
||||
# End:
|
||||
# ex: shiftwidth=2 tabstop=8
|
||||
|
||||
Submodule
+1
Submodule icu/icu added at f60c70ad33
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user