Compare commits
607 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
e4ebc01401 | ||
|
|
6ea6ae633b | ||
|
|
9fac52fa58 | ||
|
|
fc5d3c9a5c | ||
| c75ad2673e | |||
| b97a35fec8 | |||
|
|
350570134e | ||
|
|
72f3e75c8d | ||
|
|
90f97a7037 | ||
|
|
fd86f0ff04 | ||
|
|
bcc6cb96ae | ||
|
|
a4bc0db6e6 | ||
|
|
48ebe2c64e | ||
|
|
9f788996dc | ||
|
|
13d6ca598c | ||
| ee1a49045a | |||
|
|
78f263f359 | ||
| 43e75e3901 | |||
|
|
131578124b | ||
|
|
7bd3e7aa2e | ||
|
|
86154953f5 | ||
|
|
07572ab025 | ||
|
|
0733beae50 | ||
|
|
a3d8531008 | ||
|
|
7a6e11cae0 | ||
|
|
7384351181 | ||
|
|
890cbc2c0d | ||
|
|
2612b47c3f | ||
|
|
f4c474eb77 | ||
|
|
1735a821db | ||
|
|
1d19ba4cc2 | ||
|
|
144f9756ea | ||
|
|
48eed22f3b | ||
|
|
8ac2c87156 | ||
|
|
0d2ffcd97f | ||
|
|
c8eccfcb8f | ||
|
|
6fb40b02fe | ||
|
|
dad0ee9c89 | ||
|
|
065fe7cab6 | ||
|
|
e4ad4becde | ||
|
|
1cd141c540 | ||
| 72026a27a0 | |||
|
|
9fb820b46e | ||
|
|
721e9cc3a7 | ||
|
|
0186836449 | ||
|
|
b90ab7de13 | ||
|
|
333be085c0 | ||
|
|
169948967f | ||
|
|
5a11954c51 | ||
|
|
9f8a8b9c1f | ||
|
|
d0cf47cd6f | ||
|
|
f4aee8e6b7 | ||
| dac620a708 | |||
| 4ee766b6b1 | |||
| 5143258011 | |||
|
|
ead8b7e82b | ||
|
|
8483ff9560 | ||
| b7cc33c3c9 | |||
| 9e7cd241e0 | |||
| faac1df1c6 | |||
|
|
1f8851a5dc | ||
|
|
ac3e8af9fd | ||
|
|
98a30e8029 | ||
|
|
594e5ee9db | ||
|
|
135193c4bd | ||
|
|
9d65da5c61 | ||
|
|
f9d1fbeedb | ||
|
|
2b8a944a7d | ||
|
|
83cbf8a4c7 | ||
|
|
47880fbcf7 | ||
|
|
b0bff556c9 | ||
|
|
932e506df1 | ||
|
|
b7991b6eca | ||
|
|
f6cd43b7cc | ||
|
|
e6a2047bbf | ||
|
|
7923076b1c | ||
|
|
46ad962cd8 | ||
|
|
f47e1d94a3 | ||
|
|
022b8d468b | ||
|
|
152d306ad8 | ||
|
|
012139638d | ||
|
|
78b575f487 | ||
|
|
74713632a6 | ||
|
|
dd5df7363c | ||
|
|
3888e9dec7 | ||
|
|
af206ba7fc | ||
|
|
be4d1604ba | ||
|
|
8e2217dbf7 | ||
|
|
34b3306faa | ||
|
|
8c88d052bb | ||
|
|
ad7575f5a4 | ||
|
|
601ac051db | ||
|
|
c0aeb4c69b | ||
|
|
7cdaaf716a | ||
|
|
615ba73044 | ||
|
|
c285f2a78f | ||
|
|
fcb227ed97 | ||
|
|
4f6aa7ec29 | ||
| 60f6ba7b49 | |||
|
|
8045770751 | ||
|
|
2e4113b63b | ||
|
|
3b50194837 | ||
| 99f70a1081 | |||
|
|
5d9ffe15da | ||
|
|
3ac8dcc3de | ||
|
|
25e155ee8c | ||
|
|
049cc175a9 | ||
|
|
0d92b74aae | ||
|
|
ecba8a3a5e | ||
|
|
466a9b565e | ||
|
|
c304b7db53 | ||
|
|
0eb31ed70b | ||
|
|
c5f5e4e508 | ||
|
|
9866815dab | ||
|
|
0e66b3edff | ||
|
|
dd154180bf | ||
|
|
574fe116fc | ||
|
|
052a0c7e19 | ||
|
|
979dde8376 | ||
|
|
9a0113f834 | ||
|
|
3d70e70640 | ||
|
|
f9e53dded6 | ||
| 403ebab858 | |||
|
|
8e62ea4965 | ||
|
|
f00de26be1 | ||
|
|
50b6a3801a | ||
|
|
2a5def7fc6 | ||
|
|
fd072e4429 | ||
|
|
3a5c9ab0cd | ||
|
|
c735de4ff8 | ||
|
|
bb5423171d | ||
|
|
4e4e55ca89 | ||
|
|
e9748881cd | ||
|
|
39b0301062 | ||
|
|
2f98251c9f | ||
|
|
535c9c2a06 | ||
|
|
057eb87101 | ||
| 457387ed38 | |||
| b6fffc2225 | |||
| 86cdfc596f | |||
|
|
3dae29b7e8 | ||
|
|
9d393c4437 | ||
|
|
a5c3330c8e | ||
|
|
856f345d2c | ||
|
|
3f4d080260 | ||
|
|
1e8d49f2a6 | ||
|
|
31b22fd253 | ||
|
|
916b17ef3f | ||
|
|
437320926b | ||
|
|
7890e67d37 | ||
|
|
918a188285 | ||
|
|
2f730b8e9f | ||
|
|
1835187a86 | ||
|
|
f287cfa2ac | ||
|
|
785237e41a | ||
| 23999a106b | |||
|
|
91e1d0ab80 | ||
|
|
172bfce1f3 | ||
|
|
615e7e99ce | ||
|
|
57c930fbee | ||
|
|
785b777baf | ||
|
|
d0d15ee911 | ||
|
|
5af9c7e50d | ||
|
|
5fe563bed8 | ||
|
|
772c10d904 | ||
|
|
72d50ce274 | ||
|
|
0a6b9e4511 | ||
| be8f8b41ff | |||
|
|
1b46077096 | ||
|
|
ede745cc34 | ||
|
|
a864f16318 | ||
|
|
4c20518864 | ||
|
|
6ca716a77f | ||
|
|
aa77b1c04a | ||
|
|
fe4247d57d | ||
|
|
77490d4939 | ||
|
|
0495ac3bc5 | ||
|
|
4a305a42a7 | ||
|
|
11fba63d18 | ||
|
|
1db37bcd91 | ||
|
|
beec00b403 | ||
|
|
4966baf423 | ||
|
|
e5b4829074 | ||
|
|
d8b5616772 | ||
|
|
92615a77fe | ||
|
|
b3f92d81db | ||
|
|
839f764bcb | ||
|
|
4bb50fe664 | ||
|
|
c77f32b19c | ||
|
|
66ce1c2076 | ||
|
|
1a9dc993c1 | ||
|
|
cb1571783b | ||
|
|
5dfc6caf3c | ||
|
|
cb49bd0133 | ||
|
|
4720b61c1f | ||
| 4383cf291e | |||
|
|
a6977ae731 | ||
|
|
07cbf00187 | ||
|
|
c75b9ad0be | ||
|
|
87acb98d1e | ||
|
|
403e203325 | ||
|
|
a7a56912eb | ||
|
|
fe4a32e425 | ||
|
|
823386573f | ||
|
|
ea8247586f | ||
|
|
e88a186fc3 | ||
|
|
20f32068c3 | ||
|
|
8998341588 | ||
|
|
448fde0671 | ||
|
|
477e36b1f0 | ||
|
|
fad830bd14 | ||
|
|
331df3d7e4 | ||
|
|
4a53713f37 | ||
|
|
2e6fd505d2 | ||
|
|
5ecf7d18a8 | ||
|
|
56dbc949ff | ||
|
|
6a369acd0b | ||
|
|
d9d35a4eab | ||
|
|
116881ad87 | ||
| 96857d92bc | |||
|
|
0cf8c934f9 | ||
|
|
69d05fe5b0 | ||
|
|
511bf1ffca | ||
|
|
7a7028de56 | ||
|
|
7a65c001ce | ||
|
|
0bc6ff3d4c | ||
|
|
f2fe9d1203 | ||
|
|
ffc2d0f23a | ||
|
|
a352865df9 | ||
|
|
63740f2edd | ||
|
|
f4be9daf4d | ||
|
|
3fa1932345 | ||
|
|
95bd5453d9 | ||
|
|
eb3f8a004c | ||
|
|
9f868a1074 | ||
|
|
b41787b6bf | ||
| 19b232545c | |||
|
|
2ca70d3aa2 | ||
|
|
395015aac4 | ||
|
|
92cae86ff2 | ||
|
|
49ea46ee5e | ||
|
|
df908f299b | ||
|
|
6dec68554c | ||
|
|
badd8f518d | ||
|
|
766c9906b5 | ||
|
|
60fa2d31da | ||
|
|
88ea1507f4 | ||
|
|
8c08c57247 | ||
|
|
45b3bce515 | ||
|
|
7c4a21eab4 | ||
|
|
fab8fd7102 | ||
|
|
3d25756065 | ||
|
|
5aca4c684c | ||
|
|
39b5c01c5d | ||
|
|
3b22e5f710 | ||
|
|
9f660f2238 | ||
|
|
ca9c957e62 | ||
|
|
8488c9e891 | ||
|
|
1f2edb69d2 | ||
|
|
fe3ee85aee | ||
|
|
a74789d9c0 | ||
|
|
7830345e59 | ||
|
|
1595ed8860 | ||
|
|
d97943b697 | ||
|
|
f8f4376594 | ||
|
|
df397f4ade | ||
|
|
7fd690e53e | ||
|
|
bc5d347bb2 | ||
|
|
3ea29f581b | ||
|
|
6de82bb0fd | ||
| e1a51e2839 | |||
|
|
0f59d823d3 | ||
|
|
00dc55b8a2 | ||
|
|
524f81b8bd | ||
|
|
80e62031e9 | ||
|
|
d87fd0db01 | ||
|
|
6636b4b9e7 | ||
|
|
b51d1de283 | ||
|
|
38c99df2e0 | ||
|
|
688195a273 | ||
|
|
d691acc001 | ||
|
|
059d32a975 | ||
|
|
5c99031157 | ||
|
|
a01c671399 | ||
|
|
b2c80efd33 | ||
|
|
39b6fa26da | ||
|
|
3ee6097ab7 | ||
|
|
500a57738b | ||
|
|
f488765631 | ||
|
|
3a2d225682 | ||
|
|
1d056c6fe4 | ||
|
|
42604fc794 | ||
|
|
4ecc0daa79 | ||
|
|
5a1f3ecc8b | ||
|
|
cb97d662a7 | ||
|
|
d4fab0d20e | ||
|
|
0c13e6ba6c | ||
|
|
8f1243da40 | ||
|
|
fe9995c0b5 | ||
|
|
f56412d6a5 | ||
|
|
07d18c55ba | ||
|
|
9f97f25669 | ||
| 912a82c0b5 | |||
| acf2241fd0 | |||
|
|
b878295d06 | ||
| f41f11c7f6 | |||
|
|
216359974c | ||
|
|
17ad04505e | ||
|
|
3500a02034 | ||
|
|
52b18d56a0 | ||
|
|
5507646ce7 | ||
|
|
625c2ef159 | ||
|
|
bdaca51d96 | ||
|
|
9655b78e11 | ||
|
|
e11f88017d | ||
|
|
8a3020033e | ||
|
|
bd1af9ac95 | ||
|
|
d5959ca20a | ||
|
|
e10dcede7d | ||
|
|
c042b08ab0 | ||
|
|
5eff3803a8 | ||
|
|
151256533f | ||
|
|
3b484f58d3 | ||
|
|
d3f93746a8 | ||
|
|
f99a1cb0f3 | ||
|
|
531a769007 | ||
|
|
3e51491628 | ||
| 0b01fb20db | |||
|
|
c7a769e5da | ||
|
|
a9fd57a865 | ||
| e862f0e95f | |||
| 172597e0e6 | |||
| bcdeeed206 | |||
|
|
b6626e4f60 | ||
|
|
e1c1bb8b1b | ||
|
|
90ae51e8f2 | ||
|
|
832abbd3b1 | ||
|
|
52cc68433f | ||
|
|
f430389ee7 | ||
|
|
bded79f14d | ||
|
|
2ff44cb386 | ||
|
|
a9ade9669a | ||
|
|
f902d70006 | ||
|
|
e22d74310b | ||
|
|
e5ad12e638 | ||
|
|
b963a4564e | ||
|
|
579c125b01 | ||
|
|
84d9617375 | ||
|
|
d66e90a016 | ||
|
|
373e5440ac | ||
|
|
dec23501e1 | ||
|
|
11a4bed9aa | ||
|
|
bf4a4c6b78 | ||
|
|
b54d4b9a24 | ||
|
|
84f4771691 | ||
|
|
1dc34a02e2 | ||
|
|
3ab22818da | ||
|
|
1ab474638d | ||
|
|
eea361bf5e | ||
|
|
d9052f7105 | ||
|
|
fa00572780 | ||
|
|
636f5517b2 | ||
|
|
718da5c9be | ||
|
|
e5335ce760 | ||
| 3dbc9ea264 | |||
|
|
80da400f9c | ||
|
|
5787125bbb | ||
|
|
bc54524270 | ||
|
|
a2d53c05f6 | ||
|
|
3293a29d59 | ||
|
|
550e902bf3 | ||
|
|
84e5cc0b69 | ||
|
|
4b63882f28 | ||
|
|
fb742beae3 | ||
|
|
7ef0c80630 | ||
|
|
1f75813a4d | ||
|
|
34ad8e2347 | ||
|
|
413f14e4ae | ||
|
|
c22895d499 | ||
|
|
e63184e518 | ||
|
|
755a4541c5 | ||
|
|
05cd7edf71 | ||
|
|
5759726a89 | ||
|
|
14e7926d22 | ||
|
|
c068fe3525 | ||
|
|
c2364d9d1c | ||
|
|
6be0372257 | ||
|
|
e994ad78db | ||
|
|
49fddaa13e | ||
|
|
7448a8bfa9 | ||
|
|
166267a32f | ||
|
|
b460c2659e | ||
|
|
7ccc3ab82d | ||
|
|
adb0c898a6 | ||
|
|
b38ff09f6e | ||
|
|
d9ca8a70f0 | ||
|
|
60128ee924 | ||
|
|
b189991f9d | ||
|
|
07ffc1ffae | ||
|
|
a6afef4850 | ||
|
|
9c0c486111 | ||
|
|
3f5cf61fb6 | ||
|
|
6222902688 | ||
|
|
7febee04fa | ||
|
|
4640f0a8ae | ||
|
|
8969a952e4 | ||
|
|
bc9415bb10 | ||
|
|
cbd86ada20 | ||
|
|
0f8ea3aa36 | ||
|
|
f62f68fd66 | ||
|
|
eddafd2827 | ||
|
|
e3ce9d7f1a | ||
|
|
df96e6df0f | ||
|
|
6fab3cafc5 | ||
|
|
e4811d5a28 | ||
|
|
34af1a12bc | ||
|
|
0301e60629 | ||
|
|
759a737983 | ||
|
|
eeddf54b84 | ||
|
|
6f6ab3b758 | ||
|
|
59d16c56a1 | ||
|
|
58edb984c9 | ||
|
|
eb3207ee21 | ||
|
|
098ee6c063 | ||
|
|
54c02e2c24 | ||
|
|
efc7cbaf7f | ||
|
|
ede35aa152 | ||
|
|
a8e8d22c31 | ||
| c2df1c6fe5 | |||
| c5a7548526 | |||
| dc70dfd625 | |||
| 20e20cbf2b | |||
| 2e44ca586f | |||
| c9619d013a | |||
| ec650e8c3f | |||
|
|
d47fa4caa4 | ||
|
|
f0369058bb | ||
|
|
df96c0170a | ||
|
|
a411a19b2a | ||
|
|
c0db7a0beb | ||
|
|
52dfb89741 | ||
|
|
b652e8230a | ||
|
|
0efffc1bcb | ||
|
|
d7030ae8a5 | ||
|
|
24f30ede22 | ||
|
|
04ee3f2888 | ||
|
|
a373327b59 | ||
|
|
1fa98d489f | ||
|
|
5cef60a3e4 | ||
|
|
20fb6b9ef5 | ||
|
|
a249561677 | ||
|
|
96887926bf | ||
|
|
c8647ffab7 | ||
|
|
e28c914966 | ||
|
|
f086be93a9 | ||
|
|
6feaaebd75 | ||
|
|
5d92d406a1 | ||
|
|
ad1a13730a | ||
|
|
a24a84c315 | ||
|
|
6e7a715380 | ||
|
|
b88b35d117 | ||
|
|
0a20825c6e | ||
|
|
424d678abf | ||
|
|
007279cf29 | ||
|
|
752ca97f7e | ||
|
|
bf0b4d2f61 | ||
|
|
87d5c01853 | ||
|
|
956af730a9 | ||
|
|
32564b1a94 | ||
|
|
5b690d5467 | ||
|
|
9efebb6d3d | ||
|
|
1df973b234 | ||
|
|
c71ebd1221 | ||
|
|
167807f0c4 | ||
|
|
e6b8ecd55e | ||
|
|
9048aa3438 | ||
|
|
5ba8080f6e | ||
|
|
a0a7a94944 | ||
|
|
42c7dbcd21 | ||
|
|
4b8edd2b6f | ||
|
|
d82ab819ef | ||
|
|
5f02bad3fc | ||
|
|
83a685867c | ||
|
|
05311e0c94 | ||
|
|
35f4d3f8dd | ||
|
|
9864f79d67 | ||
|
|
91800787ed | ||
|
|
05b27067cf | ||
|
|
ccdd2808d9 | ||
|
|
00183fcd4b | ||
|
|
1be06fc0e9 | ||
|
|
7cdc44434c | ||
|
|
f3dfb36117 | ||
|
|
500e901e3d | ||
|
|
a3b09ef1b8 | ||
|
|
55d4801eb0 | ||
|
|
af41b95b98 | ||
|
|
c6605b5d87 | ||
|
|
9b9ed04ae2 | ||
|
|
50f9b12e7d | ||
|
|
bfd2684e58 | ||
|
|
95fcf690ad | ||
|
|
0fa3337404 | ||
|
|
e5b6ef9893 | ||
|
|
5b64eaac73 | ||
|
|
30d4a583d0 | ||
|
|
6249ef08f7 | ||
|
|
b5105740e6 | ||
|
|
818f33e78f | ||
|
|
571165df26 | ||
|
|
4df48c91f4 | ||
|
|
32652414b3 | ||
|
|
9c8aaa93cd | ||
|
|
abe819b51d | ||
|
|
cf278b4159 | ||
|
|
50594a8cc3 | ||
|
|
ce420588db | ||
|
|
4d3a27fdb0 | ||
|
|
6176a81a76 | ||
|
|
a722bb9289 | ||
|
|
19daf6136f | ||
|
|
0552f2bb72 | ||
|
|
9bb11e6e88 | ||
|
|
2f8272d3a1 | ||
|
|
7cf2a1daca | ||
|
|
d019e9787a | ||
|
|
4b884c15b1 | ||
|
|
0ace4e4a30 | ||
|
|
3cf2d3737f | ||
|
|
5997018fb0 | ||
|
|
2afa4ea390 | ||
|
|
f0c86c5cb3 | ||
|
|
8e4ffd46a0 | ||
|
|
f109371268 | ||
|
|
e566c52a78 | ||
|
|
8d0bfcbc5b | ||
|
|
3fadf4a26c | ||
|
|
9ebd841738 | ||
|
|
94b0e2621f | ||
|
|
a44ddd586e | ||
|
|
6fbf95ab18 | ||
|
|
5485adacb9 | ||
|
|
6ecc384116 | ||
|
|
66537d01bd | ||
|
|
b6f69241e1 | ||
|
|
4fc549234c | ||
|
|
0bcffb56bb | ||
|
|
60001c0571 | ||
|
|
37b95bc242 | ||
|
|
4e9bb9fe50 | ||
|
|
371cdde6df | ||
|
|
cbae8d37b3 | ||
|
|
9eb88f27d9 | ||
|
|
e329fa3296 | ||
|
|
492672c718 | ||
|
|
b4d7ebd648 | ||
|
|
0f0f9f49d6 | ||
|
|
6d3821adb8 | ||
|
|
92e97af610 | ||
|
|
b0e2e8426f | ||
|
|
3e371da8ec | ||
|
|
91941af992 | ||
|
|
d2644baf38 | ||
|
|
62092d4399 | ||
|
|
6c5d56688d | ||
|
|
a6779df21c | ||
|
|
d8c5379453 | ||
|
|
7a9801a4cb | ||
|
|
f33add020e | ||
|
|
3bebe6e873 | ||
|
|
2fbaa7f926 | ||
|
|
e55e4d7646 | ||
|
|
5efc0cbfce | ||
|
|
3a182a9eea | ||
|
|
0e56e202fc | ||
|
|
d9fd73a850 | ||
|
|
d508962211 | ||
|
|
7cb80d5a17 | ||
|
|
051e3f3bc3 | ||
|
|
db216e63a7 | ||
|
|
7a3c9eaaa0 | ||
|
|
4bece4ad92 | ||
|
|
36f11fba95 | ||
|
|
7017e54930 | ||
|
|
43b623d80e | ||
|
|
132f9105d0 | ||
|
|
1655d68ec4 | ||
|
|
e4a81bb361 | ||
|
|
d1094ee787 | ||
|
|
34baa485bc | ||
| c5012d9f73 | |||
|
|
7c168f20f4 | ||
|
|
de7ad13b3c | ||
|
|
5e2a52401f | ||
| 6173baed1e | |||
| 71efed8c1b | |||
| 9a09436ac8 | |||
|
|
6063de9a8b | ||
|
|
51191e6155 | ||
|
|
2f0a7c7342 | ||
|
|
edb9208b01 | ||
|
|
4f0cc20e2b | ||
|
|
6c573b496a | ||
|
|
1d85bc7424 | ||
|
|
f4d94b9725 | ||
|
|
4e7a18bfb4 | ||
|
|
c1ae5064b8 |
@@ -25,17 +25,6 @@ init:
|
|||||||
# Set clone depth (do not fetch complete history)
|
# Set clone depth (do not fetch complete history)
|
||||||
clone_depth: 5
|
clone_depth: 5
|
||||||
|
|
||||||
# Skipping commits affecting only specific files
|
|
||||||
skip_commits:
|
|
||||||
files:
|
|
||||||
- 'documentation/*'
|
|
||||||
- 'startup/*'
|
|
||||||
- '.github/*'
|
|
||||||
- '.tools/*'
|
|
||||||
- '.gitattributes'
|
|
||||||
- '**/*.html'
|
|
||||||
- '**/*.md'
|
|
||||||
|
|
||||||
#---------------------------------#
|
#---------------------------------#
|
||||||
# build matrix configuration #
|
# build matrix configuration #
|
||||||
#---------------------------------#
|
#---------------------------------#
|
||||||
@@ -63,10 +52,10 @@ environment:
|
|||||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||||
- CMP: vs2015
|
- CMP: vs2015
|
||||||
- CMP: vs2013
|
- CMP: vs2013
|
||||||
- CMP: vs2012
|
|
||||||
- CMP: vs2010
|
|
||||||
- CMP: gcc
|
- CMP: gcc
|
||||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||||
|
# TODO: static linking w/ readline isn't working. Bypass auto-detect
|
||||||
|
COMMANDLINE_LIBRARY: EPICS
|
||||||
|
|
||||||
# Platform: processor architecture
|
# Platform: processor architecture
|
||||||
platform:
|
platform:
|
||||||
@@ -76,11 +65,6 @@ platform:
|
|||||||
# Matrix configuration: exclude sets of jobs
|
# Matrix configuration: exclude sets of jobs
|
||||||
matrix:
|
matrix:
|
||||||
exclude:
|
exclude:
|
||||||
# VS2012 and older installs don't have the 64 bit compiler
|
|
||||||
- platform: x64
|
|
||||||
CMP: vs2012
|
|
||||||
- platform: x64
|
|
||||||
CMP: vs2010
|
|
||||||
# Exclude more jobs to reduce build time
|
# Exclude more jobs to reduce build time
|
||||||
# Skip 32-bit for "middle-aged" compilers
|
# Skip 32-bit for "middle-aged" compilers
|
||||||
- platform: x86
|
- platform: x86
|
||||||
|
|||||||
@@ -32,17 +32,6 @@ init:
|
|||||||
# Set clone depth (do not fetch complete history)
|
# Set clone depth (do not fetch complete history)
|
||||||
clone_depth: 5
|
clone_depth: 5
|
||||||
|
|
||||||
# Skipping commits affecting only specific files
|
|
||||||
skip_commits:
|
|
||||||
files:
|
|
||||||
- 'documentation/*'
|
|
||||||
- 'startup/*'
|
|
||||||
- '.github/*'
|
|
||||||
- '.tools/*'
|
|
||||||
- '.gitattributes'
|
|
||||||
- '**/*.html'
|
|
||||||
- '**/*.md'
|
|
||||||
|
|
||||||
#---------------------------------#
|
#---------------------------------#
|
||||||
# build matrix configuration #
|
# build matrix configuration #
|
||||||
#---------------------------------#
|
#---------------------------------#
|
||||||
@@ -70,9 +59,10 @@ environment:
|
|||||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||||
- CMP: vs2015
|
- CMP: vs2015
|
||||||
- CMP: vs2013
|
- CMP: vs2013
|
||||||
- CMP: vs2012
|
|
||||||
- CMP: vs2010
|
|
||||||
- CMP: gcc
|
- CMP: gcc
|
||||||
|
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||||
|
# TODO: static linking w/ readline isn't working. Bypass auto-detect
|
||||||
|
COMMANDLINE_LIBRARY: EPICS
|
||||||
|
|
||||||
# Platform: processor architecture
|
# Platform: processor architecture
|
||||||
platform:
|
platform:
|
||||||
@@ -82,11 +72,6 @@ platform:
|
|||||||
# Matrix configuration: exclude sets of jobs
|
# Matrix configuration: exclude sets of jobs
|
||||||
matrix:
|
matrix:
|
||||||
exclude:
|
exclude:
|
||||||
# VS2012 and older installs don't have the 64 bit compiler
|
|
||||||
- platform: x64
|
|
||||||
CMP: vs2012
|
|
||||||
- platform: x64
|
|
||||||
CMP: vs2010
|
|
||||||
# Exclude more jobs to reduce build time
|
# Exclude more jobs to reduce build time
|
||||||
# Skip 32-bit for "middle-aged" compilers
|
# Skip 32-bit for "middle-aged" compilers
|
||||||
- platform: x86
|
- platform: x86
|
||||||
|
|||||||
2
.ci
2
.ci
Submodule .ci updated: 75bae77c1d...0e93b70855
8
.editorconfig
Normal file
8
.editorconfig
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Documentation for this file: https://EditorConfig.org
|
||||||
|
|
||||||
|
root = true
|
||||||
|
|
||||||
|
# Unix-style newlines ending every file,
|
||||||
|
# as some compilers complain about files not ending in newline
|
||||||
|
[*]
|
||||||
|
insert_final_newline = true
|
||||||
14
.gitattributes
vendored
14
.gitattributes
vendored
@@ -1,9 +1,11 @@
|
|||||||
.ci/ export-ignore
|
.appveyor.yml export-ignore
|
||||||
.tools/ export-ignore
|
.appveyor/ export-ignore
|
||||||
.github/ export-ignore
|
.ci/ export-ignore
|
||||||
.appveyor/ export-ignore
|
.github/ export-ignore
|
||||||
.appveyor.yml export-ignore
|
.gitmodules export-ignore
|
||||||
README export-subst
|
.readthedocs.yml export-ignore
|
||||||
|
.tools/ export-ignore
|
||||||
|
README export-subst
|
||||||
|
|
||||||
#Which files need CRLF handling
|
#Which files need CRLF handling
|
||||||
# default to automatic
|
# default to automatic
|
||||||
|
|||||||
22
.github/codeql/config.yml
vendored
Normal file
22
.github/codeql/config.yml
vendored
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
name: "CodeQL Config"
|
||||||
|
|
||||||
|
# Queries and the suites they belong to are documented at
|
||||||
|
# https://codeql.github.com/codeql-query-help/cpp/
|
||||||
|
|
||||||
|
queries:
|
||||||
|
- uses: security-and-quality
|
||||||
|
# Choose the above from 3 query suites:
|
||||||
|
# default
|
||||||
|
# The default set of queries
|
||||||
|
# security-extended
|
||||||
|
# `default` suite plus lower severity and precision queries
|
||||||
|
# security-and-quality
|
||||||
|
# `security-extended`, plus maintainability and reliability queries
|
||||||
|
|
||||||
|
query-filters:
|
||||||
|
-
|
||||||
|
exclude:
|
||||||
|
id: cpp/use-of-goto
|
||||||
|
-
|
||||||
|
exclude:
|
||||||
|
problem.severity: recommendation
|
||||||
13
.github/workflows/check-editorconfig.yml
vendored
Normal file
13
.github/workflows/check-editorconfig.yml
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
name: Check EditorConfig
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
pull_request:
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
editorconfig:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
- name: EditorConfig-Action
|
||||||
|
uses: greut/eclint-action@v0
|
||||||
254
.github/workflows/ci-scripts-build.yml
vendored
254
.github/workflows/ci-scripts-build.yml
vendored
@@ -27,6 +27,7 @@ on:
|
|||||||
- '.gitattributes'
|
- '.gitattributes'
|
||||||
- '**/*.html'
|
- '**/*.html'
|
||||||
- '**/*.md'
|
- '**/*.md'
|
||||||
|
workflow_dispatch:
|
||||||
|
|
||||||
env:
|
env:
|
||||||
SETUP_PATH: .ci-local:.ci
|
SETUP_PATH: .ci-local:.ci
|
||||||
@@ -41,9 +42,7 @@ jobs:
|
|||||||
env:
|
env:
|
||||||
CMP: ${{ matrix.cmp }}
|
CMP: ${{ matrix.cmp }}
|
||||||
BCFG: ${{ matrix.configuration }}
|
BCFG: ${{ matrix.configuration }}
|
||||||
WINE: ${{ matrix.wine }}
|
CI_CROSS_TARGETS: ${{ matrix.cross }}
|
||||||
RTEMS: ${{ matrix.rtems }}
|
|
||||||
RTEMS_TARGET: ${{ matrix.rtems_target }}
|
|
||||||
EXTRA: ${{ matrix.extra }}
|
EXTRA: ${{ matrix.extra }}
|
||||||
TEST: ${{ matrix.test }}
|
TEST: ${{ matrix.test }}
|
||||||
strategy:
|
strategy:
|
||||||
@@ -51,114 +50,120 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
# Job names also name artifacts, character limitations apply
|
# Job names also name artifacts, character limitations apply
|
||||||
include:
|
include:
|
||||||
- os: ubuntu-20.04
|
- os: ubuntu-24.04
|
||||||
|
cmp: gcc
|
||||||
|
name: "Ub-24 gcc-13 c++20 Werror"
|
||||||
|
# Turn all warnings into errors,
|
||||||
|
# except for those we could not fix (yet).
|
||||||
|
# Remove respective -Wno-error=... flag once it is fixed.
|
||||||
|
extra: "CMD_CXXFLAGS=-std=c++20
|
||||||
|
CMD_CPPFLAGS='-fdiagnostics-color
|
||||||
|
-fstack-protector-strong
|
||||||
|
-Wformat
|
||||||
|
-Werror
|
||||||
|
-Werror=format-security
|
||||||
|
-Wno-error=deprecated-declarations
|
||||||
|
-Wno-error=stringop-truncation
|
||||||
|
-Wno-error=restrict
|
||||||
|
-Wno-error=sizeof-pointer-memaccess
|
||||||
|
-Wno-error=nonnull
|
||||||
|
-Wno-error=dangling-pointer
|
||||||
|
-Wno-error=format-overflow
|
||||||
|
-Wno-error=stringop-overread
|
||||||
|
-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3'
|
||||||
|
CMD_LDFLAGS=-Wl,-z,relro"
|
||||||
|
|
||||||
|
- os: ubuntu-22.04
|
||||||
cmp: gcc
|
cmp: gcc
|
||||||
configuration: default
|
configuration: default
|
||||||
wine: "64"
|
cross: "windows-x64-mingw"
|
||||||
name: "Ub-20 gcc-9 + MinGW"
|
name: "Ub-22 gcc + MinGW"
|
||||||
|
|
||||||
- os: ubuntu-20.04
|
- os: ubuntu-22.04
|
||||||
cmp: gcc
|
cmp: gcc
|
||||||
configuration: static
|
configuration: static
|
||||||
wine: "64"
|
cross: "windows-x64-mingw"
|
||||||
name: "Ub-20 gcc-9 + MinGW, static"
|
name: "Ub-22 gcc + MinGW, static"
|
||||||
|
|
||||||
- os: ubuntu-20.04
|
- os: ubuntu-22.04
|
||||||
cmp: gcc
|
cmp: gcc
|
||||||
configuration: static
|
configuration: static
|
||||||
extra: "CMD_CXXFLAGS=-std=c++11"
|
extra: "CMD_CXXFLAGS=-std=c++11"
|
||||||
name: "Ub-20 gcc-9 C++11, static"
|
name: "Ub-22 gcc C++11, static"
|
||||||
|
|
||||||
- os: ubuntu-20.04
|
- os: ubuntu-22.04
|
||||||
|
cmp: gcc
|
||||||
|
configuration: static
|
||||||
|
extra: "CMD_CFLAGS=-funsigned-char CMD_CXXFLAGS=-funsigned-char"
|
||||||
|
name: "Ub-22 gcc unsigned char"
|
||||||
|
|
||||||
|
- os: ubuntu-22.04
|
||||||
cmp: clang
|
cmp: clang
|
||||||
configuration: default
|
configuration: default
|
||||||
name: "Ub-20 clang-10"
|
name: "Ub-22 clang"
|
||||||
|
|
||||||
- os: ubuntu-20.04
|
- os: ubuntu-22.04
|
||||||
cmp: clang
|
cmp: clang
|
||||||
configuration: default
|
configuration: default
|
||||||
extra: "CMD_CXXFLAGS=-std=c++11"
|
extra: "CMD_CXXFLAGS=-std=c++11"
|
||||||
name: "Ub-20 clang-10 C++11"
|
name: "Ub-22 clang C++11"
|
||||||
|
|
||||||
- os: ubuntu-20.04
|
- os: ubuntu-22.04
|
||||||
cmp: gcc
|
cmp: gcc
|
||||||
configuration: default
|
configuration: default
|
||||||
rtems: "5"
|
cross: "RTEMS-pc686-qemu@5"
|
||||||
rtems_target: RTEMS-pc686-qemu
|
name: "Ub-22 gcc + RT-5.1 pc686"
|
||||||
name: "Ub-20 gcc-9 + RT-5.1 pc686"
|
|
||||||
|
|
||||||
- os: ubuntu-20.04
|
- os: ubuntu-22.04
|
||||||
cmp: gcc
|
cmp: gcc
|
||||||
configuration: default
|
configuration: default
|
||||||
rtems: "5"
|
cross: "RTEMS-beatnik@5"
|
||||||
rtems_target: RTEMS-beatnik
|
|
||||||
test: NO
|
test: NO
|
||||||
name: "Ub-20 gcc-9 + RT-5.1 beatnik"
|
name: "Ub-22 gcc + RT-5.1 beatnik"
|
||||||
|
|
||||||
# Only build one RTEMS target per CPU family
|
- os: ubuntu-22.04
|
||||||
# unless it's running the tests
|
|
||||||
#
|
|
||||||
# - os: ubuntu-20.04
|
|
||||||
# cmp: gcc
|
|
||||||
# configuration: default
|
|
||||||
# rtems: "5"
|
|
||||||
# rtems_target: RTEMS-mvme3100
|
|
||||||
# test: NO
|
|
||||||
# name: "Ub-20 gcc-9 + RT-5.1 mvme3100"
|
|
||||||
#
|
|
||||||
# - os: ubuntu-20.04
|
|
||||||
# cmp: gcc
|
|
||||||
# configuration: default
|
|
||||||
# rtems: "5"
|
|
||||||
# rtems_target: RTEMS-qoriq_e500
|
|
||||||
# test: NO
|
|
||||||
# name: "Ub-20 gcc-9 + RT-5.1 qoriq_e500"
|
|
||||||
|
|
||||||
- os: ubuntu-20.04
|
|
||||||
cmp: gcc
|
cmp: gcc
|
||||||
configuration: default
|
configuration: default
|
||||||
rtems: "5"
|
cross: "RTEMS-xilinx_zynq_a9_qemu@5"
|
||||||
rtems_target: RTEMS-xilinx_zynq_a9_qemu
|
|
||||||
test: NO
|
test: NO
|
||||||
name: "Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu"
|
name: "Ub-22 gcc + RT-5.1 xilinx_zynq_a9_qemu"
|
||||||
|
|
||||||
- os: ubuntu-20.04
|
- os: ubuntu-22.04
|
||||||
cmp: gcc
|
cmp: gcc
|
||||||
configuration: default
|
configuration: default
|
||||||
rtems: "5"
|
cross: "RTEMS-uC5282@5"
|
||||||
rtems_target: RTEMS-uC5282
|
|
||||||
test: NO
|
test: NO
|
||||||
name: "Ub-20 gcc-9 + RT-5.1 uC5282"
|
name: "Ub-22 gcc + RT-5.1 uC5282"
|
||||||
|
|
||||||
- os: ubuntu-20.04
|
- os: ubuntu-22.04
|
||||||
cmp: gcc
|
cmp: gcc
|
||||||
configuration: default
|
configuration: default
|
||||||
rtems: "4.10"
|
name: "Ub-22 gcc + RT-4.10"
|
||||||
name: "Ub-20 gcc-9 + RT-4.10"
|
cross: "RTEMS-pc386-qemu@4.10"
|
||||||
rtems_target: RTEMS-pc386-qemu
|
|
||||||
test: NO
|
test: NO
|
||||||
|
|
||||||
- os: ubuntu-20.04
|
- os: ubuntu-22.04
|
||||||
cmp: gcc
|
cmp: gcc
|
||||||
configuration: default
|
configuration: default
|
||||||
rtems: "4.9"
|
name: "Ub-22 gcc + RT-4.9"
|
||||||
name: "Ub-20 gcc-9 + RT-4.9"
|
cross: "RTEMS-pc386-qemu@4.9"
|
||||||
rtems_target: RTEMS-pc386-qemu
|
|
||||||
|
|
||||||
- os: macos-latest
|
- os: macos-latest
|
||||||
cmp: clang
|
cmp: clang
|
||||||
configuration: default
|
configuration: default
|
||||||
name: "MacOS clang-12"
|
name: "MacOS clang"
|
||||||
|
|
||||||
- os: windows-2019
|
- os: windows-2019
|
||||||
cmp: vs2019
|
cmp: vs2019
|
||||||
configuration: default
|
configuration: debug
|
||||||
name: "Win2019 MSC-19"
|
name: "Win2019 MSC-19"
|
||||||
|
extra: "CMD_CXXFLAGS=-analysis"
|
||||||
|
|
||||||
- os: windows-2019
|
- os: windows-2019
|
||||||
cmp: vs2019
|
cmp: vs2019
|
||||||
configuration: static
|
configuration: static-debug
|
||||||
name: "Win2019 MSC-19, static"
|
name: "Win2019 MSC-19, static"
|
||||||
|
extra: "CMD_CXXFLAGS=-analysis"
|
||||||
|
|
||||||
- os: windows-2019
|
- os: windows-2019
|
||||||
cmp: vs2019
|
cmp: vs2019
|
||||||
@@ -170,8 +175,28 @@ jobs:
|
|||||||
configuration: default
|
configuration: default
|
||||||
name: "Win2019 mingw"
|
name: "Win2019 mingw"
|
||||||
|
|
||||||
|
# Cross builds
|
||||||
|
|
||||||
|
- os: ubuntu-latest
|
||||||
|
cmp: gcc
|
||||||
|
configuration: default
|
||||||
|
name: "Cross linux-aarch64"
|
||||||
|
cross: linux-aarch64
|
||||||
|
|
||||||
|
- os: ubuntu-latest
|
||||||
|
cmp: gcc
|
||||||
|
configuration: default
|
||||||
|
name: "Cross linux-arm gnueabi"
|
||||||
|
cross: linux-arm@arm-linux-gnueabi
|
||||||
|
|
||||||
|
- os: ubuntu-latest
|
||||||
|
cmp: gcc
|
||||||
|
configuration: default
|
||||||
|
name: "Cross linux-arm gnueabihf"
|
||||||
|
cross: linux-arm@arm-linux-gnueabihf
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
submodules: true
|
submodules: true
|
||||||
- name: Automatic core dumper analysis
|
- name: Automatic core dumper analysis
|
||||||
@@ -189,7 +214,7 @@ jobs:
|
|||||||
run: python .ci/cue.py -T 60M test
|
run: python .ci/cue.py -T 60M test
|
||||||
- name: Upload tapfiles Artifact
|
- name: Upload tapfiles Artifact
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: tapfiles ${{ matrix.name }}
|
name: tapfiles ${{ matrix.name }}
|
||||||
path: '**/O.*/*.tap'
|
path: '**/O.*/*.tap'
|
||||||
@@ -214,13 +239,13 @@ jobs:
|
|||||||
matrix:
|
matrix:
|
||||||
# Job names also name artifacts, character limitations apply
|
# Job names also name artifacts, character limitations apply
|
||||||
include:
|
include:
|
||||||
- name: "CentOS-7"
|
- name: "CentOS-8"
|
||||||
image: centos:7
|
image: centos:8
|
||||||
cmp: gcc
|
cmp: gcc
|
||||||
configuration: default
|
configuration: default
|
||||||
|
|
||||||
- name: "CentOS-8"
|
- name: "Rocky-9"
|
||||||
image: centos:8
|
image: rockylinux:9
|
||||||
cmp: gcc
|
cmp: gcc
|
||||||
configuration: default
|
configuration: default
|
||||||
|
|
||||||
@@ -235,50 +260,87 @@ jobs:
|
|||||||
configuration: default
|
configuration: default
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- name: "Build newer Git"
|
- name: "Fix repo URLs on CentOS-8"
|
||||||
# actions/checkout@v2 wants git >=2.18
|
# centos:8 is frozen, repos are in the vault
|
||||||
# centos:7 has 1.8
|
if: matrix.image=='centos:8'
|
||||||
if: matrix.image=='centos:7'
|
|
||||||
run: |
|
run: |
|
||||||
yum -y install curl make gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
|
sed -i -e "s|mirrorlist=|#mirrorlist=|" \
|
||||||
curl https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.29.0.tar.gz | tar -xz
|
-e "s|#baseurl=http://mirror|baseurl=http://vault|" \
|
||||||
cd git-*
|
/etc/yum.repos.d/CentOS-Linux-{BaseOS,AppStream,Extras,Plus}.repo
|
||||||
make -j2 prefix=/usr/local all
|
|
||||||
make prefix=/usr/local install
|
|
||||||
cd ..
|
|
||||||
rm -rf git-*
|
|
||||||
type -a git
|
|
||||||
git --version
|
|
||||||
- name: "Redhat setup"
|
- name: "Redhat setup"
|
||||||
run: |
|
run: |
|
||||||
dnfyum() {
|
dnf -y install python3 gdb make perl gcc-c++ glibc-devel readline-devel ncurses-devel perl-devel perl-Test-Simple
|
||||||
dnf -y "$@" || yum -y "$@"
|
git --version || dnf -y install git
|
||||||
return $?
|
python3 --version
|
||||||
}
|
- uses: actions/checkout@v4
|
||||||
dnfyum install python3 gdb make perl gcc-c++ glibc-devel readline-devel ncurses-devel perl-devel perl-Test-Simple
|
|
||||||
git --version || dnfyum install git
|
|
||||||
# rather than just bite the bullet and link python3 -> python,
|
|
||||||
# people would rather just break all existing scripts...
|
|
||||||
[ -e /usr/bin/python ] || ln -sf python3 /usr/bin/python
|
|
||||||
python --version
|
|
||||||
- uses: actions/checkout@v2
|
|
||||||
with:
|
with:
|
||||||
submodules: true
|
submodules: true
|
||||||
- name: Automatic core dumper analysis
|
- name: Automatic core dumper analysis
|
||||||
uses: mdavidsaver/ci-core-dumper@master
|
uses: mdavidsaver/ci-core-dumper@master
|
||||||
- name: Prepare and compile dependencies
|
- name: Prepare and compile dependencies
|
||||||
run: python .ci/cue.py prepare
|
run: python3 .ci/cue.py prepare
|
||||||
- name: Build main module
|
- name: Build main module
|
||||||
run: python .ci/cue.py build
|
run: python3 .ci/cue.py build
|
||||||
- name: Run main module tests
|
- name: Run main module tests
|
||||||
run: python .ci/cue.py -T 20M test
|
run: python3 .ci/cue.py -T 20M test
|
||||||
- name: Upload tapfiles Artifact
|
- name: Upload tapfiles Artifact
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: tapfiles ${{ matrix.name }}
|
name: tapfiles ${{ matrix.name }}
|
||||||
path: '**/O.*/*.tap'
|
path: '**/O.*/*.tap'
|
||||||
if-no-files-found: ignore
|
if-no-files-found: ignore
|
||||||
- name: Collect and show test results
|
- name: Collect and show test results
|
||||||
if: ${{ always() }}
|
if: ${{ always() }}
|
||||||
run: python .ci/cue.py -T 5M test-results
|
run: python3 .ci/cue.py -T 5M test-results
|
||||||
|
|
||||||
|
build-docker:
|
||||||
|
name: Docker CentOS-7
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
env:
|
||||||
|
CMP: gcc
|
||||||
|
BCFG: default
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: true
|
||||||
|
|
||||||
|
- name: Run...
|
||||||
|
run: |
|
||||||
|
env > env.list
|
||||||
|
cat <<EOF > runit.sh
|
||||||
|
#!/bin/sh
|
||||||
|
set -e -x
|
||||||
|
cd /io
|
||||||
|
id
|
||||||
|
|
||||||
|
sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo
|
||||||
|
sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo
|
||||||
|
sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo
|
||||||
|
yum -y install epel-release
|
||||||
|
yum -y install \
|
||||||
|
curl make gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker \
|
||||||
|
python3 gdb make perl gcc-c++ glibc-devel readline-devel ncurses-devel perl-devel perl-Test-Simple \
|
||||||
|
libevent-devel sudo re2c
|
||||||
|
[ -e /usr/bin/python ] || ln -sf /usr/bin/python3 /usr/bin/python
|
||||||
|
|
||||||
|
# fake out cue.py
|
||||||
|
ln -s /bin/true /usr/bin/apt-get
|
||||||
|
|
||||||
|
# quiet warnings spam from perl
|
||||||
|
export LANG=C
|
||||||
|
|
||||||
|
python --version
|
||||||
|
python .ci/cue.py prepare
|
||||||
|
python .ci/cue.py build
|
||||||
|
python .ci/cue.py -T 15M test
|
||||||
|
python .ci/cue.py test-results
|
||||||
|
EOF
|
||||||
|
chmod +x runit.sh
|
||||||
|
docker run --rm --quiet \
|
||||||
|
--pull=always \
|
||||||
|
--env-file env.list \
|
||||||
|
-v `pwd`:/io \
|
||||||
|
centos:7 \
|
||||||
|
/io/runit.sh
|
||||||
|
|||||||
64
.github/workflows/codeql.yml
vendored
Normal file
64
.github/workflows/codeql.yml
vendored
Normal file
@@ -0,0 +1,64 @@
|
|||||||
|
name: "CodeQL"
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches: 7.0
|
||||||
|
tags: 'R7.0.*'
|
||||||
|
pull_request:
|
||||||
|
branches: 7.0
|
||||||
|
paths-ignore:
|
||||||
|
- '.appveyor/*'
|
||||||
|
- '.tools/*'
|
||||||
|
- 'documentation/*'
|
||||||
|
- 'startup/*'
|
||||||
|
- '**/*.md'
|
||||||
|
- '**/*.html'
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
analyze:
|
||||||
|
name: Analyze
|
||||||
|
runs-on:
|
||||||
|
- ubuntu-latest
|
||||||
|
# - windows-latest
|
||||||
|
# Supported by CodeQL which would check the Windows
|
||||||
|
# port, but needs more work here to set it up
|
||||||
|
|
||||||
|
permissions:
|
||||||
|
# Required for all workflows:
|
||||||
|
security-events: write
|
||||||
|
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
language: [ cpp ]
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- name: Checkout Repositories
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
submodules: false
|
||||||
|
|
||||||
|
- name: Install Packages
|
||||||
|
run: |
|
||||||
|
sudo apt-get update
|
||||||
|
sudo apt-get install --yes libreadline-dev
|
||||||
|
|
||||||
|
- name: Initialize CodeQL
|
||||||
|
uses: github/codeql-action/init@v3
|
||||||
|
with:
|
||||||
|
languages: ${{ matrix.language }}
|
||||||
|
config-file: ./.github/codeql/config.yml
|
||||||
|
|
||||||
|
- name: Build C/C++
|
||||||
|
run: |
|
||||||
|
echo '*** Building with these versions >>>'
|
||||||
|
g++ --version
|
||||||
|
make --version
|
||||||
|
perl --version
|
||||||
|
echo '<<<'
|
||||||
|
make -sj2 || echo '*** Ignoring build failure for CodeQL ***'
|
||||||
|
|
||||||
|
- name: Perform CodeQL Analysis
|
||||||
|
uses: github/codeql-action/analyze@v3
|
||||||
|
with:
|
||||||
|
category: "/language:${{ matrix.language }}"
|
||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -3,6 +3,7 @@
|
|||||||
/lib/
|
/lib/
|
||||||
/db/
|
/db/
|
||||||
/dbd/
|
/dbd/
|
||||||
|
/doc/
|
||||||
/html/
|
/html/
|
||||||
/include/
|
/include/
|
||||||
/templates/
|
/templates/
|
||||||
@@ -11,8 +12,10 @@
|
|||||||
/modules/Makefile.local
|
/modules/Makefile.local
|
||||||
O.*/
|
O.*/
|
||||||
/QtC-*
|
/QtC-*
|
||||||
|
/.qtc_*
|
||||||
/.vscode/
|
/.vscode/
|
||||||
*.orig
|
*.orig
|
||||||
*.log
|
*.log
|
||||||
.*.swp
|
.*.swp
|
||||||
.DS_Store
|
.DS_Store
|
||||||
|
.iocsh_history
|
||||||
|
|||||||
36
.readthedocs.yaml
Normal file
36
.readthedocs.yaml
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
# .readthedocs.yml
|
||||||
|
# Read the Docs configuration file
|
||||||
|
# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
|
||||||
|
|
||||||
|
# Required
|
||||||
|
version: 2
|
||||||
|
|
||||||
|
build:
|
||||||
|
os: ubuntu-22.04
|
||||||
|
tools:
|
||||||
|
python: "3.9"
|
||||||
|
apt_packages:
|
||||||
|
- graphviz
|
||||||
|
- rsync
|
||||||
|
jobs:
|
||||||
|
pre_build:
|
||||||
|
- make inc
|
||||||
|
- make -C documentation rtd
|
||||||
|
|
||||||
|
# Build documentation in the documentation/O.Common directory with Sphinx
|
||||||
|
sphinx:
|
||||||
|
configuration: documentation/O.Common/rtd-src/conf.py
|
||||||
|
|
||||||
|
# Build documentation with MkDocs
|
||||||
|
#mkdocs:
|
||||||
|
# configuration: mkdocs.yml
|
||||||
|
|
||||||
|
# Optionally build your docs in additional formats such as PDF and ePub
|
||||||
|
#formats: []
|
||||||
|
|
||||||
|
submodules:
|
||||||
|
exclude: all
|
||||||
|
|
||||||
|
python:
|
||||||
|
install:
|
||||||
|
- requirements: documentation/requirements.txt
|
||||||
@@ -20,9 +20,9 @@ maybedie() {
|
|||||||
|
|
||||||
usage() {
|
usage() {
|
||||||
cat <<EOF >&2
|
cat <<EOF >&2
|
||||||
usage: $0 [-v] [-s] <rev> [<outfile> [<prefix>]]
|
usage: $0 [-v] [-d] <rev> [<outfile> [<prefix>]]
|
||||||
|
|
||||||
<rev> may be any git revision spec. (tag, branch, or commit id).
|
<rev> may be any git revision spec. (tag or, using -d, branch or commit id).
|
||||||
|
|
||||||
If provided, <outfile> must end with ".tar", ".tar.gz" or ".tar.bz2".
|
If provided, <outfile> must end with ".tar", ".tar.gz" or ".tar.bz2".
|
||||||
If <outfile> is omitted, "base-<rev>.tar.gz" will be used.
|
If <outfile> is omitted, "base-<rev>.tar.gz" will be used.
|
||||||
@@ -136,17 +136,20 @@ sed -i -e 's|^\./||' "$TDIR"/list.1
|
|||||||
|
|
||||||
# Exclude files
|
# Exclude files
|
||||||
sed \
|
sed \
|
||||||
-e '/\/\.ci\//d' \
|
|
||||||
-e '/\/\.ci-local\//d' \
|
|
||||||
-e '/\/\.tools\//d' \
|
|
||||||
-e '/\/jenkins\//d' \
|
|
||||||
-e '/\/\.git/d' \
|
|
||||||
-e '/\/\.hgtags$/d' \
|
|
||||||
-e '/\/\.cproject$/d' \
|
|
||||||
-e '/\/\.project$/d' \
|
|
||||||
-e '/\/\.travis\.yml$/d' \
|
|
||||||
-e '/\/\.appveyor\.yml$/d' \
|
-e '/\/\.appveyor\.yml$/d' \
|
||||||
|
-e '/\/\.appveyor\//d' \
|
||||||
|
-e '/\/\.ci-local\//d' \
|
||||||
|
-e '/\/\.ci\//d' \
|
||||||
|
-e '/\/\.cproject$/d' \
|
||||||
|
-e '/\/\.github\//d' \
|
||||||
|
-e '/\/\.gitmodules$/d' \
|
||||||
|
-e '/\/\.hgtags$/d' \
|
||||||
|
-e '/\/\.lgtm\.yml$/d' \
|
||||||
|
-e '/\/\.project$/d' \
|
||||||
-e '/\/\.readthedocs\.yml$/d' \
|
-e '/\/\.readthedocs\.yml$/d' \
|
||||||
|
-e '/\/\.tools\//d' \
|
||||||
|
-e '/\/\.travis\.yml$/d' \
|
||||||
|
-e '/\/jenkins\//d' \
|
||||||
"$TDIR"/list.1 > "$TDIR"/list.2
|
"$TDIR"/list.1 > "$TDIR"/list.2
|
||||||
|
|
||||||
if ! diff -U 0 "$TDIR"/list.1 "$TDIR"/list.2
|
if ! diff -U 0 "$TDIR"/list.1 "$TDIR"/list.2
|
||||||
|
|||||||
@@ -34,6 +34,11 @@ ifeq ($(origin EPICS_HOST_ARCH), undefined)
|
|||||||
EHA :=
|
EHA :=
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Make Perl hash iteration reproducible.
|
||||||
|
# See: https://reproducible-builds.org/docs/stable-outputs/
|
||||||
|
#
|
||||||
|
export PERL_HASH_SEED = 0
|
||||||
|
|
||||||
-include $(CONFIG)/RELEASE
|
-include $(CONFIG)/RELEASE
|
||||||
-include $(CONFIG)/RELEASE.$(EPICS_HOST_ARCH)
|
-include $(CONFIG)/RELEASE.$(EPICS_HOST_ARCH)
|
||||||
-include $(CONFIG)/RELEASE.$(EPICS_HOST_ARCH).Common
|
-include $(CONFIG)/RELEASE.$(EPICS_HOST_ARCH).Common
|
||||||
|
|||||||
@@ -27,13 +27,17 @@ RANLIB = $(GNU_BIN)/$(CMPLR_PREFIX)ranlib$(CMPLR_SUFFIX)
|
|||||||
ASAN_FLAGS_YES = -fsanitize=address
|
ASAN_FLAGS_YES = -fsanitize=address
|
||||||
ASAN_LDFLAGS_YES = $(ASAN_FLAGS_YES)
|
ASAN_LDFLAGS_YES = $(ASAN_FLAGS_YES)
|
||||||
|
|
||||||
|
# It makes sense to include debugging symbols even in optimized builds
|
||||||
|
# in case you want to attach gdb to the process or examine a core-dump.
|
||||||
|
# This does cost disk space, but not memory as debug symbols are not
|
||||||
|
# loaded into RAM when the binary is loaded.
|
||||||
PROF_CFLAGS_YES = -p
|
PROF_CFLAGS_YES = -p
|
||||||
GPROF_CFLAGS_YES = -pg
|
GPROF_CFLAGS_YES = -pg
|
||||||
CODE_CFLAGS = $(PROF_CFLAGS_$(PROFILE)) $(GPROF_CFLAGS_$(GPROF))
|
CODE_CFLAGS = $(PROF_CFLAGS_$(PROFILE)) $(GPROF_CFLAGS_$(GPROF))
|
||||||
CODE_CFLAGS += $(ASAN_FLAGS_$(ENABLE_ASAN))
|
CODE_CFLAGS += $(ASAN_FLAGS_$(ENABLE_ASAN))
|
||||||
WARN_CFLAGS_YES = -Wall -Werror-implicit-function-declaration
|
WARN_CFLAGS_YES = -Wall -Werror-implicit-function-declaration
|
||||||
WARN_CFLAGS_NO = -w
|
WARN_CFLAGS_NO = -w
|
||||||
OPT_CFLAGS_YES = -O3
|
OPT_CFLAGS_YES = -O3 -g
|
||||||
OPT_CFLAGS_NO = -g
|
OPT_CFLAGS_NO = -g
|
||||||
|
|
||||||
PROF_CXXFLAGS_YES = -p
|
PROF_CXXFLAGS_YES = -p
|
||||||
@@ -42,11 +46,12 @@ CODE_CXXFLAGS = $(PROF_CXXFLAGS_$(PROFILE)) $(GPROF_CXXFLAGS_$(GPROF))
|
|||||||
CODE_CXXFLAGS += $(ASAN_FLAGS_$(ENABLE_ASAN))
|
CODE_CXXFLAGS += $(ASAN_FLAGS_$(ENABLE_ASAN))
|
||||||
WARN_CXXFLAGS_YES = -Wall
|
WARN_CXXFLAGS_YES = -Wall
|
||||||
WARN_CXXFLAGS_NO = -w
|
WARN_CXXFLAGS_NO = -w
|
||||||
OPT_CXXFLAGS_YES = -O3
|
OPT_CXXFLAGS_YES = -O3 -g
|
||||||
OPT_CXXFLAGS_NO = -g
|
OPT_CXXFLAGS_NO = -g
|
||||||
|
|
||||||
CODE_LDFLAGS = $(PROF_CXXFLAGS_$(PROFILE)) $(GPROF_CXXFLAGS_$(GPROF))
|
CODE_LDFLAGS = $(PROF_CXXFLAGS_$(PROFILE)) $(GPROF_CXXFLAGS_$(GPROF))
|
||||||
CODE_LDFLAGS += $(ASAN_LDFLAGS_$(ENABLE_ASAN))
|
CODE_LDFLAGS += $(ASAN_LDFLAGS_$(ENABLE_ASAN))
|
||||||
|
OPT_LDFLAGS_NO = -g
|
||||||
|
|
||||||
PIPE_CFLAGS_YES_YES = -pipe
|
PIPE_CFLAGS_YES_YES = -pipe
|
||||||
PIPE_CFLAGS = $(PIPE_CFLAGS_$(GCC_PIPE)_$(GNU))
|
PIPE_CFLAGS = $(PIPE_CFLAGS_$(GCC_PIPE)_$(GNU))
|
||||||
|
|||||||
@@ -38,11 +38,20 @@ TOOLS = $(abspath $(EPICS_BASE_HOST_BIN))
|
|||||||
FIND_TOOL = $(firstword $(wildcard $(TOOLS)/$(1) \
|
FIND_TOOL = $(firstword $(wildcard $(TOOLS)/$(1) \
|
||||||
$(TOP)/src/tools/$(1)) $(EPICS_BASE)/src/tools/$(1))
|
$(TOP)/src/tools/$(1)) $(EPICS_BASE)/src/tools/$(1))
|
||||||
|
|
||||||
|
#---------------------------------------------------------------
|
||||||
|
# Find Perl modules for dependencies
|
||||||
|
FIND_PM = $(wildcard $(EPICS_BASE)/lib/perl/$(1))
|
||||||
|
|
||||||
#---------------------------------------------------------------
|
#---------------------------------------------------------------
|
||||||
# EPICS Base build tools and tool flags
|
# EPICS Base build tools and tool flags
|
||||||
|
|
||||||
PODTOHTML = $(PERL) $(TOOLS)/podToHtml.pl
|
PODTOMD_pl = $(TOOLS)/podToMD.pl
|
||||||
|
PODTOMD = $(PERL) $(PODTOMD_pl)
|
||||||
|
PODTOHTML_pl = $(TOOLS)/podToHtml.pl
|
||||||
|
PODTOHTML_dep = $(PODTOHTML_pl) $(call FIND_PM,EPICS/PodHtml.pm)
|
||||||
|
PODTOHTML = $(PERL) $(PODTOHTML_pl)
|
||||||
CONVERTRELEASE = $(PERL) $(call FIND_TOOL,convertRelease.pl)
|
CONVERTRELEASE = $(PERL) $(call FIND_TOOL,convertRelease.pl)
|
||||||
|
FILTERMAKEFLAGS = $(PERL) $(call FIND_TOOL,filterMakeflags.pl)
|
||||||
FULLPATHNAME = $(PERL) $(TOOLS)/fullPathName.pl
|
FULLPATHNAME = $(PERL) $(TOOLS)/fullPathName.pl
|
||||||
GENVERSIONHEADER = $(PERL) $(TOOLS)/genVersionHeader.pl $(QUIET_FLAG) $(QUESTION_FLAG)
|
GENVERSIONHEADER = $(PERL) $(TOOLS)/genVersionHeader.pl $(QUIET_FLAG) $(QUESTION_FLAG)
|
||||||
|
|
||||||
@@ -59,6 +68,24 @@ INSTALL_LIBRARY = $(INSTALL)
|
|||||||
MKMF = $(PERL) $(TOOLS)/mkmf.pl
|
MKMF = $(PERL) $(TOOLS)/mkmf.pl
|
||||||
REPLACEVAR = $(PERL) $(TOOLS)/replaceVAR.pl
|
REPLACEVAR = $(PERL) $(TOOLS)/replaceVAR.pl
|
||||||
|
|
||||||
|
#---------------------------------------------------------------
|
||||||
|
# How to portably check the flags to make
|
||||||
|
# GNUmake versions before 4.0 gave different values
|
||||||
|
makeflags := $(shell $(FILTERMAKEFLAGS) $(MAKEFLAGS))
|
||||||
|
define checkflags
|
||||||
|
make-$1 := $(findstring $1,$(makeflags))
|
||||||
|
endef
|
||||||
|
# This is extensible to most single letter flags:
|
||||||
|
$(foreach flag,s q, $(eval $(call checkflags,$(flag))))
|
||||||
|
|
||||||
|
# Silent builds - suppress messages during 'make -s'
|
||||||
|
NOP = :
|
||||||
|
ECHO = @$(if $(make-s),$(NOP),echo)
|
||||||
|
QUIET_FLAG := $(if $(make-s),-q,)
|
||||||
|
|
||||||
|
# Convert 'make -q' flag into '-i' for genVersionHeader.pl
|
||||||
|
QUESTION_FLAG := $(if $(make-q),-i,)
|
||||||
|
|
||||||
#---------------------------------------------------------------
|
#---------------------------------------------------------------
|
||||||
# tools for cleaning out unwanted files
|
# tools for cleaning out unwanted files
|
||||||
CVSCLEAN = $(call FIND_TOOL,cvsclean.pl)
|
CVSCLEAN = $(call FIND_TOOL,cvsclean.pl)
|
||||||
|
|||||||
@@ -48,11 +48,11 @@ EPICS_VERSION = 7
|
|||||||
EPICS_REVISION = 0
|
EPICS_REVISION = 0
|
||||||
|
|
||||||
# EPICS_MODIFICATION must be a number >=0 and <256
|
# EPICS_MODIFICATION must be a number >=0 and <256
|
||||||
EPICS_MODIFICATION = 6
|
EPICS_MODIFICATION = 9
|
||||||
|
|
||||||
# EPICS_PATCH_LEVEL must be a number (win32 resource file requirement)
|
# EPICS_PATCH_LEVEL must be a number (win32 resource file requirement)
|
||||||
# Not included in the official EPICS version number if zero
|
# Not included in the official EPICS version number if zero
|
||||||
EPICS_PATCH_LEVEL = 2
|
EPICS_PATCH_LEVEL = 1
|
||||||
|
|
||||||
# Immediately after an official release the EPICS_PATCH_LEVEL is incremented
|
# Immediately after an official release the EPICS_PATCH_LEVEL is incremented
|
||||||
# and the -DEV suffix is added (similar to the Maven -SNAPSHOT versions)
|
# and the -DEV suffix is added (similar to the Maven -SNAPSHOT versions)
|
||||||
@@ -71,6 +71,3 @@ endif
|
|||||||
EPICS_SHORT_VERSION=$(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)$(EPICS_PATCH_VSTRING)
|
EPICS_SHORT_VERSION=$(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)$(EPICS_PATCH_VSTRING)
|
||||||
EPICS_VERSION_NUMBER=$(EPICS_SHORT_VERSION)$(EPICS_DEV_SNAPSHOT)$(EPICS_SITE_VSTRING)
|
EPICS_VERSION_NUMBER=$(EPICS_SHORT_VERSION)$(EPICS_DEV_SNAPSHOT)$(EPICS_SITE_VSTRING)
|
||||||
EPICS_VERSION_STRING="EPICS Version $(EPICS_VERSION_NUMBER)"
|
EPICS_VERSION_STRING="EPICS Version $(EPICS_VERSION_NUMBER)"
|
||||||
|
|
||||||
# Provide this in case anyone is still using the old name
|
|
||||||
COMMIT_DATE="-no-date-"
|
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
|
|
||||||
EPICS_CA_MAJOR_VERSION = 4
|
EPICS_CA_MAJOR_VERSION = 4
|
||||||
EPICS_CA_MINOR_VERSION = 14
|
EPICS_CA_MINOR_VERSION = 14
|
||||||
EPICS_CA_MAINTENANCE_VERSION = 2
|
EPICS_CA_MAINTENANCE_VERSION = 6
|
||||||
|
|
||||||
# Development flag, set to zero for release versions
|
# Development flag, set to zero for release versions
|
||||||
|
|
||||||
|
|||||||
@@ -81,16 +81,6 @@ FINAL_LOCATION = $(INSTALL_ABSOLUTE)
|
|||||||
# IOC's view of install path
|
# IOC's view of install path
|
||||||
IOCS_APPL_TOP = $(INSTALL_ABSOLUTE)
|
IOCS_APPL_TOP = $(INSTALL_ABSOLUTE)
|
||||||
|
|
||||||
#-------------------------------------------------------
|
|
||||||
# Silencing the build - suppress messages during 'make -s'
|
|
||||||
NOP = :
|
|
||||||
ECHO = @$(if $(filter -s,$(MFLAGS)),$(NOP),echo)
|
|
||||||
QUIET_FLAG := $(if $(filter -s,$(MFLAGS)),-q,)
|
|
||||||
|
|
||||||
#-------------------------------------------------------
|
|
||||||
# Convert 'make -q' flag into '-i' for genVersionHeader.pl
|
|
||||||
QUESTION_FLAG := $(if $(filter -q,$(MFLAGS)),-i,)
|
|
||||||
|
|
||||||
#-------------------------------------------------------
|
#-------------------------------------------------------
|
||||||
ifdef T_A
|
ifdef T_A
|
||||||
|
|
||||||
@@ -267,6 +257,7 @@ WARN_CXXFLAGS = $(WARN_CXXFLAGS_$($(BUILD_CLASS)_WARN))
|
|||||||
OPT_CPPFLAGS = $(OPT_CPPFLAGS_$($(BUILD_CLASS)_OPT))
|
OPT_CPPFLAGS = $(OPT_CPPFLAGS_$($(BUILD_CLASS)_OPT))
|
||||||
OPT_CFLAGS = $(OPT_CFLAGS_$($(BUILD_CLASS)_OPT))
|
OPT_CFLAGS = $(OPT_CFLAGS_$($(BUILD_CLASS)_OPT))
|
||||||
OPT_CXXFLAGS = $(OPT_CXXFLAGS_$($(BUILD_CLASS)_OPT))
|
OPT_CXXFLAGS = $(OPT_CXXFLAGS_$($(BUILD_CLASS)_OPT))
|
||||||
|
OPT_LDFLAGS = $(OPT_LDFLAGS_$($(BUILD_CLASS)_OPT))
|
||||||
|
|
||||||
# Static build flags
|
# Static build flags
|
||||||
STATIC_CFLAGS = $(STATIC_CFLAGS_$(STATIC_BUILD))
|
STATIC_CFLAGS = $(STATIC_CFLAGS_$(STATIC_BUILD))
|
||||||
@@ -288,7 +279,6 @@ TARGET_LIB_LDFLAGS = $(if $(findstring $*, $(LOADABLE_LIBRARY)), \
|
|||||||
|
|
||||||
#--------------------------------------------------
|
#--------------------------------------------------
|
||||||
# Command-line input support default
|
# Command-line input support default
|
||||||
COMMANDLINE_LIBRARY = EPICS
|
|
||||||
OP_SYS_LDLIBS += $(LDLIBS_$(COMMANDLINE_LIBRARY))
|
OP_SYS_LDLIBS += $(LDLIBS_$(COMMANDLINE_LIBRARY))
|
||||||
OP_SYS_LDFLAGS += $(LDFLAGS_$(COMMANDLINE_LIBRARY))
|
OP_SYS_LDFLAGS += $(LDFLAGS_$(COMMANDLINE_LIBRARY))
|
||||||
RUNTIME_LDFLAGS += $(RUNTIME_LDFLAGS_$(COMMANDLINE_LIBRARY))
|
RUNTIME_LDFLAGS += $(RUNTIME_LDFLAGS_$(COMMANDLINE_LIBRARY))
|
||||||
@@ -415,9 +405,9 @@ INSTALL_LIB_INSTALLS = $(addprefix $(INSTALL_LIB)/,$(notdir $(LIB_INSTALLS)))
|
|||||||
|
|
||||||
#---------------------------------------------------------------
|
#---------------------------------------------------------------
|
||||||
# Installed file permissions
|
# Installed file permissions
|
||||||
BIN_PERMISSIONS = 555
|
BIN_PERMISSIONS = 755
|
||||||
LIB_PERMISSIONS = 444
|
LIB_PERMISSIONS = 644
|
||||||
SHRLIB_PERMISSIONS = 555
|
SHRLIB_PERMISSIONS = 755
|
||||||
INSTALL_PERMISSIONS = 444
|
INSTALL_PERMISSIONS = 444
|
||||||
|
|
||||||
#---------------------------------------------------------------
|
#---------------------------------------------------------------
|
||||||
@@ -479,4 +469,9 @@ COMMON_INC += $(filter $(COMMON_DIR)/%, \
|
|||||||
$(foreach dir, $(ALL_SRC_DIRS), \
|
$(foreach dir, $(ALL_SRC_DIRS), \
|
||||||
$(addsuffix /$(file), $(dir)))) $(COMMON_DIR)/$(file))))
|
$(addsuffix /$(file), $(dir)))) $(COMMON_DIR)/$(file))))
|
||||||
|
|
||||||
|
COMMON_DOCS += $(filter $(COMMON_DIR)/%, \
|
||||||
|
$(foreach file, $(DOCS), \
|
||||||
|
$(firstword $(wildcard $(file) \
|
||||||
|
$(foreach dir, $(ALL_SRC_DIRS), \
|
||||||
|
$(addsuffix /$(file), $(dir)))) $(COMMON_DIR)/$(file))))
|
||||||
endif
|
endif
|
||||||
|
|||||||
@@ -5,22 +5,30 @@
|
|||||||
# in file LICENSE that is included with this distribution.
|
# in file LICENSE that is included with this distribution.
|
||||||
#*************************************************************************
|
#*************************************************************************
|
||||||
|
|
||||||
# Set EPICS_DATABASE if necessary
|
# Installed perl scripts and dependent modules that have
|
||||||
ifndef EPICS_DATABASE
|
# a significant effect on the script's output
|
||||||
EPICS_DATABASE = $(if $(BUILDING_DATABASE),$(INSTALL_LOCATION),$(EPICS_BASE))
|
DBDEXPAND_pl = $(EPICS_BASE_HOST_BIN)/dbdExpand.pl
|
||||||
|
DBDTORECTYPEH_pl = $(EPICS_BASE_HOST_BIN)/dbdToRecordtypeH.pl
|
||||||
|
DBDTORECTYPEH_dep = $(DBDTORECTYPEH_pl) $(call FIND_PM,DBD/Rec*.pm)
|
||||||
|
DBDTOMENUH_pl = $(EPICS_BASE_HOST_BIN)/dbdToMenuH.pl
|
||||||
|
DBDTOMENUH_dep = $(DBDTOMENUH_pl) $(call FIND_PM,DBD/Menu.pm)
|
||||||
|
DBDTOMD_pl = $(EPICS_BASE_HOST_BIN)/dbdToMD.pl
|
||||||
|
DBDTOHTML_pl = $(EPICS_BASE_HOST_BIN)/dbdToHtml.pl
|
||||||
|
DBDTOHTML_dep = $(DBDTOHTML_pl) $(call FIND_PM,EPICS/Pod*Html.pm)
|
||||||
|
REGRECDEVDRV_pl = $(EPICS_BASE_HOST_BIN)/registerRecordDeviceDriver.pl
|
||||||
|
REGRECDEVDRV_dep = $(REGRECDEVDRV_pl)
|
||||||
|
|
||||||
# Paths to tools built here
|
# Commands for running scripts in recipes
|
||||||
EPICS_DATABASE_HOST_BIN = $(EPICS_DATABASE)/bin/$(EPICS_HOST_ARCH)
|
DBEXPAND = $(PERL) $(DBDEXPAND_pl)
|
||||||
endif
|
DBTORECORDTYPEH = $(PERL) $(DBDTORECTYPEH_pl)
|
||||||
|
DBTOMENUH = $(PERL) $(DBDTOMENUH_pl)
|
||||||
|
DBDTOMD = $(PERL) $(DBDTOMD_pl)
|
||||||
|
DBDTOHTML = $(PERL) $(DBDTOHTML_pl)
|
||||||
|
REGISTERRECORDDEVICEDRIVER = $(PERL) $(REGRECDEVDRV_pl)
|
||||||
|
|
||||||
# Set location of locally-built tools
|
# Installed binary executables, quoted for running on Windows
|
||||||
MAKEBPT = $(EPICS_DATABASE_HOST_BIN)/makeBpt$(HOSTEXE)
|
MAKEBPT = "$(EPICS_BASE_HOST_BIN)/makeBpt$(HOSTEXE)"
|
||||||
DBEXPAND = $(PERL) $(EPICS_DATABASE_HOST_BIN)/dbdExpand.pl
|
MSI3_15 = "$(EPICS_BASE_HOST_BIN)/msi$(HOSTEXE)"
|
||||||
DBTORECORDTYPEH = $(PERL) $(EPICS_DATABASE_HOST_BIN)/dbdToRecordtypeH.pl
|
|
||||||
DBTOMENUH = $(PERL) $(EPICS_DATABASE_HOST_BIN)/dbdToMenuH.pl
|
|
||||||
DBDTOHTML = $(PERL) $(EPICS_DATABASE_HOST_BIN)/dbdToHtml.pl
|
|
||||||
REGISTERRECORDDEVICEDRIVER = $(PERL) $(EPICS_DATABASE_HOST_BIN)/registerRecordDeviceDriver.pl
|
|
||||||
MSI3_15 = $(EPICS_DATABASE_HOST_BIN)/msi$(HOSTEXE)
|
|
||||||
|
|
||||||
# Libraries needed to link a basic IOC
|
# Libraries needed to link a basic IOC
|
||||||
EPICS_BASE_IOC_LIBS = dbRecStd dbCore ca Com
|
EPICS_BASE_IOC_LIBS = dbRecStd dbCore ca Com
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Version number for the database APIs and shared library
|
# Version number for the database APIs and shared library
|
||||||
|
|
||||||
EPICS_DATABASE_MAJOR_VERSION = 3
|
EPICS_DATABASE_MAJOR_VERSION = 3
|
||||||
EPICS_DATABASE_MINOR_VERSION = 21
|
EPICS_DATABASE_MINOR_VERSION = 24
|
||||||
EPICS_DATABASE_MAINTENANCE_VERSION = 1
|
EPICS_DATABASE_MAINTENANCE_VERSION = 1
|
||||||
|
|
||||||
# Development flag, set to zero for release versions
|
# Development flag, set to zero for release versions
|
||||||
|
|||||||
@@ -5,9 +5,10 @@
|
|||||||
# in file LICENSE that is included with this distribution.
|
# in file LICENSE that is included with this distribution.
|
||||||
#*************************************************************************
|
#*************************************************************************
|
||||||
|
|
||||||
# Set location of locally generated tools
|
# Our locally-built tools
|
||||||
YACC = $(abspath $(EPICS_BASE)/bin/$(EPICS_HOST_ARCH))/antelope$(HOSTEXE)
|
# Windows can need these paths to be quoted
|
||||||
LEX = $(abspath $(EPICS_BASE)/bin/$(EPICS_HOST_ARCH))/e_flex$(HOSTEXE) \
|
YACC = "$(EPICS_BASE_HOST_BIN)/antelope$(HOSTEXE)"
|
||||||
|
LEX = "$(EPICS_BASE_HOST_BIN)/e_flex$(HOSTEXE)" \
|
||||||
-S$(EPICS_BASE)/include/flex.skel.static
|
-S$(EPICS_BASE)/include/flex.skel.static
|
||||||
|
|
||||||
# Default stack size for osiThread
|
# Default stack size for osiThread
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
# Version number for the libcom APIs and shared library
|
# Version number for the libcom APIs and shared library
|
||||||
|
|
||||||
EPICS_LIBCOM_MAJOR_VERSION = 3
|
EPICS_LIBCOM_MAJOR_VERSION = 3
|
||||||
EPICS_LIBCOM_MINOR_VERSION = 21
|
EPICS_LIBCOM_MINOR_VERSION = 24
|
||||||
EPICS_LIBCOM_MAINTENANCE_VERSION = 1
|
EPICS_LIBCOM_MAINTENANCE_VERSION = 1
|
||||||
|
|
||||||
# Development flag, set to zero for release versions
|
# Development flag, set to zero for release versions
|
||||||
|
|||||||
@@ -92,3 +92,6 @@ EPICS_IOC_LOG_FILE_NAME=
|
|||||||
EPICS_IOC_LOG_FILE_COMMAND=
|
EPICS_IOC_LOG_FILE_COMMAND=
|
||||||
EPICS_IOC_LOG_FILE_LIMIT=1000000
|
EPICS_IOC_LOG_FILE_LIMIT=1000000
|
||||||
|
|
||||||
|
# Set to 'YES' to call abort() rather than suspend the current thread
|
||||||
|
# when an assert() fails
|
||||||
|
EPICS_ABORT_ON_ASSERT=NO
|
||||||
|
|||||||
@@ -34,5 +34,9 @@ CFG += TOOLCHAIN.$(EPICS_HOST_ARCH).$(T_A)
|
|||||||
|
|
||||||
include $(TOP)/configure/RULES
|
include $(TOP)/configure/RULES
|
||||||
|
|
||||||
|
ifeq ($(GNU),YES)
|
||||||
|
# Pass compiler flags to preprocessor to enable _FORTIFY_SOURCE
|
||||||
|
TOOLCHAIN.$(EPICS_HOST_ARCH).$(T_A): CPPFLAGS += $(CFLAGS)
|
||||||
|
endif
|
||||||
TOOLCHAIN.$(EPICS_HOST_ARCH).$(T_A): toolchain.c
|
TOOLCHAIN.$(EPICS_HOST_ARCH).$(T_A): toolchain.c
|
||||||
$(PREPROCESS.cpp)
|
$(PREPROCESS.cpp)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ TEMPL_SUFFIX ?= .template
|
|||||||
# vpath
|
# vpath
|
||||||
|
|
||||||
vpath %.pm $(USR_VPATH) $(SRC_DIRS) $(dir $(DBD))
|
vpath %.pm $(USR_VPATH) $(SRC_DIRS) $(dir $(DBD))
|
||||||
vpath %.pod $(USR_VPATH) $(SRC_DIRS) $(dir $(DBD))
|
vpath %.pod $(USR_VPATH) $(SRC_DIRS) .. $(dir $(DBD))
|
||||||
vpath %.dbd $(USR_VPATH) $(SRC_DIRS) $(dir $(DBD))
|
vpath %.dbd $(USR_VPATH) $(SRC_DIRS) $(dir $(DBD))
|
||||||
vpath %.db $(USR_VPATH) $(SRC_DIRS) $(dir $(DB))
|
vpath %.db $(USR_VPATH) $(SRC_DIRS) $(dir $(DB))
|
||||||
vpath %.vdb $(USR_VPATH) $(SRC_DIRS) $(dir $(DB))
|
vpath %.vdb $(USR_VPATH) $(SRC_DIRS) $(dir $(DB))
|
||||||
@@ -197,7 +197,7 @@ endif
|
|||||||
# build dependancies, clean rule
|
# build dependancies, clean rule
|
||||||
|
|
||||||
inc: $(COMMON_INC) $(INSTALL_INC) $(COMMON_DBDS) $(COMMON_DBDCATS) \
|
inc: $(COMMON_INC) $(INSTALL_INC) $(COMMON_DBDS) $(COMMON_DBDCATS) \
|
||||||
$(INSTALL_DBDS) $(INSTALL_DBD_INSTALLS)
|
$(INSTALL_DBDS) $(INSTALL_DBD_INSTALLS) $(COMMON_DOCS)
|
||||||
|
|
||||||
build: $(COMMON_DBS) $(INSTALL_DBS) \
|
build: $(COMMON_DBS) $(INSTALL_DBS) \
|
||||||
$(DBDDEPENDS_FILES) $(TARGETS) \
|
$(DBDDEPENDS_FILES) $(TARGETS) \
|
||||||
@@ -217,32 +217,32 @@ realclean: clean
|
|||||||
#---------------------------------------------------------------
|
#---------------------------------------------------------------
|
||||||
# Dependency files
|
# Dependency files
|
||||||
|
|
||||||
%Record.h$(DEP): $(COMMON_DIR)/%Record.dbd
|
%Record.h$(DEP): $(COMMON_DIR)/%Record.dbd $(DBDTORECTYPEH_dep)
|
||||||
@$(RM) $@
|
@$(RM) $@
|
||||||
@$(DBTORECORDTYPEH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
|
@$(DBTORECORDTYPEH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
|
||||||
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
|
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
|
||||||
|
|
||||||
%Record.h$(DEP): %Record.dbd
|
%Record.h$(DEP): %Record.dbd $(DBDTORECTYPEH_dep)
|
||||||
@$(RM) $@
|
@$(RM) $@
|
||||||
@$(DBTORECORDTYPEH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
|
@$(DBTORECORDTYPEH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
|
||||||
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
|
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
|
||||||
|
|
||||||
%Record.h$(DEP): ../%Record.dbd
|
%Record.h$(DEP): ../%Record.dbd $(DBDTORECTYPEH_dep)
|
||||||
@$(RM) $@
|
@$(RM) $@
|
||||||
@$(DBTORECORDTYPEH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
|
@$(DBTORECORDTYPEH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
|
||||||
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
|
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
|
||||||
|
|
||||||
menu%.h$(DEP): $(COMMON_DIR)/menu%.dbd
|
menu%.h$(DEP): $(COMMON_DIR)/menu%.dbd $(DBDTOMENUH_dep)
|
||||||
@$(RM) $@
|
@$(RM) $@
|
||||||
@$(DBTOMENUH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
|
@$(DBTOMENUH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
|
||||||
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
|
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
|
||||||
|
|
||||||
menu%.h$(DEP): menu%.dbd
|
menu%.h$(DEP): menu%.dbd $(DBDTOMENUH_dep)
|
||||||
@$(RM) $@
|
@$(RM) $@
|
||||||
@$(DBTOMENUH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
|
@$(DBTOMENUH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
|
||||||
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
|
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
|
||||||
|
|
||||||
menu%.h$(DEP): ../menu%.dbd
|
menu%.h$(DEP): ../menu%.dbd $(DBDTOMENUH_dep)
|
||||||
@$(RM) $@
|
@$(RM) $@
|
||||||
@$(DBTOMENUH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
|
@$(DBTOMENUH) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
|
||||||
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
|
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
|
||||||
@@ -261,7 +261,7 @@ menu%.h$(DEP): ../menu%.dbd
|
|||||||
@$(DBEXPAND) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
|
@$(DBEXPAND) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $< > $@
|
||||||
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
|
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
|
||||||
|
|
||||||
%.dbd$(DEP):
|
%.dbd$(DEP): $($*_DBD)
|
||||||
@$(RM) $@
|
@$(RM) $@
|
||||||
@$(DBEXPAND) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $($*_DBD) > $@
|
@$(DBEXPAND) -D $(DBDFLAGS) -o $(COMMONDEP_TARGET) $($*_DBD) > $@
|
||||||
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
|
@echo "$(COMMONDEP_TARGET): ../Makefile" >> $@
|
||||||
@@ -330,32 +330,32 @@ $(INSTALL_DB)/%$(TEMPL_SUFFIX): ../%$(TEMPL_SUFFIX)
|
|||||||
#---------------------------------------------------------------
|
#---------------------------------------------------------------
|
||||||
# INC files
|
# INC files
|
||||||
|
|
||||||
$(COMMON_DIR)/%Record.h: $(COMMON_DIR)/%Record.dbd
|
$(COMMON_DIR)/%Record.h: $(COMMON_DIR)/%Record.dbd $(DBDTORECTYPEH_dep)
|
||||||
@$(RM) $(notdir $@)
|
@$(RM) $(notdir $@)
|
||||||
$(DBTORECORDTYPEH) $(DBDFLAGS) -o $(notdir $@) $<
|
$(DBTORECORDTYPEH) $(DBDFLAGS) -o $(notdir $@) $<
|
||||||
@$(MV) $(notdir $@) $@
|
@$(MV) $(notdir $@) $@
|
||||||
|
|
||||||
$(COMMON_DIR)/%Record.h: %Record.dbd
|
$(COMMON_DIR)/%Record.h: %Record.dbd $(DBDTORECTYPEH_dep)
|
||||||
@$(RM) $(notdir $@)
|
@$(RM) $(notdir $@)
|
||||||
$(DBTORECORDTYPEH) $(DBDFLAGS) -o $(notdir $@) $<
|
$(DBTORECORDTYPEH) $(DBDFLAGS) -o $(notdir $@) $<
|
||||||
@$(MV) $(notdir $@) $@
|
@$(MV) $(notdir $@) $@
|
||||||
|
|
||||||
$(COMMON_DIR)/%Record.h: ../%Record.dbd
|
$(COMMON_DIR)/%Record.h: ../%Record.dbd $(DBDTORECTYPEH_dep)
|
||||||
@$(RM) $(notdir $@)
|
@$(RM) $(notdir $@)
|
||||||
$(DBTORECORDTYPEH) $(DBDFLAGS) -o $(notdir $@) $<
|
$(DBTORECORDTYPEH) $(DBDFLAGS) -o $(notdir $@) $<
|
||||||
@$(MV) $(notdir $@) $@
|
@$(MV) $(notdir $@) $@
|
||||||
|
|
||||||
$(COMMON_DIR)/menu%.h: $(COMMON_DIR)/menu%.dbd
|
$(COMMON_DIR)/menu%.h: $(COMMON_DIR)/menu%.dbd $(DBDTOMENUH_dep)
|
||||||
@$(RM) $(notdir $@)
|
@$(RM) $(notdir $@)
|
||||||
$(DBTOMENUH) $(DBDFLAGS) -o $(notdir $@) $<
|
$(DBTOMENUH) $(DBDFLAGS) -o $(notdir $@) $<
|
||||||
@$(MV) $(notdir $@) $@
|
@$(MV) $(notdir $@) $@
|
||||||
|
|
||||||
$(COMMON_DIR)/menu%.h: menu%.dbd
|
$(COMMON_DIR)/menu%.h: menu%.dbd $(DBDTOMENUH_dep)
|
||||||
@$(RM) $(notdir $@)
|
@$(RM) $(notdir $@)
|
||||||
$(DBTOMENUH) $(DBDFLAGS) -o $(notdir $@) $<
|
$(DBTOMENUH) $(DBDFLAGS) -o $(notdir $@) $<
|
||||||
@$(MV) $(notdir $@) $@
|
@$(MV) $(notdir $@) $@
|
||||||
|
|
||||||
$(COMMON_DIR)/menu%.h: ../menu%.dbd
|
$(COMMON_DIR)/menu%.h: ../menu%.dbd $(DBDTOMENUH_dep)
|
||||||
@$(RM) $(notdir $@)
|
@$(RM) $(notdir $@)
|
||||||
$(DBTOMENUH) $(DBDFLAGS) -o $(notdir $@) $<
|
$(DBTOMENUH) $(DBDFLAGS) -o $(notdir $@) $<
|
||||||
@$(MV) $(notdir $@) $@
|
@$(MV) $(notdir $@) $@
|
||||||
@@ -366,6 +366,7 @@ $(COMMON_DIR)/menu%.h: ../menu%.dbd
|
|||||||
# DBD files
|
# DBD files
|
||||||
|
|
||||||
$(COMMON_DIR)/bpt%.dbd: bpt%.data
|
$(COMMON_DIR)/bpt%.dbd: bpt%.data
|
||||||
|
$(ECHO) "Converting data from $<"
|
||||||
@$(RM) $(notdir $@)
|
@$(RM) $(notdir $@)
|
||||||
$(MAKEBPT) $< $(notdir $@)
|
$(MAKEBPT) $< $(notdir $@)
|
||||||
@$(MV) $(notdir $@) $@
|
@$(MV) $(notdir $@) $@
|
||||||
@@ -399,7 +400,7 @@ $(COMMON_DBDCATS):$(COMMON_DIR)/%.dbd:
|
|||||||
$(DBDCAT_COMMAND)
|
$(DBDCAT_COMMAND)
|
||||||
@$(MV) $(notdir $@) $@
|
@$(MV) $(notdir $@) $@
|
||||||
|
|
||||||
$(COMMON_DIR)/%.dbd:
|
$(COMMON_DIR)/%.dbd: $($*_DBD)
|
||||||
$(ECHO) "Creating dbd file $(notdir $@)"
|
$(ECHO) "Creating dbd file $(notdir $@)"
|
||||||
@$(RM) $(notdir $@)
|
@$(RM) $(notdir $@)
|
||||||
$(DBEXPAND) $(DBDFLAGS) -o $(notdir $@) $($*_DBD)
|
$(DBEXPAND) $(DBDFLAGS) -o $(notdir $@) $($*_DBD)
|
||||||
@@ -426,31 +427,51 @@ $(foreach file, $(DBD_INSTALLS), $(eval $(call DBD_INSTALLS_template, $(file))))
|
|||||||
|
|
||||||
.PRECIOUS: $(COMMON_DBDS) $(COMMON_DIR)/%.dbd
|
.PRECIOUS: $(COMMON_DBDS) $(COMMON_DIR)/%.dbd
|
||||||
|
|
||||||
|
#---------------------------------------------------------------
|
||||||
|
# Markdown files
|
||||||
|
|
||||||
|
$(COMMON_DIR)/%.md: %.dbd.pod $(DBDTOMD_pl)
|
||||||
|
@$(RM) $(notdir $@)
|
||||||
|
$(DBDTOMD) $(DBDFLAGS) -o $(notdir $@) $<
|
||||||
|
@$(MV) $(notdir $@) $@
|
||||||
|
|
||||||
|
$(COMMON_DIR)/%.md: %.pod $(PODTOMD_pl)
|
||||||
|
@$(RM) $(notdir $@)
|
||||||
|
$(PODTOMD) -o $(notdir $@) $<
|
||||||
|
@$(MV) $(notdir $@) $@
|
||||||
|
|
||||||
|
$(COMMON_DIR)/%.md: ../%.pl $(PODTOMD_pl)
|
||||||
|
@$(RM) $(notdir $@)
|
||||||
|
$(PODTOMD) -o $(notdir $@) $<
|
||||||
|
@$(MV) $(notdir $@) $@
|
||||||
|
|
||||||
|
.PRECIOUS: $(COMMON_DIR)/%.md
|
||||||
|
|
||||||
#---------------------------------------------------------------
|
#---------------------------------------------------------------
|
||||||
# HTML files
|
# HTML files
|
||||||
|
|
||||||
$(COMMON_DIR)/%.html: %.dbd.pod
|
$(COMMON_DIR)/%.html: %.dbd.pod $(DBDTOHTML_pl)
|
||||||
@$(RM) $(notdir $@)
|
@$(RM) $(notdir $@)
|
||||||
$(DBDTOHTML) $(DBDFLAGS) -o $(notdir $@) $<
|
$(DBDTOHTML) $(DBDFLAGS) -o $(notdir $@) $<
|
||||||
@$(MV) $(notdir $@) $@
|
@$(MV) $(notdir $@) $@
|
||||||
|
|
||||||
$(COMMON_DIR)/%.html: %.pod
|
$(COMMON_DIR)/%.html: %.pod $(PODTOHTML_dep)
|
||||||
@$(RM) $(notdir $@)
|
@$(RM) $(notdir $@)
|
||||||
$(PODTOHTML) -s -s -o $(notdir $@) $<
|
$(PODTOHTML) -s -s -o $(notdir $@) $<
|
||||||
@$(MV) $(notdir $@) $@
|
@$(MV) $(notdir $@) $@
|
||||||
|
|
||||||
$(COMMON_DIR)/%.html: %.pm
|
$(COMMON_DIR)/%.html: %.pm $(PODTOHTML_dep)
|
||||||
@$(RM) $(notdir $@)
|
@$(RM) $(notdir $@)
|
||||||
$(PODTOHTML) -o $(notdir $@) $<
|
$(PODTOHTML) -o $(notdir $@) $<
|
||||||
@$(MV) $(notdir $@) $@
|
@$(MV) $(notdir $@) $@
|
||||||
|
|
||||||
$(COMMON_DIR)/%.html: ../%.pm
|
$(COMMON_DIR)/%.html: ../%.pm $(PODTOHTML_dep)
|
||||||
@$(RM) $(notdir $@)
|
@$(RM) $(notdir $@)
|
||||||
$(PODTOHTML) -s -o $(notdir $@) $<
|
$(PODTOHTML) -s -o $(notdir $@) $<
|
||||||
@$(MKDIR) $(dir $@)
|
@$(MKDIR) $(dir $@)
|
||||||
@$(MV) $(notdir $@) $@
|
@$(MV) $(notdir $@) $@
|
||||||
|
|
||||||
$(COMMON_DIR)/%.html: ../%.pl
|
$(COMMON_DIR)/%.html: ../%.pl $(PODTOHTML_dep)
|
||||||
@$(RM) $(notdir $@)
|
@$(RM) $(notdir $@)
|
||||||
$(PODTOHTML) -s -o $(notdir $@) $<
|
$(PODTOHTML) -s -o $(notdir $@) $<
|
||||||
@$(MV) $(notdir $@) $@
|
@$(MV) $(notdir $@) $@
|
||||||
@@ -526,16 +547,19 @@ $(foreach file, $(DB_INSTALLS), $(eval $(call DB_INSTALLS_template, $(file))))
|
|||||||
#---------------------------------------------------------------
|
#---------------------------------------------------------------
|
||||||
# register record,device,driver support
|
# register record,device,driver support
|
||||||
|
|
||||||
%_registerRecordDeviceDriver.cpp: $(COMMON_DIR)/%.dbd
|
%_registerRecordDeviceDriver.cpp: $(COMMON_DIR)/%.dbd $(REGRECDEVDRV_dep)
|
||||||
@$(RM) $@
|
@$(RM) $@
|
||||||
$(REGISTERRECORDDEVICEDRIVER) $(REGRDDFLAGS) -o $@ $< $(basename $@) $(IOCS_APPL_TOP)
|
$(REGISTERRECORDDEVICEDRIVER) $(REGRDDFLAGS) -o $@ \
|
||||||
|
$< $(basename $@) $(IOCS_APPL_TOP)
|
||||||
|
|
||||||
%_registerRecordDeviceDriver.cpp: %.dbd
|
%_registerRecordDeviceDriver.cpp: %.dbd $(REGRECDEVDRV_dep)
|
||||||
@$(RM) $@
|
@$(RM) $@
|
||||||
$(REGISTERRECORDDEVICEDRIVER) $(REGRDDFLAGS) -o $@ $< $(basename $@) $(IOCS_APPL_TOP)
|
$(REGISTERRECORDDEVICEDRIVER) $(REGRDDFLAGS) -o $@ \
|
||||||
|
$< $(basename $@) $(IOCS_APPL_TOP)
|
||||||
|
|
||||||
%_registerRecordDeviceDriver.cpp: ../%.dbd
|
%_registerRecordDeviceDriver.cpp: ../%.dbd $(REGRECDEVDRV_dep)
|
||||||
@$(RM) $@
|
@$(RM) $@
|
||||||
$(REGISTERRECORDDEVICEDRIVER) $(REGRDDFLAGS) -o $@ $< $(basename $@) $(IOCS_APPL_TOP)
|
$(REGISTERRECORDDEVICEDRIVER) $(REGRDDFLAGS) -o $@ \
|
||||||
|
$< $(basename $@) $(IOCS_APPL_TOP)
|
||||||
|
|
||||||
.PRECIOUS: %_registerRecordDeviceDriver.cpp
|
.PRECIOUS: %_registerRecordDeviceDriver.cpp
|
||||||
|
|||||||
@@ -22,7 +22,8 @@ vpath %.cpp $(USR_VPATH) $(ALL_SRC_DIRS)
|
|||||||
vpath %.rc $(USR_VPATH) $(ALL_SRC_DIRS)
|
vpath %.rc $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||||
vpath %.h $(USR_VPATH) $(ALL_SRC_DIRS)
|
vpath %.h $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||||
vpath %.hpp $(USR_VPATH) $(ALL_SRC_DIRS)
|
vpath %.hpp $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||||
vpath %.html $(USR_VPATH) $(ALL_SRC_DIRS)
|
vpath %.html $(USR_VPATH) $(ALL_SRC_DIRS) $(COMMON_DIR)
|
||||||
|
vpath %.md $(USR_VPATH) $(ALL_SRC_DIRS) $(COMMON_DIR)
|
||||||
vpath %.skel.static $(USR_VPATH) $(ALL_SRC_DIRS)
|
vpath %.skel.static $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||||
vpath %.y $(USR_VPATH) $(ALL_SRC_DIRS)
|
vpath %.y $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||||
vpath %.l $(USR_VPATH) $(ALL_SRC_DIRS)
|
vpath %.l $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||||
@@ -111,7 +112,7 @@ endif
|
|||||||
#---------------------------------------------------------------
|
#---------------------------------------------------------------
|
||||||
# Read dependency files
|
# Read dependency files
|
||||||
|
|
||||||
ifneq (inc,$(strip $(MAKECMDGOALS)))
|
ifneq ($(filter-out inc,$(strip $(MAKECMDGOALS))),)
|
||||||
ifneq (,$(strip $(HDEPENDS_FILES)))
|
ifneq (,$(strip $(HDEPENDS_FILES)))
|
||||||
$(filter-out $(wildcard *$(DEP)), $(HDEPENDS_FILES)): | $(COMMON_INC)
|
$(filter-out $(wildcard *$(DEP)), $(HDEPENDS_FILES)): | $(COMMON_INC)
|
||||||
-include $(HDEPENDS_FILES)
|
-include $(HDEPENDS_FILES)
|
||||||
@@ -165,12 +166,12 @@ build: $(OBJSNAME) $(LIBTARGETS) $(PRODTARGETS) $(TESTPRODTARGETS) \
|
|||||||
$(TARGETS) $(TESTSCRIPTS) $(INSTALL_LIB_INSTALLS)
|
$(TARGETS) $(TESTSCRIPTS) $(INSTALL_LIB_INSTALLS)
|
||||||
|
|
||||||
inc: $(COMMON_INC) $(INSTALL_INC) $(INSTALL_CONFIGS) $(INSTALLS_CFG) \
|
inc: $(COMMON_INC) $(INSTALL_INC) $(INSTALL_CONFIGS) $(INSTALLS_CFG) \
|
||||||
$(INSTALL_HTMLS) $(INSTALLS_PERL_MODULES) $(INSTALL_SCRIPTS)
|
$(INSTALL_HTMLS) $(INSTALLS_PERL_MODULES) $(INSTALL_SCRIPTS) \
|
||||||
|
$(INSTALL_DOCS)
|
||||||
|
|
||||||
buildInstall: \
|
buildInstall: \
|
||||||
$(INSTALL_PROD) $(INSTALL_MUNCHS) \
|
$(INSTALL_PROD) $(INSTALL_MUNCHS) \
|
||||||
$(INSTALL_TCLLIBS) $(INSTALL_TCLINDEX) \
|
$(INSTALL_TCLLIBS) $(INSTALL_TCLINDEX) \
|
||||||
$(INSTALL_DOCS) \
|
|
||||||
$(INSTALL_OBJS) \
|
$(INSTALL_OBJS) \
|
||||||
$(INSTALL_TEMPLATE) \
|
$(INSTALL_TEMPLATE) \
|
||||||
$(INSTALL_BIN_INSTALLS)
|
$(INSTALL_BIN_INSTALLS)
|
||||||
@@ -207,7 +208,7 @@ endif
|
|||||||
checkRelease:
|
checkRelease:
|
||||||
+$(CONVERTRELEASE) checkRelease
|
+$(CONVERTRELEASE) checkRelease
|
||||||
warnRelease:
|
warnRelease:
|
||||||
$(CONVERTRELEASE) checkRelease
|
-$(CONVERTRELEASE) checkRelease
|
||||||
noCheckRelease:
|
noCheckRelease:
|
||||||
ifeq ($(EPICS_HOST_ARCH),$(T_A))
|
ifeq ($(EPICS_HOST_ARCH),$(T_A))
|
||||||
$(info Warning: RELEASE file consistency checks have been disabled)
|
$(info Warning: RELEASE file consistency checks have been disabled)
|
||||||
@@ -373,11 +374,11 @@ $(MODNAME): %$(MODEXT): %$(EXE)
|
|||||||
# Automated testing
|
# Automated testing
|
||||||
|
|
||||||
runtests: run-tap-tests
|
runtests: run-tap-tests
|
||||||
run-tap-tests: $(TESTSCRIPTS.t)
|
run-tap-tests: | build
|
||||||
ifneq ($(TESTSCRIPTS.t),)
|
ifneq ($(TESTSCRIPTS.t),)
|
||||||
ifdef RUNTESTS_ENABLED
|
ifdef RUNTESTS_ENABLED
|
||||||
$(ECHO) "$(PROVE) $^"
|
$(ECHO) "$(PROVE) $(TESTSCRIPTS.t)"
|
||||||
@$(PROVE) $^ || $(PROVE_FAILURE)
|
@$(PROVE) $(TESTSCRIPTS.t) || $(PROVE_FAILURE)
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
@@ -390,8 +391,8 @@ test-results: tap-results
|
|||||||
tap-results: $(TAPFILES)
|
tap-results: $(TAPFILES)
|
||||||
ifneq ($(strip $(TAPFILES)),)
|
ifneq ($(strip $(TAPFILES)),)
|
||||||
ifdef RUNTESTS_ENABLED
|
ifdef RUNTESTS_ENABLED
|
||||||
$(ECHO) "$(PROVE.tap) $^"
|
$(ECHO) "$(PROVE.tap) $(TAPFILES)"
|
||||||
@$(PROVE.tap) $^ || $(PROVE_FAILURE)
|
@$(PROVE.tap) $(TAPFILES) || $(PROVE_FAILURE)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
CURRENT_TAPFILES := $(wildcard $(TAPFILES))
|
CURRENT_TAPFILES := $(wildcard $(TAPFILES))
|
||||||
@@ -407,7 +408,7 @@ ifneq ($(CURRENT_JUNITFILES),)
|
|||||||
endif
|
endif
|
||||||
|
|
||||||
# A .tap file is the output from running the associated test script
|
# A .tap file is the output from running the associated test script
|
||||||
$(TAPFILES.t): %.tap: %.t
|
$(TAPFILES.t): %.tap: %.t | build
|
||||||
ifdef RUNTESTS_ENABLED
|
ifdef RUNTESTS_ENABLED
|
||||||
$(ECHO) "$(PERL) $< -tap > $@"
|
$(ECHO) "$(PERL) $< -tap > $@"
|
||||||
@$(PERL) $< -tap > $@ || $(TAPFILE_FAILURE)
|
@$(PERL) $< -tap > $@ || $(TAPFILE_FAILURE)
|
||||||
@@ -532,11 +533,11 @@ endif # LOADABLE_SHRLIB_SUFFIX
|
|||||||
ifneq ($(INSTALL_CONFIGS),)
|
ifneq ($(INSTALL_CONFIGS),)
|
||||||
$(INSTALL_CONFIG)/%: %
|
$(INSTALL_CONFIG)/%: %
|
||||||
$(ECHO) "Installing config file $@"
|
$(ECHO) "Installing config file $@"
|
||||||
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(@D)
|
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $(abspath $< $(@D))
|
||||||
|
|
||||||
$(INSTALL_CONFIG)/%: ../%
|
$(INSTALL_CONFIG)/%: ../%
|
||||||
$(ECHO) "Installing config file $@"
|
$(ECHO) "Installing config file $@"
|
||||||
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(@D)
|
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $(abspath $< $(@D))
|
||||||
endif
|
endif
|
||||||
|
|
||||||
$(INSTALL_INCLUDE)/%: $(COMMON_DIR)/%
|
$(INSTALL_INCLUDE)/%: $(COMMON_DIR)/%
|
||||||
@@ -555,6 +556,10 @@ $(INSTALL_INCLUDE)/compiler/$(CMPLR_CLASS)/%: %
|
|||||||
$(ECHO) "Installing compiler dependent include file $@"
|
$(ECHO) "Installing compiler dependent include file $@"
|
||||||
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(@D)
|
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(@D)
|
||||||
|
|
||||||
|
$(INSTALL_DOC)/%: $(COMMON_DIR)/%
|
||||||
|
$(ECHO) "Installing generated doc $@"
|
||||||
|
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(@D)
|
||||||
|
|
||||||
$(INSTALL_DOC)/%: %
|
$(INSTALL_DOC)/%: %
|
||||||
$(ECHO) "Installing doc $@"
|
$(ECHO) "Installing doc $@"
|
||||||
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(INSTALL_DOC)
|
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(INSTALL_DOC)
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ $(foreach file,$(MAKEFILE_LIST), \
|
|||||||
|
|
||||||
PRINT_Var = $(@:PRINT.%=%)
|
PRINT_Var = $(@:PRINT.%=%)
|
||||||
PRINT.%:
|
PRINT.%:
|
||||||
@echo $(PRINT_Var) = '$($(PRINT_Var))'
|
@+echo $(PRINT_Var) = '$($(PRINT_Var))'
|
||||||
|
|
||||||
.PHONY: PRINT PRINT.%
|
.PHONY: PRINT PRINT.%
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ vpath %@ $(USR_VPATH) $(ALL_SRC_DIRS)
|
|||||||
# INC += myVersion.h
|
# INC += myVersion.h
|
||||||
|
|
||||||
# Default settings
|
# Default settings
|
||||||
EXPAND_TOOL ?= $(PERL) $(TOOLS)/expandVars.pl
|
EXPAND_TOOL ?= $(PERL) $(TOOLS)/expandVars.pl $(QUIET_FLAG)
|
||||||
|
|
||||||
EXPANDARCH = -a $(T_A)
|
EXPANDARCH = -a $(T_A)
|
||||||
EXPANDFLAGS += -t $(INSTALL_LOCATION)
|
EXPANDFLAGS += -t $(INSTALL_LOCATION)
|
||||||
@@ -55,22 +55,17 @@ EXPANDFLAGS += $(addprefix -D ,$(EXPAND_VARS) $($@_EXPAND_VARS))
|
|||||||
EXPANDFLAGS += $(foreach var, $(EXPAND_ME) $($@_EXPAND_ME), \
|
EXPANDFLAGS += $(foreach var, $(EXPAND_ME) $($@_EXPAND_ME), \
|
||||||
-D$(var)="$(strip $($(var)))")
|
-D$(var)="$(strip $($(var)))")
|
||||||
|
|
||||||
# The names of files to be expanded must end with '@'
|
# Output files
|
||||||
EXPANDED = $(EXPAND:%@=%)
|
EXPANDED = $(EXPAND:%@=%)
|
||||||
EXPANDED_COM = $(EXPAND_COMMON:%@=%)
|
EXPANDED_COMMON = $(EXPAND_COMMON:%@=$(COMMON_DIR)/%)
|
||||||
EXPANDED_COMMON = $(EXPANDED_COM:%=$(COMMON_DIR)/%)
|
|
||||||
|
|
||||||
$(EXPANDED): %: %@
|
$(EXPANDED): %: %@
|
||||||
$(ECHO) "Expanding $< to $@"
|
$(ECHO) "Expanding $< to $@"
|
||||||
@$(RM) $@
|
|
||||||
$(EXPAND_TOOL) $(EXPANDARCH) $(EXPANDFLAGS) $($@_EXPANDFLAGS) $< $@
|
$(EXPAND_TOOL) $(EXPANDARCH) $(EXPANDFLAGS) $($@_EXPANDFLAGS) $< $@
|
||||||
|
|
||||||
$(EXPANDED_COM): %: %@
|
$(EXPANDED_COMMON): $(COMMON_DIR)/%: %@
|
||||||
$(ECHO) "Expanding $< to $(COMMON_DIR)/$@"
|
$(ECHO) "Expanding $< to $(COMMON_DIR)/$@"
|
||||||
@$(RM) $@
|
|
||||||
$(EXPAND_TOOL) $(EXPANDFLAGS) $($@_EXPANDFLAGS) $< $@
|
$(EXPAND_TOOL) $(EXPANDFLAGS) $($@_EXPANDFLAGS) $< $@
|
||||||
$(EXPANDED_COMMON): $(COMMON_DIR)/%: %
|
|
||||||
@$(MV) $< $@
|
|
||||||
|
|
||||||
clean: expand_clean
|
clean: expand_clean
|
||||||
|
|
||||||
|
|||||||
@@ -22,9 +22,11 @@
|
|||||||
# 7. Submodules must have a configure/CONFIG_SITE file that contains
|
# 7. Submodules must have a configure/CONFIG_SITE file that contains
|
||||||
# -include $(TOP)/../CONFIG_SITE.local
|
# -include $(TOP)/../CONFIG_SITE.local
|
||||||
|
|
||||||
# Add checked-out submodules to DIRS
|
# Add checked-out submodules to DIRS, unless INSTALL_LOCATION is empty
|
||||||
LIVE_SUBMODULES = $(subst /Makefile,,$(wildcard $(addsuffix /Makefile, $(SUBMODULES))))
|
LIVE_SUBMODULES = $(subst /Makefile,, \
|
||||||
DIRS += $(LIVE_SUBMODULES)
|
$(wildcard $(addsuffix /Makefile, $(SUBMODULES))))
|
||||||
|
live = $(if $(wildcard $(INSTALL_CONFIG)/RULES_TOP),LIVE,DEAD)
|
||||||
|
DIRS += $($(live)_SUBMODULES)
|
||||||
|
|
||||||
include $(CONFIG)/RULES_DIRS
|
include $(CONFIG)/RULES_DIRS
|
||||||
|
|
||||||
@@ -37,14 +39,13 @@ all host $(DIRS) $(ARCHS) $(ACTIONS) $(dirActionTargets) $(dirArchTargets) \
|
|||||||
# Convenience target
|
# Convenience target
|
||||||
RELEASE.host: $(RELEASE_LOCAL)
|
RELEASE.host: $(RELEASE_LOCAL)
|
||||||
|
|
||||||
$(RELEASE_LOCAL): Makefile CONFIG_SITE.local
|
$(RELEASE_LOCAL): Makefile $(CONFIG)/CONFIG_SITE \
|
||||||
|
$(wildcard $(CONFIG)/CONFIG_SITE.local)
|
||||||
$(ECHO) Creating $@ with
|
$(ECHO) Creating $@ with
|
||||||
$(ECHO) " $(PARENT_MODULE) = $(INSTALL_ABSOLUTE)"
|
$(ECHO) " $(PARENT_MODULE) = $(INSTALL_ABSOLUTE)"
|
||||||
@echo $(PARENT_MODULE) = $(INSTALL_ABSOLUTE)> $@
|
@echo $(PARENT_MODULE) = $(INSTALL_ABSOLUTE)> $@
|
||||||
realclean:
|
|
||||||
$(RM) $(wildcard RELEASE.*.local)
|
|
||||||
|
|
||||||
.PHONY: RELEASE.host realclean
|
.PHONY: RELEASE.host
|
||||||
|
|
||||||
# Testing: Combine test failure logs from the live submodules
|
# Testing: Combine test failure logs from the live submodules
|
||||||
TESTS_FAILED_LOGS = $(wildcard $(addsuffix /$(TESTS_FAILED_LOG), \
|
TESTS_FAILED_LOGS = $(wildcard $(addsuffix /$(TESTS_FAILED_LOG), \
|
||||||
|
|||||||
@@ -23,35 +23,42 @@ ifndef DISABLE_TOP_RULES
|
|||||||
# Rules for a regular application top directory
|
# Rules for a regular application top directory
|
||||||
#
|
#
|
||||||
|
|
||||||
distclean: realclean cvsclean realuninstall
|
# When run by 'make distclean' the realuninstall target also
|
||||||
|
# removes any modules/RELEASE.<host>.local files
|
||||||
|
distclean: realclean cvsclean realuninstall
|
||||||
|
|
||||||
realuninstall: uninstallDirs
|
realuninstall: uninstallDirs
|
||||||
$(RMDIR) $(INSTALL_LOCATION_BIN) $(INSTALL_LOCATION_LIB)
|
$(RMDIR) $(INSTALL_LOCATION_BIN) $(INSTALL_LOCATION_LIB)
|
||||||
|
ifeq (modules,$(filter modules,$(DIRS)))
|
||||||
|
ifeq (distclean,$(filter distclean,$(MAKECMDGOALS)))
|
||||||
|
$(RM) $(wildcard modules/RELEASE.*.local)
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
UNINSTALL_DIRS += $(INSTALL_DB) $(INSTALL_DBD) $(INSTALL_DOC) $(INSTALL_HTML)
|
UNINSTALL_DIRS += $(INSTALL_DB) $(INSTALL_DBD) $(INSTALL_DOC) $(INSTALL_HTML)
|
||||||
UNINSTALL_DIRS += $(INSTALL_INCLUDE) $(INSTALL_TEMPLATES) $(DIRECTORY_TARGETS)
|
UNINSTALL_DIRS += $(INSTALL_INCLUDE) $(INSTALL_TEMPLATES) $(DIRECTORY_TARGETS)
|
||||||
ifneq ($(INSTALL_LOCATION),$(TOP))
|
ifneq ($(INSTALL_LOCATION),$(TOP))
|
||||||
UNINSTALL_DIRS += $(INSTALL_CONFIG)
|
UNINSTALL_DIRS += $(INSTALL_CONFIG)
|
||||||
endif
|
endif
|
||||||
uninstallDirs: | clean
|
uninstallDirs:
|
||||||
$(RMDIR) $(UNINSTALL_DIRS)
|
$(RMDIR) $(UNINSTALL_DIRS)
|
||||||
|
|
||||||
# Remove the bin and lib directories if they have no sub-directories
|
# Remove the bin and lib directories if they have no sub-directories
|
||||||
#
|
#
|
||||||
EMPTY_INSTALL_DIRS = \
|
EMPTY_INSTALL_DIRS = \
|
||||||
$(if $(wildcard $(INSTALL_LOCATION_BIN)/*),,$(INSTALL_LOCATION_BIN)) \
|
$(if $(wildcard $(INSTALL_LOCATION_BIN)/*),,$(INSTALL_LOCATION_BIN)) \
|
||||||
$(if $(wildcard $(INSTALL_LOCATION_LIB)/*),,$(INSTALL_LOCATION_LIB))
|
$(if $(wildcard $(INSTALL_LOCATION_LIB)/*),,$(INSTALL_LOCATION_LIB))
|
||||||
uninstall: archuninstall uninstallDirs | clean
|
uninstall: archuninstall uninstallDirs
|
||||||
$(RMDIR) $(EMPTY_INSTALL_DIRS)
|
$(RMDIR) $(EMPTY_INSTALL_DIRS)
|
||||||
|
|
||||||
archuninstall: $(addprefix uninstall$(DIVIDER),$(BUILD_ARCHS))
|
archuninstall: $(addprefix uninstall$(DIVIDER),$(BUILD_ARCHS))
|
||||||
|
|
||||||
uninstall$(DIVIDER)%: | clean
|
uninstall$(DIVIDER)%:
|
||||||
$(RMDIR) $(addsuffix /$(subst uninstall$(DIVIDER),,$@), \
|
$(RMDIR) $(addsuffix /$(subst uninstall$(DIVIDER),,$@), \
|
||||||
$(INSTALL_LOCATION_BIN) $(INSTALL_LOCATION_LIB))
|
$(INSTALL_LOCATION_BIN) $(INSTALL_LOCATION_LIB))
|
||||||
|
|
||||||
# Only run this at the top of the parent
|
# Only run this at the top of the parent
|
||||||
runtests test-results:
|
runtests test-results:
|
||||||
@$(SHOWTESTFAILURES)
|
@$(SHOWTESTFAILURES)
|
||||||
|
|
||||||
else
|
else
|
||||||
@@ -76,7 +83,6 @@ help:
|
|||||||
@echo " inc - Installs header, dbd and html files"
|
@echo " inc - Installs header, dbd and html files"
|
||||||
@echo " build - Builds and installs all targets"
|
@echo " build - Builds and installs all targets"
|
||||||
@echo " install - Builds and installs all targets"
|
@echo " install - Builds and installs all targets"
|
||||||
@echo " buildInstall - Same as install (deprecated)"
|
|
||||||
@echo " clean - Removes the O.<arch> dirs created by running make"
|
@echo " clean - Removes the O.<arch> dirs created by running make"
|
||||||
@echo " In O.<arch> dir, clean removes build created files"
|
@echo " In O.<arch> dir, clean removes build created files"
|
||||||
@echo " realclean - Removes ALL O.<arch> dirs"
|
@echo " realclean - Removes ALL O.<arch> dirs"
|
||||||
@@ -101,7 +107,8 @@ ifndef DISABLE_TOP_RULES
|
|||||||
@echo " uninstall$(DIVIDER)<arch> - Remove bin & lib directories for <arch> only."
|
@echo " uninstall$(DIVIDER)<arch> - Remove bin & lib directories for <arch> only."
|
||||||
@echo " uninstall - Remove install directories created by this hostarch."
|
@echo " uninstall - Remove install directories created by this hostarch."
|
||||||
@echo " realuninstall - Removes ALL install dirs"
|
@echo " realuninstall - Removes ALL install dirs"
|
||||||
@echo " distclean - Same as realclean cvsclean realuninstall."
|
@echo " distclean - Does realclean cvsclean realuninstall and deletes any"
|
||||||
|
@echo " generated modules/RELEASE.<host>.local files"
|
||||||
endif
|
endif
|
||||||
@echo " help - Prints this list of valid make targets "
|
@echo " help - Prints this list of valid make targets "
|
||||||
@echo "Object targets are supported by the O.<arch> level Makefile .e.g"
|
@echo "Object targets are supported by the O.<arch> level Makefile .e.g"
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ CXXFLAGS = $($(BUILD_CLASS)_CXXFLAGS) $(POSIX_CXXFLAGS) $(OPT_CXXFLAGS)\
|
|||||||
$(USR_CXXFLAGS) $(CMD_CXXFLAGS) $(ARCH_DEP_CXXFLAGS) $(CODE_CXXFLAGS)\
|
$(USR_CXXFLAGS) $(CMD_CXXFLAGS) $(ARCH_DEP_CXXFLAGS) $(CODE_CXXFLAGS)\
|
||||||
$(STATIC_CXXFLAGS) $(OP_SYS_CXXFLAGS) $(LIBRARY_SRC_CFLAGS)
|
$(STATIC_CXXFLAGS) $(OP_SYS_CXXFLAGS) $(LIBRARY_SRC_CFLAGS)
|
||||||
|
|
||||||
LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(CMD_LDFLAGS)\
|
LDFLAGS += $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(CMD_LDFLAGS)\
|
||||||
$(POSIX_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(DEBUG_LDFLAGS) $(OP_SYS_LDFLAGS)\
|
$(POSIX_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(DEBUG_LDFLAGS) $(OP_SYS_LDFLAGS)\
|
||||||
$($(BUILD_CLASS)_LDFLAGS) $(RUNTIME_LDFLAGS) $(CODE_LDFLAGS)
|
$($(BUILD_CLASS)_LDFLAGS) $(RUNTIME_LDFLAGS) $(CODE_LDFLAGS)
|
||||||
|
|
||||||
@@ -77,7 +77,7 @@ CPPFLAGS += $($(BUILD_CLASS)_CPPFLAGS) $(POSIX_CPPFLAGS) $(OPT_CPPFLAGS)\
|
|||||||
$(USR_CPPFLAGS) $(CMD_CPPFLAGS) $(ARCH_DEP_CPPFLAGS) $(OP_SYS_CPPFLAGS)\
|
$(USR_CPPFLAGS) $(CMD_CPPFLAGS) $(ARCH_DEP_CPPFLAGS) $(OP_SYS_CPPFLAGS)\
|
||||||
$(OP_SYS_INCLUDE_CPPFLAGS) $(CODE_CPPFLAGS)
|
$(OP_SYS_INCLUDE_CPPFLAGS) $(CODE_CPPFLAGS)
|
||||||
|
|
||||||
ECHO = @$(if $(filter -s,$(MFLAGS)),$(NOP),echo)
|
ECHO = @$(if $(make-s),$(NOP),echo)
|
||||||
|
|
||||||
# Originally set in os/CONFIG.UnixCommon.Common
|
# Originally set in os/CONFIG.UnixCommon.Common
|
||||||
MKDIR = mkdir -p
|
MKDIR = mkdir -p
|
||||||
@@ -102,15 +102,47 @@ OS_CLASS = RTEMS
|
|||||||
# Operating system compile & link flags
|
# Operating system compile & link flags
|
||||||
OP_SYS_CFLAGS += -D__LINUX_ERRNO_EXTENSIONS__
|
OP_SYS_CFLAGS += -D__LINUX_ERRNO_EXTENSIONS__
|
||||||
|
|
||||||
OP_SYS_CFLAGS_NET_yes = -DRTEMS_LEGACY_STACK
|
# Has RTEMS been built with the internal legacy stack?
|
||||||
OP_SYS_CFLAGS += $(OP_SYS_CFLAGS_NET_$(RTEMS_HAS_NETWORKING))
|
ifeq ($(RTEMS_LEGACY_NETWORKING_INTERNAL),yes)
|
||||||
|
RTEMS_HAS_NETWORKING = yes
|
||||||
ifeq ($(RTEMS_HAS_POSIX_API),yes)
|
RTEMS_NETWORKING = legacy_internal
|
||||||
POSIX_CPPFLAGS = -D_GNU_SOURCE -D_DEFAULT_SOURCE
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
OP_SYS_LDLIBS_posix_NET_yes = -ltftpfs -lnfs -lz -ltelnetd
|
# Has RTEMS been built with the legacy stack as a separate package?
|
||||||
OP_SYS_LDLIBS_posix_NET_no = -ltftpfs -lbsd -lz
|
ifeq ($(RTEMS_LEGACY_NETWORKING),yes)
|
||||||
|
RTEMS_HAS_NETWORKING = yes
|
||||||
|
RTEMS_NETWORKING = legacy
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Has RTEMS been built with the libbsd stack as a separate package?
|
||||||
|
ifeq ($(RTEMS_BSD_NETWORKING),yes)
|
||||||
|
RTEMS_HAS_NETWORKING = yes
|
||||||
|
RTEMS_NETWORKING = bsd
|
||||||
|
endif
|
||||||
|
|
||||||
|
RTEMS_LEGACY_NET_LIB_no=
|
||||||
|
|
||||||
|
# Legacy network with RTEMS 5 and earlier
|
||||||
|
RTEMS_NET_LIB_legacy_internal=-lnfs
|
||||||
|
OP_SYS_CFLAGS_NET_legacy_internal = -DRTEMS_LEGACY_STACK
|
||||||
|
|
||||||
|
# Legacy network with RTEMS 6 is a separate package and library
|
||||||
|
RTEMS_NET_LIB_legacy=-lnfs -lnetworking -lnfs
|
||||||
|
OP_SYS_CFLAGS_NET_legacy = -DRTEMS_LEGACY_STACK
|
||||||
|
|
||||||
|
# LibBSD network with RTEMS 5 and 6 is a separate package and library
|
||||||
|
RTEMS_NET_LIB_bsd=-lbsd
|
||||||
|
OP_SYS_CFLAGS_NET_bsd = -DRTEMS_LIBBSD_STACK
|
||||||
|
|
||||||
|
# Set the networking flags
|
||||||
|
OP_SYS_CFLAGS += $(OP_SYS_CFLAGS_NET_$(RTEMS_NETWORKING))
|
||||||
|
|
||||||
|
POSIX_CPPFLAGS_posix = -D_GNU_SOURCE -D_DEFAULT_SOURCE
|
||||||
|
POSIX_CPPFLAGS = $(POSIX_CPPFLAGS_$(OS_API))
|
||||||
|
|
||||||
|
OP_SYS_LDLIBS_posix_NET_yes = -ltftpfs -lz -ltelnetd
|
||||||
|
OP_SYS_LDLIBS_posix_NET_yes += $(RTEMS_NET_LIB_$(RTEMS_NETWORKING))
|
||||||
|
OP_SYS_LDLIBS_posix_NET_no = -ltftpfs -lz
|
||||||
OP_SYS_LDLIBS_score_NET_yes = -lnfs
|
OP_SYS_LDLIBS_score_NET_yes = -lnfs
|
||||||
OP_SYS_LDLIBS_score_NET_no = -lnfs
|
OP_SYS_LDLIBS_score_NET_no = -lnfs
|
||||||
OP_SYS_LDLIBS += -lrtemsCom -lCom
|
OP_SYS_LDLIBS += -lrtemsCom -lCom
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
#
|
#
|
||||||
# Author: Matt Rippa
|
# Author: Matt Rippa
|
||||||
#
|
#
|
||||||
RTEMS_BSP = mvme2307
|
|
||||||
RTEMS_TARGET_CPU = powerpc
|
RTEMS_TARGET_CPU = powerpc
|
||||||
ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL
|
ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL
|
||||||
ARCH_DEP_CFLAGS += -DHAVE_PPCBUG
|
ARCH_DEP_CFLAGS += -DHAVE_PPCBUG
|
||||||
@@ -11,14 +10,21 @@ MUNCH_SUFFIX = .boot
|
|||||||
define MUNCH_CMD
|
define MUNCH_CMD
|
||||||
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary -R .comment -S $< rtems
|
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary -R .comment -S $< rtems
|
||||||
gzip -f9 rtems
|
gzip -f9 rtems
|
||||||
$(RTEMS_TOOLS)/bin/$(LD_FOR_TARGET) -o $@ \
|
$(RTEMS_TOOLS)/bin/$(LD_FOR_TARGET) -o $@.elf \
|
||||||
$(PROJECT_RELEASE)/lib/bootloader.o \
|
$(PROJECT_RELEASE)/lib/bootloader.o \
|
||||||
--just-symbols=$< \
|
--just-symbols=$< \
|
||||||
-b binary rtems.gz \
|
-b binary rtems.gz \
|
||||||
--no-warn-mismatch \
|
--no-warn-mismatch \
|
||||||
-T $(PROJECT_RELEASE)/lib/ppcboot.lds \
|
-T $(PROJECT_RELEASE)/lib/ppcboot.lds \
|
||||||
-Map $<.map
|
-Map $<.map
|
||||||
rm -f rtems.gz
|
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary $@.elf $@
|
||||||
|
rm -f rtems.gz $@.elf
|
||||||
endef
|
endef
|
||||||
|
|
||||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||||
|
|
||||||
|
ifeq ($(shell test $(RTEMS_VERSION) -ge 5; echo $$?),0)
|
||||||
|
RTEMS_BSP = mvme2700
|
||||||
|
else
|
||||||
|
RTEMS_BSP = mvme2307
|
||||||
|
endif
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ include $(CONFIG)/os/CONFIG.Common.RTEMS
|
|||||||
OP_SYS_LDFLAGS += -Wl,-Ttext,0x100000
|
OP_SYS_LDFLAGS += -Wl,-Ttext,0x100000
|
||||||
|
|
||||||
# This check must appear after the above include
|
# This check must appear after the above include
|
||||||
ifeq ($(RTEMS_VERSION),5)
|
ifeq ($(shell test $(RTEMS_VERSION) -ge 5; echo $$?),0)
|
||||||
$(info *** This target is not compatible with the configured RTEMS version.)
|
$(info *** This target is not compatible with the configured RTEMS version.)
|
||||||
$(info *** Build the RTEMS-pc686 (-qemu) target for RTEMS 5.x)
|
$(info *** Build the RTEMS-pc686 (-qemu) target for RTEMS 5.x)
|
||||||
$(error Can't continue)
|
$(error Can't continue)
|
||||||
|
|||||||
@@ -32,7 +32,7 @@ OP_SYS_LDFLAGS += -Wl,-Ttext,0x100000
|
|||||||
|
|
||||||
|
|
||||||
# This check must appear after the above include
|
# This check must appear after the above include
|
||||||
ifneq ($(RTEMS_VERSION),5)
|
ifeq ($(shell test $(RTEMS_VERSION) -lt 5; echo $$?),0)
|
||||||
$(info *** This target is not compatible with the configured RTEMS version.)
|
$(info *** This target is not compatible with the configured RTEMS version.)
|
||||||
$(info *** Build the RTEMS-pc386 (-qemu) target for RTEMS 4.x)
|
$(info *** Build the RTEMS-pc386 (-qemu) target for RTEMS 4.x)
|
||||||
$(error Can't continue)
|
$(error Can't continue)
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ ARCH_DEP_CFLAGS += -DRTEMS_HAS_ALTIVEC
|
|||||||
#OP_SYS_LDLIBS += -lbspExt #does not use posix stuff ... want to ignore
|
#OP_SYS_LDLIBS += -lbspExt #does not use posix stuff ... want to ignore
|
||||||
OP_SYS_LDLIBS += -Wl,--gc-sections
|
OP_SYS_LDLIBS += -Wl,--gc-sections
|
||||||
#ARCH_DEP_LDFLAGS = -mcpu=8540 -meabi -msdata=sysv -mstrict-align -mspe -mabi=spe -mfloat-gprs=double
|
#ARCH_DEP_LDFLAGS = -mcpu=8540 -meabi -msdata=sysv -mstrict-align -mspe -mabi=spe -mfloat-gprs=double
|
||||||
ARCH_DEP_LDFLAGS = -L$(RTEMS_BASE)/powerpc-rtems5/qoriq_e500/lib
|
ARCH_DEP_LDFLAGS = -L$(RTEMS_BASE)/$(GNU_TARGET)$(RTEMS_VERSION)/$(RTEMS_BSP)/lib
|
||||||
|
|
||||||
MUNCH_SUFFIX = .img
|
MUNCH_SUFFIX = .img
|
||||||
MUNCHNAME = $(PRODNAME:%$(EXE)=%$(MUNCH_SUFFIX))
|
MUNCHNAME = $(PRODNAME:%$(EXE)=%$(MUNCH_SUFFIX))
|
||||||
|
|||||||
@@ -7,6 +7,10 @@
|
|||||||
|
|
||||||
# Include definitions common to all Unix targets
|
# Include definitions common to all Unix targets
|
||||||
include $(CONFIG)/os/CONFIG.Common.UnixCommon
|
include $(CONFIG)/os/CONFIG.Common.UnixCommon
|
||||||
|
GNU = NO
|
||||||
|
CMPLR_CLASS = clang
|
||||||
|
CC = clang
|
||||||
|
CCC = clang++
|
||||||
|
|
||||||
OS_CLASS = freebsd
|
OS_CLASS = freebsd
|
||||||
|
|
||||||
|
|||||||
@@ -42,12 +42,6 @@ ARCH_DEP_LDFLAGS += $(ARCH_DEP_FLAGS)
|
|||||||
OP_SYS_CFLAGS += -isysroot $(SDK_DIR)
|
OP_SYS_CFLAGS += -isysroot $(SDK_DIR)
|
||||||
OP_SYS_LDFLAGS += -isysroot $(SDK_DIR)
|
OP_SYS_LDFLAGS += -isysroot $(SDK_DIR)
|
||||||
|
|
||||||
#--------------------------------------------------
|
|
||||||
# Always compile in debugging symbol table information
|
|
||||||
#
|
|
||||||
OPT_CFLAGS_YES += -g
|
|
||||||
OPT_CXXFLAGS_YES += -g
|
|
||||||
|
|
||||||
#-------------------------------------------------------
|
#-------------------------------------------------------
|
||||||
# Compiler definitions:
|
# Compiler definitions:
|
||||||
|
|
||||||
|
|||||||
21
configure/os/CONFIG.Common.vxWorks-e500v2
Normal file
21
configure/os/CONFIG.Common.vxWorks-e500v2
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
# CONFIG.Common.vxWorks-e500v2
|
||||||
|
#
|
||||||
|
# Definitions for vxWorks-e500v2 target archs (MVME2500)
|
||||||
|
# Sites may override these definitions in CONFIG_SITE.Common.vxWorks-e500v2
|
||||||
|
#-------------------------------------------------------
|
||||||
|
|
||||||
|
# Include definitions common to all vxWorks target archs
|
||||||
|
include $(CONFIG)/os/CONFIG.Common.vxWorksCommon
|
||||||
|
|
||||||
|
# Vx GNU cross compiler suffix
|
||||||
|
CMPLR_SUFFIX = ppc
|
||||||
|
|
||||||
|
ARCH_CLASS = ppc
|
||||||
|
|
||||||
|
# Architecture specific build flags
|
||||||
|
ARCH_DEP_CFLAGS += -te500v2 -mhard-float
|
||||||
|
ARCH_DEP_CPPFLAGS += -DCPU=PPC85XX
|
||||||
|
ARCH_DEP_CFLAGS += -DCPU_VARIANT=_ppc85XX_e500v2
|
||||||
|
ARCH_DEP_CFLAGS += -mlongcall
|
||||||
|
|
||||||
|
GNU_TARGET = powerpc-wrs-vxworks
|
||||||
@@ -12,7 +12,7 @@ ARCH_CLASS = x86
|
|||||||
POSIX = NO
|
POSIX = NO
|
||||||
|
|
||||||
# Definitions used when COMMANDLINE_LIBRARY is READLINE
|
# Definitions used when COMMANDLINE_LIBRARY is READLINE
|
||||||
LDLIBS_READLINE = -lreadline -lcurses
|
LDLIBS_READLINE = -lreadline -ltermcap
|
||||||
|
|
||||||
ARCH_DEP_CFLAGS += -m32
|
ARCH_DEP_CFLAGS += -m32
|
||||||
ARCH_DEP_LDFLAGS += -m32
|
ARCH_DEP_LDFLAGS += -m32
|
||||||
|
|||||||
11
configure/os/CONFIG.darwin-aarch64-debug.Common
Normal file
11
configure/os/CONFIG.darwin-aarch64-debug.Common
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# CONFIG.darwin-aarch64-debug.Common
|
||||||
|
#
|
||||||
|
# Definitions for darwin-aarch64-debug host builds - darwin-aarch64 target build with debug compiler flags
|
||||||
|
# Sites may override these definitions in CONFIG_SITE.darwin-aarch64-debug.Common
|
||||||
|
#-------------------------------------------------------
|
||||||
|
|
||||||
|
include $(CONFIG)/os/CONFIG.darwin-aarch64.Common
|
||||||
|
|
||||||
|
# Removes -O optimization and adds -g compile option
|
||||||
|
HOST_OPT=NO
|
||||||
|
|
||||||
14
configure/os/CONFIG.darwin-aarch64.darwin-aarch64-debug
Normal file
14
configure/os/CONFIG.darwin-aarch64.darwin-aarch64-debug
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
# CONFIG.darwin-aarch64.darwin-aarch64-debug
|
||||||
|
#
|
||||||
|
# Definitions for darwin-aarch64 host - darwin-aarch64-debug target build with debug compiler flags
|
||||||
|
# Sites may override these definitions in CONFIG_SITE.darwin-aarch64.darwin-aarch64-debug
|
||||||
|
#-------------------------------------------------------
|
||||||
|
|
||||||
|
-include $(CONFIG)/os/CONFIG.Common.darwin-aarch64
|
||||||
|
-include $(CONFIG)/os/CONFIG.darwin-aarch64.darwin-aarch64
|
||||||
|
-include $(CONFIG)/os/CONFIG_SITE.Common.darwin-aarch64
|
||||||
|
-include $(CONFIG)/os/CONFIG_SITE.darwin-aarch64.darwin-aarch64
|
||||||
|
|
||||||
|
|
||||||
|
BUILD_CLASS=HOST
|
||||||
|
HOST_OPT = NO
|
||||||
11
configure/os/CONFIG.darwin-x86-debug.Common
Normal file
11
configure/os/CONFIG.darwin-x86-debug.Common
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
# CONFIG.darwin-x86-debug.Common
|
||||||
|
#
|
||||||
|
# Definitions for darwin-x86-debug host builds - darwin-x86 target build with debug compiler flags
|
||||||
|
# Sites may override these definitions in CONFIG_SITE.darwin-x86-debug.Common
|
||||||
|
#-------------------------------------------------------
|
||||||
|
|
||||||
|
include $(CONFIG)/os/CONFIG.darwin-x86.Common
|
||||||
|
|
||||||
|
# Removes -O optimization and adds -g compile option
|
||||||
|
HOST_OPT=NO
|
||||||
|
|
||||||
@@ -39,12 +39,6 @@ OP_SYS_CFLAGS += -fno-common
|
|||||||
#
|
#
|
||||||
OP_SYS_CPPFLAGS += -Ddarwin
|
OP_SYS_CPPFLAGS += -Ddarwin
|
||||||
|
|
||||||
#
|
|
||||||
# Always compile in debugging symbol table information
|
|
||||||
#
|
|
||||||
OPT_CFLAGS_YES += -g
|
|
||||||
OPT_CXXFLAGS_YES += -g
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Libraries for command-line editing.
|
# Libraries for command-line editing.
|
||||||
#
|
#
|
||||||
@@ -66,7 +60,7 @@ GNU = NO
|
|||||||
#
|
#
|
||||||
# Darwin shared libraries
|
# Darwin shared libraries
|
||||||
#
|
#
|
||||||
SHRLIB_LDFLAGS = -dynamiclib -flat_namespace -undefined dynamic_lookup \
|
SHRLIB_LDFLAGS = -dynamiclib -flat_namespace \
|
||||||
-install_name $(abspath $(INSTALL_LIB))/$@ \
|
-install_name $(abspath $(INSTALL_LIB))/$@ \
|
||||||
$(addprefix -compatibility_version , $(SHRLIB_VERSION)) \
|
$(addprefix -compatibility_version , $(SHRLIB_VERSION)) \
|
||||||
$(addprefix -current_version , $(SHRLIB_VERSION))
|
$(addprefix -current_version , $(SHRLIB_VERSION))
|
||||||
|
|||||||
@@ -5,3 +5,4 @@
|
|||||||
|
|
||||||
#Include definitions common to unix hosts
|
#Include definitions common to unix hosts
|
||||||
include $(CONFIG)/os/CONFIG.UnixCommon.Common
|
include $(CONFIG)/os/CONFIG.UnixCommon.Common
|
||||||
|
CMPLR_CLASS = clang
|
||||||
|
|||||||
@@ -2,6 +2,7 @@
|
|||||||
# Definitions for freebsd-x86 host - freebsd-x86 target builds
|
# Definitions for freebsd-x86 host - freebsd-x86 target builds
|
||||||
# Sites may override these definitions in CONFIG_SITE.freebsd-x86.freebsd-x86
|
# Sites may override these definitions in CONFIG_SITE.freebsd-x86.freebsd-x86
|
||||||
#-------------------------------------------------------
|
#-------------------------------------------------------
|
||||||
|
GNU_DIR=/usr/local
|
||||||
|
|
||||||
# Include common gnu compiler definitions
|
# Include common gnu compiler definitions
|
||||||
include $(CONFIG)/CONFIG.gnuCommon
|
include $(CONFIG)/CONFIG.gnuCommon
|
||||||
|
|||||||
@@ -2,12 +2,23 @@
|
|||||||
# Definitions for freebsd-x86_64 host - freebsd-x86_64 target builds
|
# Definitions for freebsd-x86_64 host - freebsd-x86_64 target builds
|
||||||
# Sites may override these definitions in CONFIG_SITE.freebsd-x86_64.freebsd-x86_64
|
# Sites may override these definitions in CONFIG_SITE.freebsd-x86_64.freebsd-x86_64
|
||||||
#-------------------------------------------------------
|
#-------------------------------------------------------
|
||||||
|
GNU_DIR=/usr
|
||||||
|
|
||||||
# Include common gnu compiler definitions
|
# Include common gnu compiler definitions
|
||||||
include $(CONFIG)/CONFIG.gnuCommon
|
include $(CONFIG)/CONFIG.gnuCommon
|
||||||
|
|
||||||
|
GNU_BIN = $(GNU_DIR)/bin
|
||||||
|
GNU_LIB = $(GNU_DIR)/lib
|
||||||
|
|
||||||
|
CMPLR_CLASS = clang
|
||||||
|
|
||||||
|
CC = $(GNU_BIN)/$(CMPLR_PREFIX)cc$(CMPLR_SUFFIX)
|
||||||
|
CCC = $(GNU_BIN)/$(CMPLR_PREFIX)c++$(CMPLR_SUFFIX)
|
||||||
|
CPP = $(CC) -x c -E
|
||||||
|
|
||||||
|
GNU_LDLIBS_YES =
|
||||||
|
|
||||||
STATIC_LDFLAGS_YES= -Wl,-Bstatic
|
STATIC_LDFLAGS_YES= -Wl,-Bstatic
|
||||||
STATIC_LDFLAGS_NO=
|
STATIC_LDFLAGS_NO=
|
||||||
STATIC_LDLIBS_YES= -Wl,-Bdynamic
|
STATIC_LDLIBS_YES= -Wl,-Bdynamic
|
||||||
STATIC_LDLIBS_NO=
|
STATIC_LDLIBS_NO=
|
||||||
|
|
||||||
|
|||||||
@@ -6,3 +6,8 @@
|
|||||||
|
|
||||||
# Include common gnu compiler definitions
|
# Include common gnu compiler definitions
|
||||||
include $(CONFIG)/CONFIG.gnuCommon
|
include $(CONFIG)/CONFIG.gnuCommon
|
||||||
|
|
||||||
|
STATIC_LDFLAGS_YES= -Wl,-Bstatic
|
||||||
|
STATIC_LDFLAGS_NO=
|
||||||
|
STATIC_LDLIBS_YES= -Wl,-Bdynamic
|
||||||
|
STATIC_LDLIBS_NO=
|
||||||
|
|||||||
@@ -21,4 +21,4 @@ LOADABLE_SHRLIB_LDFLAGS = -shared \
|
|||||||
GNU_LDLIBS_YES =
|
GNU_LDLIBS_YES =
|
||||||
|
|
||||||
# Link with system libraries
|
# Link with system libraries
|
||||||
OP_SYS_LDLIBS = -lpsapi -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm -ldbghelp
|
OP_SYS_LDLIBS += -lpsapi -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm -ldbghelp
|
||||||
|
|||||||
@@ -32,4 +32,4 @@ LOADABLE_SHRLIB_LDFLAGS = -shared \
|
|||||||
GNU_LDLIBS_YES =
|
GNU_LDLIBS_YES =
|
||||||
|
|
||||||
# Link with system libraries
|
# Link with system libraries
|
||||||
OP_SYS_LDLIBS = -lpsapi -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm -ldbghelp
|
OP_SYS_LDLIBS += -lpsapi -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm -ldbghelp
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ OPT_WHOLE_PROGRAM = YES
|
|||||||
|
|
||||||
WINLINK = link
|
WINLINK = link
|
||||||
|
|
||||||
RCCMD = rc -l 0x409 $(INCLUDES) -fo $@ $<
|
RCCMD = rc -nologo -l 0x409 $(INCLUDES) -fo $@ $<
|
||||||
|
|
||||||
ARCMD = lib -nologo -verbose -out:$@ $(LIB_OPT_LDFLAGS) $(LIBRARY_LD_OBJS)
|
ARCMD = lib -nologo -verbose -out:$@ $(LIB_OPT_LDFLAGS) $(LIBRARY_LD_OBJS)
|
||||||
|
|
||||||
|
|||||||
@@ -34,5 +34,6 @@
|
|||||||
# WARNING: Variables that are set in $(CONFIG)/CONFIG.gnuCommon cannot be
|
# WARNING: Variables that are set in $(CONFIG)/CONFIG.gnuCommon cannot be
|
||||||
# overridden in this file for native builds, e.g. variables such as
|
# overridden in this file for native builds, e.g. variables such as
|
||||||
# OPT_CFLAGS_YES, WARN_CFLAGS, SHRLIB_LDFLAGS
|
# OPT_CFLAGS_YES, WARN_CFLAGS, SHRLIB_LDFLAGS
|
||||||
# They must be set in CONFIG_SITE.linux-aarch64.linux-aarch64 instead.
|
# They must be set in CONFIG_SITE.linux-aarch64.linux-aarch64 or for
|
||||||
|
# cross-builds in CONFIG_SITE.<host-arch>.linux-aarch64 instead.
|
||||||
|
|
||||||
|
|||||||
@@ -15,11 +15,6 @@
|
|||||||
# to inform the system of the shared library location.
|
# to inform the system of the shared library location.
|
||||||
|
|
||||||
|
|
||||||
# Use GNU Readline if the header file is installed
|
|
||||||
COMMANDLINE_LIBRARY = $(strip $(if $(wildcard \
|
|
||||||
$(firstword $(READLINE_DIR) $(GNU_DIR))/include/readline/readline.h), \
|
|
||||||
READLINE, EPICS))
|
|
||||||
|
|
||||||
# If libreadline needs additional libraries to be linked with it, try
|
# If libreadline needs additional libraries to be linked with it, try
|
||||||
# uncommenting each of the lines below in turn, starting with the top
|
# uncommenting each of the lines below in turn, starting with the top
|
||||||
# one and working downwards, until the build succeeds. Do a 'make rebuild'
|
# one and working downwards, until the build succeeds. Do a 'make rebuild'
|
||||||
|
|||||||
@@ -12,10 +12,6 @@
|
|||||||
GNU_DIR = /usr/local/vw/microblaze-2.0/microblazeel-unknown-linux-gnu
|
GNU_DIR = /usr/local/vw/microblaze-2.0/microblazeel-unknown-linux-gnu
|
||||||
|
|
||||||
|
|
||||||
# Use GNU Readline if the header file is installed
|
|
||||||
COMMANDLINE_LIBRARY = $(strip $(if $(wildcard \
|
|
||||||
$(GNU_DIR)/include/readline/readline.h), READLINE, EPICS))
|
|
||||||
|
|
||||||
# If libreadline needs additional libraries to be linked with it, try
|
# If libreadline needs additional libraries to be linked with it, try
|
||||||
# uncommenting each of the lines below in turn, starting with the top
|
# uncommenting each of the lines below in turn, starting with the top
|
||||||
# one and working downwards, until the build succeeds. Do a 'make rebuild'
|
# one and working downwards, until the build succeeds. Do a 'make rebuild'
|
||||||
|
|||||||
@@ -15,10 +15,6 @@
|
|||||||
# to inform the system of the shared library location.
|
# to inform the system of the shared library location.
|
||||||
|
|
||||||
|
|
||||||
# Use GNU Readline if the header file is installed
|
|
||||||
COMMANDLINE_LIBRARY = $(strip $(if $(wildcard \
|
|
||||||
$(GNU_DIR)/include/readline/readline.h), READLINE, EPICS))
|
|
||||||
|
|
||||||
# If libreadline needs additional libraries to be linked with it, try
|
# If libreadline needs additional libraries to be linked with it, try
|
||||||
# uncommenting each of the lines below in turn, starting with the top
|
# uncommenting each of the lines below in turn, starting with the top
|
||||||
# one and working downwards, until the build succeeds. Do a 'make rebuild'
|
# one and working downwards, until the build succeeds. Do a 'make rebuild'
|
||||||
|
|||||||
@@ -15,10 +15,6 @@
|
|||||||
# to inform the system of the shared library location.
|
# to inform the system of the shared library location.
|
||||||
|
|
||||||
|
|
||||||
# Use GNU Readline if the header file is installed
|
|
||||||
COMMANDLINE_LIBRARY = $(strip $(if $(wildcard \
|
|
||||||
$(GNU_DIR)/include/readline/readline.h), READLINE, EPICS))
|
|
||||||
|
|
||||||
# If libreadline needs additional libraries to be linked with it, try
|
# If libreadline needs additional libraries to be linked with it, try
|
||||||
# uncommenting each of the lines below in turn, starting with the top
|
# uncommenting each of the lines below in turn, starting with the top
|
||||||
# one and working downwards, until the build succeeds. Do a 'make rebuild'
|
# one and working downwards, until the build succeeds. Do a 'make rebuild'
|
||||||
|
|||||||
@@ -3,11 +3,6 @@
|
|||||||
# Site-specific settings for the linux-xscale_be target
|
# Site-specific settings for the linux-xscale_be target
|
||||||
|
|
||||||
|
|
||||||
# Use GNU Readline if the header file is installed
|
|
||||||
COMMANDLINE_LIBRARY = $(strip $(if $(wildcard \
|
|
||||||
$(firstword $(READLINE_DIR) $(GNU_DIR))/include/readline/readline.h), \
|
|
||||||
READLINE, EPICS))
|
|
||||||
|
|
||||||
# If libreadline needs additional libraries to be linked with it, try
|
# If libreadline needs additional libraries to be linked with it, try
|
||||||
# uncommenting each of the lines below in turn, starting with the top
|
# uncommenting each of the lines below in turn, starting with the top
|
||||||
# one and working downwards, until the build succeeds. Do a 'make rebuild'
|
# one and working downwards, until the build succeeds. Do a 'make rebuild'
|
||||||
|
|||||||
@@ -6,11 +6,3 @@
|
|||||||
# GNU_DIR used when COMMANDLINE_LIBRARY is READLINE
|
# GNU_DIR used when COMMANDLINE_LIBRARY is READLINE
|
||||||
#GNU_DIR=C:/cygwin
|
#GNU_DIR=C:/cygwin
|
||||||
|
|
||||||
|
|
||||||
# It makes sense to include debugging symbols even in optimized builds
|
|
||||||
# in case you want to attach gdb to the process or examine a core-dump.
|
|
||||||
# This does cost disk space, but not memory as debug symbols are not
|
|
||||||
# loaded into RAM when the binary is loaded.
|
|
||||||
OPT_CFLAGS_YES += -g
|
|
||||||
OPT_CXXFLAGS_YES += -g
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,21 +3,27 @@
|
|||||||
# Site specific definitions for darwin builds
|
# Site specific definitions for darwin builds
|
||||||
#-------------------------------------------------------
|
#-------------------------------------------------------
|
||||||
|
|
||||||
# Note the dir/firstword/wildcard functions below are used
|
# These settings are designed for users of Homebrew.
|
||||||
# to avoid warnings about missing directories.
|
# Users of other third-party package managers are welcome to
|
||||||
|
# provide patches appropriate for their manager.
|
||||||
|
ifneq (,$(wildcard /opt/homebrew))
|
||||||
|
# Default location on aarch64
|
||||||
|
HOMEBREW_DIR = /opt/homebrew
|
||||||
|
else ifneq (,$(wildcard /usr/local/Homebrew))
|
||||||
|
# Default location on x86_64
|
||||||
|
HOMEBREW_DIR = /usr/local
|
||||||
|
else ifneq (,$(wildcard /opt/local/include/readline))
|
||||||
|
# MacPorts
|
||||||
|
READLINE_DIR = /opt/local
|
||||||
|
endif
|
||||||
|
|
||||||
# Mix-and-match of different package systems is probably not advisable,
|
# Look for Homebrew's readline
|
||||||
# but you can try that if you like...
|
ifneq (,$(wildcard $(HOMEBREW_DIR)/opt/readline))
|
||||||
|
READLINE_DIR = $(HOMEBREW_DIR)/opt/readline
|
||||||
# Uncomment these definitions when using Homebrew packages:
|
endif
|
||||||
#OP_SYS_INCLUDES += -I/usr/local/include
|
|
||||||
#OP_SYS_LDFLAGS += $(addprefix -L,$(dir $(firstword $(wildcard /usr/local/lib/*))))
|
|
||||||
|
|
||||||
# Uncomment these definitions when using DarwinPorts packages:
|
|
||||||
#OP_SYS_INCLUDES += -I/opt/local/include
|
|
||||||
#OP_SYS_LDFLAGS += $(addprefix -L,$(dir $(firstword $(wildcard /opt/local/lib/*))))
|
|
||||||
|
|
||||||
# Uncomment these definitions when using Fink packages:
|
|
||||||
#OP_SYS_INCLUDES += -I/sw/include
|
|
||||||
#OP_SYS_LDFLAGS += $(addprefix -L,$(dir $(firstword $(wildcard /sw/lib/*))))
|
|
||||||
|
|
||||||
|
# Use GNU readline if it's avaiilable
|
||||||
|
ifneq (,$(wildcard $(READLINE_DIR)/include/readline/readline.h))
|
||||||
|
INCLUDES_READLINE = -I$(READLINE_DIR)/include
|
||||||
|
LDFLAGS_READLINE = -L$(READLINE_DIR)/lib
|
||||||
|
endif
|
||||||
|
|||||||
@@ -3,10 +3,3 @@
|
|||||||
# Site specific definitions for native linux-aarch64 builds
|
# Site specific definitions for native linux-aarch64 builds
|
||||||
#-------------------------------------------------------
|
#-------------------------------------------------------
|
||||||
|
|
||||||
# It makes sense to include debugging symbols even in optimized builds
|
|
||||||
# in case you want to attach gdb to the process or examine a core-dump.
|
|
||||||
# This does cost disk space, but not memory as debug symbols are not
|
|
||||||
# loaded into RAM when the binary is loaded.
|
|
||||||
OPT_CFLAGS_YES += -g
|
|
||||||
OPT_CXXFLAGS_YES += -g
|
|
||||||
|
|
||||||
|
|||||||
@@ -3,13 +3,6 @@
|
|||||||
# Site specific definitions for linux-x86 host - linux-x86 target builds
|
# Site specific definitions for linux-x86 host - linux-x86 target builds
|
||||||
#-------------------------------------------------------
|
#-------------------------------------------------------
|
||||||
|
|
||||||
# It makes sense to include debugging symbols even in optimized builds
|
|
||||||
# in case you want to attach gdb to the process or examine a core-dump.
|
|
||||||
# This does cost disk space, but not memory as debug symbols are not
|
|
||||||
# loaded into RAM when the binary is loaded.
|
|
||||||
OPT_CFLAGS_YES += -g
|
|
||||||
OPT_CXXFLAGS_YES += -g
|
|
||||||
|
|
||||||
# Uncomment the followings lines to build with CLANG instead of GCC.
|
# Uncomment the followings lines to build with CLANG instead of GCC.
|
||||||
#
|
#
|
||||||
#GNU = NO
|
#GNU = NO
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# CONFIG_SITE.linux-x86.linux-aarch64
|
# CONFIG_SITE.linux-x86_64.linux-aarch64
|
||||||
#
|
#
|
||||||
# Site specific definitions for linux-x86 host - linux-aarch64 target builds
|
# Site specific definitions for linux-x86_64 host - linux-aarch64 target builds
|
||||||
#-------------------------------------------------------
|
#-------------------------------------------------------
|
||||||
|
|
||||||
# Set GNU crosscompiler target name
|
# Set GNU crosscompiler target name
|
||||||
|
|||||||
@@ -3,13 +3,6 @@
|
|||||||
# Site specific definitions for linux-x86_64 host - linux-x86_64 target builds
|
# Site specific definitions for linux-x86_64 host - linux-x86_64 target builds
|
||||||
#-------------------------------------------------------
|
#-------------------------------------------------------
|
||||||
|
|
||||||
# It makes sense to include debugging symbols even in optimized builds
|
|
||||||
# in case you want to attach gdb to the process or examine a core-dump.
|
|
||||||
# This does cost disk space, but not memory as debug symbols are not
|
|
||||||
# loaded into RAM when the binary is loaded.
|
|
||||||
OPT_CFLAGS_YES += -g
|
|
||||||
OPT_CXXFLAGS_YES += -g
|
|
||||||
|
|
||||||
# Uncomment the followings lines to build with CLANG instead of GCC.
|
# Uncomment the followings lines to build with CLANG instead of GCC.
|
||||||
#
|
#
|
||||||
#GNU = NO
|
#GNU = NO
|
||||||
|
|||||||
@@ -30,8 +30,37 @@ MSVC_VER = _MSC_VER
|
|||||||
#ifdef __rtems__
|
#ifdef __rtems__
|
||||||
#include <rtems/score/cpuopts.h>
|
#include <rtems/score/cpuopts.h>
|
||||||
# if __RTEMS_MAJOR__>=5
|
# if __RTEMS_MAJOR__>=5
|
||||||
OS_API = posix
|
OS_API = posix
|
||||||
# else
|
# else
|
||||||
OS_API = score
|
OS_API = score
|
||||||
|
# endif
|
||||||
|
# if defined(RTEMS_NETWORKING)
|
||||||
|
/* legacy stack circa RTEMS <= 5 and networking internal to RTEMS */
|
||||||
|
RTEMS_LEGACY_NETWORKING_INTERNAL = yes
|
||||||
|
# else
|
||||||
|
# if !defined(__has_include)
|
||||||
|
/* assume old GCC implies RTEMS < 5 with mis-configured BSP */
|
||||||
|
# error rebuild BSP with --enable-network
|
||||||
|
# elif __has_include(<machine/rtems-net-legacy.h>)
|
||||||
|
/* legacy stack circa RTEMS > 5 */
|
||||||
|
RTEMS_LEGACY_NETWORKING = yes
|
||||||
|
# elif __has_include(<machine/rtems-bsd-version.h>)
|
||||||
|
/* libbsd stack */
|
||||||
|
RTEMS_BSD_NETWORKING = yes
|
||||||
|
# else
|
||||||
|
# error Cannot determine RTEMS network configuration
|
||||||
|
# endif
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef __has_include
|
||||||
|
# if defined(__rtems__) && __RTEMS_MAJOR__<5 && __has_include(<libtecla.h>)
|
||||||
|
COMMANDLINE_LIBRARY ?= LIBTECLA
|
||||||
|
# elif __has_include(<readline/readline.h>)
|
||||||
|
COMMANDLINE_LIBRARY ?= READLINE
|
||||||
|
# else
|
||||||
|
COMMANDLINE_LIBRARY ?= EPICS
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
COMMANDLINE_LIBRARY ?= $(strip $(if $(wildcard $(if $(GNU_DIR),$(GNU_DIR)/include/readline/readline.h)), READLINE, EPICS))
|
||||||
|
#endif
|
||||||
|
|||||||
3
documentation/.gitignore
vendored
3
documentation/.gitignore
vendored
@@ -1,3 +0,0 @@
|
|||||||
*.db
|
|
||||||
epics-base.tag
|
|
||||||
html/
|
|
||||||
@@ -759,11 +759,10 @@ WARN_LOGFILE =
|
|||||||
# spaces.
|
# spaces.
|
||||||
# Note: If this tag is empty the current directory is searched.
|
# Note: If this tag is empty the current directory is searched.
|
||||||
|
|
||||||
INPUT = ../mainpage.dox \
|
INPUT = ../RELEASE_NOTES.md \
|
||||||
../RELEASE_NOTES.md \
|
|
||||||
../README.md \
|
../README.md \
|
||||||
../RecordReference.md \
|
@TOP@/include \
|
||||||
@TOP@/include
|
@TOP@/doc
|
||||||
|
|
||||||
# This tag can be used to specify the character encoding of the source files
|
# This tag can be used to specify the character encoding of the source files
|
||||||
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
|
# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses
|
||||||
@@ -1834,7 +1833,7 @@ MAN_LINKS = NO
|
|||||||
# captures the structure of the code including all documentation.
|
# captures the structure of the code including all documentation.
|
||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
|
|
||||||
GENERATE_XML = NO
|
GENERATE_XML = YES
|
||||||
|
|
||||||
# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
|
# The XML_OUTPUT tag is used to specify where the XML pages will be put. If a
|
||||||
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
|
# relative path is entered the value of OUTPUT_DIRECTORY will be put in front of
|
||||||
@@ -1842,7 +1841,7 @@ GENERATE_XML = NO
|
|||||||
# The default directory is: xml.
|
# The default directory is: xml.
|
||||||
# This tag requires that the tag GENERATE_XML is set to YES.
|
# This tag requires that the tag GENERATE_XML is set to YES.
|
||||||
|
|
||||||
XML_OUTPUT = xml
|
XML_OUTPUT = @RTD_SRC@/xml
|
||||||
|
|
||||||
# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
|
# If the XML_PROGRAMLISTING tag is set to YES doxygen will dump the program
|
||||||
# listings (including syntax highlighting and cross-referencing information) to
|
# listings (including syntax highlighting and cross-referencing information) to
|
||||||
@@ -1947,7 +1946,7 @@ ENABLE_PREPROCESSING = YES
|
|||||||
# The default value is: NO.
|
# The default value is: NO.
|
||||||
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
|
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
|
||||||
|
|
||||||
MACRO_EXPANSION = NO
|
MACRO_EXPANSION = YES
|
||||||
|
|
||||||
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
|
# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES then
|
||||||
# the macro expansion is limited to the macros specified with the PREDEFINED and
|
# the macro expansion is limited to the macros specified with the PREDEFINED and
|
||||||
@@ -1987,7 +1986,17 @@ INCLUDE_FILE_PATTERNS =
|
|||||||
# recursively expanded use the := operator instead of the = operator.
|
# recursively expanded use the := operator instead of the = operator.
|
||||||
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
|
# This tag requires that the tag ENABLE_PREPROCESSING is set to YES.
|
||||||
|
|
||||||
PREDEFINED = __cplusplus
|
PREDEFINED = __cplusplus \
|
||||||
|
LIBCOM_API \
|
||||||
|
DBCORE_API \
|
||||||
|
LIBCA_API \
|
||||||
|
DBRECSTD_API \
|
||||||
|
EPICS_ALWAYS_INLINE \
|
||||||
|
epicsShareExtern \
|
||||||
|
epicsShareClass \
|
||||||
|
epicsShareFunc \
|
||||||
|
epicsShareAPI \
|
||||||
|
epicsStdCall
|
||||||
|
|
||||||
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
|
# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then this
|
||||||
# tag can be used to specify a list of macro names that should be expanded. The
|
# tag can be used to specify a list of macro names that should be expanded. The
|
||||||
|
|||||||
4
documentation/HEADER_h.md
Normal file
4
documentation/HEADER_h.md
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
# @HEADER@.h
|
||||||
|
|
||||||
|
```{doxygenfile} @HEADER@.h
|
||||||
|
```
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
|
|
||||||
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
||||||
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
||||||
<head>
|
|
||||||
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
|
|
||||||
<title>Known Problems in EPICS 7.0.3.1</title>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<h1 style="text-align: center">EPICS 7.0.3.1: Known Problems</h1>
|
|
||||||
|
|
||||||
<p>Any patch files linked below should be applied at the root of the
|
|
||||||
base-7.0.3.1 tree. Download them, then use the GNU Patch program as
|
|
||||||
follows:</p>
|
|
||||||
|
|
||||||
<blockquote><pre>% <b>cd <i>/path/to/</i>base-7.0.3.1</b>
|
|
||||||
% <b>patch -p1 < <i>/path/to/</i>file.patch</b></pre></blockquote>
|
|
||||||
|
|
||||||
<p>The following problems were known by the developers at the time of this
|
|
||||||
release:</p>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
|
|
||||||
<!-- Items added after release should be formatted thusly:
|
|
||||||
<li>YYYY-MM-DD: Description of problem.
|
|
||||||
<a href="fix.patch">This patch</a> fixes the problem.
|
|
||||||
...</li>
|
|
||||||
-->
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
@@ -1,35 +1,174 @@
|
|||||||
TOP = ..
|
TOP = ..
|
||||||
include $(TOP)/configure/CONFIG
|
include $(TOP)/configure/CONFIG
|
||||||
|
|
||||||
ifeq ($(T_A),$(EPICS_HOST_ARCH))
|
|
||||||
|
|
||||||
DOXYGEN=doxygen
|
|
||||||
|
|
||||||
EXPAND = Doxyfile@
|
EXPAND = Doxyfile@
|
||||||
|
|
||||||
EXPAND_ME += EPICS_VERSION
|
EXPAND_ME += EPICS_VERSION
|
||||||
EXPAND_ME += EPICS_REVISION
|
EXPAND_ME += EPICS_REVISION
|
||||||
EXPAND_ME += EPICS_MODIFICATION
|
EXPAND_ME += EPICS_MODIFICATION
|
||||||
EXPAND_ME += EPICS_PATCH_LEVEL
|
EXPAND_ME += EPICS_PATCH_LEVEL
|
||||||
EXPAND_ME += OS_CLASS CMPLR_CLASS
|
EXPAND_ME += OS_CLASS CMPLR_CLASS
|
||||||
|
EXPAND_ME += RTD_SRC
|
||||||
|
|
||||||
ME = documentation/O.$(T_A)/html
|
DOXYGEN ?= doxygen
|
||||||
GH_FILES = $(ME)/ $(ME)/.nojekyll $(ME)/*.* $(ME)/*/*.*
|
|
||||||
|
|
||||||
install: doxygen
|
libcom_HEADERS += adjustment
|
||||||
|
libcom_HEADERS += alarm
|
||||||
|
libcom_HEADERS += alarmString
|
||||||
|
libcom_HEADERS += asTrapWrite
|
||||||
|
libcom_HEADERS += bucketLib
|
||||||
|
libcom_HEADERS += cantProceed
|
||||||
|
libcom_HEADERS += compilerDependencies
|
||||||
|
libcom_HEADERS += cvtFast
|
||||||
|
libcom_HEADERS += dbmf
|
||||||
|
libcom_HEADERS += devLibVME
|
||||||
|
libcom_HEADERS += devLibVMEImpl
|
||||||
|
libcom_HEADERS += ellLib
|
||||||
|
libcom_HEADERS += envDefs
|
||||||
|
libcom_HEADERS += epicsAlgorithm
|
||||||
|
libcom_HEADERS += epicsAssert
|
||||||
|
libcom_HEADERS += epicsAtomic
|
||||||
|
libcom_HEADERS += epicsEvent
|
||||||
|
libcom_HEADERS += epicsExit
|
||||||
|
libcom_HEADERS += epicsExport
|
||||||
|
libcom_HEADERS += epicsGeneralTime
|
||||||
|
libcom_HEADERS += epicsGuard
|
||||||
|
libcom_HEADERS += epicsMessageQueue
|
||||||
|
libcom_HEADERS += epicsMutex
|
||||||
|
libcom_HEADERS += epicsReadline
|
||||||
|
libcom_HEADERS += epicsRingBytes
|
||||||
|
libcom_HEADERS += epicsRingPointer
|
||||||
|
libcom_HEADERS += epicsSignal
|
||||||
|
libcom_HEADERS += epicsSpin
|
||||||
|
libcom_HEADERS += epicsStackTrace
|
||||||
|
libcom_HEADERS += epicsStdio
|
||||||
|
libcom_HEADERS += epicsStdlib
|
||||||
|
libcom_HEADERS += epicsString
|
||||||
|
libcom_HEADERS += epicsTempFile
|
||||||
|
libcom_HEADERS += epicsThread
|
||||||
|
libcom_HEADERS += epicsTime
|
||||||
|
libcom_HEADERS += epicsTypes
|
||||||
|
libcom_HEADERS += epicsUnitTest
|
||||||
|
libcom_HEADERS += errlog
|
||||||
|
libcom_HEADERS += freeList
|
||||||
|
libcom_HEADERS += iocsh
|
||||||
|
libcom_HEADERS += ipAddrToAsciiAsynchronous
|
||||||
|
libcom_HEADERS += logClient
|
||||||
|
libcom_HEADERS += macLib
|
||||||
|
libcom_HEADERS += osiPoolStatus
|
||||||
|
libcom_HEADERS += osiProcess
|
||||||
|
libcom_HEADERS += osiSock
|
||||||
|
libcom_HEADERS += postfix
|
||||||
|
libcom_HEADERS += shareLib
|
||||||
|
libcom_HEADERS += testMain
|
||||||
|
libcom_HEADERS += yajl_alloc
|
||||||
|
libcom_HEADERS += yajl_common
|
||||||
|
libcom_HEADERS += yajl_gen
|
||||||
|
libcom_HEADERS += yajl_parse
|
||||||
|
|
||||||
doxygen: Doxyfile ../mainpage.dox
|
database_HEADERS += chfPlugin
|
||||||
$(DOXYGEN)
|
database_HEADERS += dbChannel
|
||||||
rsync -av $(TOP)/html/ html/
|
database_HEADERS += dbCommon
|
||||||
|
database_HEADERS += dbDefs
|
||||||
|
database_HEADERS += dbExtractArray
|
||||||
|
database_HEADERS += dbLink
|
||||||
|
database_HEADERS += dbServer
|
||||||
|
database_HEADERS += dbState
|
||||||
|
database_HEADERS += dbStaticLib
|
||||||
|
database_HEADERS += dbUnitTest
|
||||||
|
database_HEADERS += devLib
|
||||||
|
database_HEADERS += devSup
|
||||||
|
database_HEADERS += drvSup
|
||||||
|
database_HEADERS += initHooks
|
||||||
|
|
||||||
.PHONY: doxygen
|
record_HEADERS += aaiRecord
|
||||||
|
record_HEADERS += aaoRecord
|
||||||
|
record_HEADERS += aiRecord
|
||||||
|
record_HEADERS += aoRecord
|
||||||
|
record_HEADERS += aSubRecord
|
||||||
|
record_HEADERS += biRecord
|
||||||
|
record_HEADERS += boRecord
|
||||||
|
record_HEADERS += calcRecord
|
||||||
|
record_HEADERS += calcoutRecord
|
||||||
|
record_HEADERS += compressRecord
|
||||||
|
record_HEADERS += dfanoutRecord
|
||||||
|
record_HEADERS += eventRecord
|
||||||
|
record_HEADERS += fanoutRecord
|
||||||
|
record_HEADERS += histogramRecord
|
||||||
|
record_HEADERS += int64inRecord
|
||||||
|
record_HEADERS += int64outRecord
|
||||||
|
record_HEADERS += longinRecord
|
||||||
|
record_HEADERS += longoutRecord
|
||||||
|
record_HEADERS += lsiRecord
|
||||||
|
record_HEADERS += lsoRecord
|
||||||
|
record_HEADERS += mbbiRecord
|
||||||
|
record_HEADERS += mbbiDirectRecord
|
||||||
|
record_HEADERS += mbboRecord
|
||||||
|
record_HEADERS += mbboDirectRecord
|
||||||
|
record_HEADERS += permissiveRecord
|
||||||
|
record_HEADERS += printfRecord
|
||||||
|
record_HEADERS += selRecord
|
||||||
|
record_HEADERS += seqRecord
|
||||||
|
record_HEADERS += stateRecord
|
||||||
|
record_HEADERS += stringinRecord
|
||||||
|
record_HEADERS += stringoutRecord
|
||||||
|
record_HEADERS += subRecord
|
||||||
|
record_HEADERS += subArrayRecord
|
||||||
|
record_HEADERS += waveformRecord
|
||||||
|
|
||||||
commit: doxygen
|
menu_HEADERS += menuAlarmSevr
|
||||||
$(TOUCH) html/.nojekyll
|
menu_HEADERS += menuAlarmStat
|
||||||
(cd $(TOP) && $(CURDIR)/../commit-gh.sh $(GH_FILES))
|
menu_HEADERS += menuConvert
|
||||||
|
menu_HEADERS += menuFtype
|
||||||
|
menu_HEADERS += menuIvoa
|
||||||
|
menu_HEADERS += menuOmsl
|
||||||
|
menu_HEADERS += menuPini
|
||||||
|
menu_HEADERS += menuPost
|
||||||
|
menu_HEADERS += menuPriority
|
||||||
|
menu_HEADERS += menuScan
|
||||||
|
menu_HEADERS += menuSimm
|
||||||
|
menu_HEADERS += menuYesNo
|
||||||
|
|
||||||
.PHONY: commit
|
HEADER_TYPES = libcom database record menu
|
||||||
|
|
||||||
endif # EPICS_HOST_ARCH
|
HEADER_MD_FILES = $(foreach t, $(HEADER_TYPES), \
|
||||||
|
$(addsuffix _h.md, $($t_HEADERS)))
|
||||||
|
API_RST_FILES = $(addsuffix -api.rst, $(HEADER_TYPES))
|
||||||
|
|
||||||
|
RTD_SRC = $(COMMON_DIR)/rtd-src
|
||||||
|
|
||||||
|
DOCS += README.md
|
||||||
|
DOCS += RELEASE_NOTES.md
|
||||||
|
|
||||||
include $(TOP)/configure/RULES
|
include $(TOP)/configure/RULES
|
||||||
|
|
||||||
|
$(HEADER_MD_FILES): %_h.md: ../HEADER_h.md
|
||||||
|
$(EXPAND_TOOL) -t $(INSTALL_LOCATION) -DHEADER=$* $< $@
|
||||||
|
|
||||||
|
$(API_RST_FILES): %-api.rst: ../%-API.rst
|
||||||
|
@$(RM) $@
|
||||||
|
@$(ECHO) Creating $@
|
||||||
|
@$(CP) $< $@
|
||||||
|
@$(foreach h, $($*_HEADERS), \
|
||||||
|
echo " $h_h.rst" >> $@;)
|
||||||
|
|
||||||
|
ifndef T_A
|
||||||
|
doxygen rtd sphinx: inc
|
||||||
|
$(MAKE) -C O.$(EPICS_HOST_ARCH) $@
|
||||||
|
else
|
||||||
|
|
||||||
|
doxygen: Doxyfile
|
||||||
|
@$(MKDIR) $(RTD_SRC)
|
||||||
|
$(DOXYGEN)
|
||||||
|
|
||||||
|
rtd: doxygen $(API_RST_FILES) $(HEADER_MD_FILES)
|
||||||
|
rsync -av $(INSTALL_DOC)/ $(RTD_SRC)/
|
||||||
|
rsync -av $(HEADER_MD_FILES) $(RTD_SRC)/
|
||||||
|
rsync -av $(API_RST_FILES) $(RTD_SRC)/
|
||||||
|
rsync -av ../index.rst ../conf.py $(RTD_SRC)/
|
||||||
|
|
||||||
|
sphinx: rtd
|
||||||
|
cd $(COMMON_DIR); $(PYTHON) -m sphinx rtd-src readthedocs
|
||||||
|
rsync -av $(COMMON_DIR)/readthedocs $(INSTALL_HTML)/
|
||||||
|
endif
|
||||||
|
|
||||||
|
.PHONY: doxygen rtd sphinx
|
||||||
|
|||||||
@@ -1,27 +1,7 @@
|
|||||||
# Installation Instructions {#install}
|
# Installation instructions
|
||||||
|
|
||||||
## EPICS Base Release 7.0.x
|
## EPICS Base Release 7.0.x
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
### Table of Contents
|
|
||||||
|
|
||||||
- [What is EPICS base?](#what-is-epics-base?)
|
|
||||||
- [What is new in this release?](#what-is-new-in-this-release?)
|
|
||||||
- [Copyright](#copyright)
|
|
||||||
- [Supported platforms](#supported-platforms)
|
|
||||||
- [Supported compilers](#supported-compilers)
|
|
||||||
- [Software requirements](#software-requirements)
|
|
||||||
- [Host system storage requirements](#host-system-storage-requirements)
|
|
||||||
- [Documentation](#documentation)
|
|
||||||
- [Directory Structure](#directory-structure)
|
|
||||||
- [Site-specific build configuration](#site-specific-build-configuration)
|
|
||||||
- [Building EPICS base](#building-epics-base)
|
|
||||||
- [Example application and extension](#example-application-and-extension)
|
|
||||||
- [Multiple host platforms](#multiple-host-platforms)
|
|
||||||
|
|
||||||
-----
|
|
||||||
|
|
||||||
### What is EPICS base?
|
### What is EPICS base?
|
||||||
|
|
||||||
The Experimental Physics and Industrial Control Systems (EPICS) is an
|
The Experimental Physics and Industrial Control Systems (EPICS) is an
|
||||||
@@ -36,8 +16,8 @@ interfaces) of various types.
|
|||||||
|
|
||||||
### What is new in this release?
|
### What is new in this release?
|
||||||
|
|
||||||
Please check the `documentation/RELEASE_NOTES.md` file for
|
Please check the [release notes](RELEASE_NOTES.md)
|
||||||
description of changes and release migration details.
|
for description of changes and release migration details.
|
||||||
|
|
||||||
### Copyright
|
### Copyright
|
||||||
|
|
||||||
@@ -80,8 +60,7 @@ executable must be found through your normal search path.
|
|||||||
|
|
||||||
#### Unzip and tar (Winzip on WIN32 systems)
|
#### Unzip and tar (Winzip on WIN32 systems)
|
||||||
|
|
||||||
You must have tools available to unzip and untar the EPICS base
|
You may need tools to unzip and untar the EPICS base distribution file.
|
||||||
distribution file.
|
|
||||||
|
|
||||||
#### Target systems
|
#### Target systems
|
||||||
|
|
||||||
@@ -91,7 +70,7 @@ running as processes on the host platform.
|
|||||||
|
|
||||||
#### vxWorks
|
#### vxWorks
|
||||||
|
|
||||||
You must have vxWorks 6.8 or later installed if any of your target
|
You must have vxWorks 6.8 or 6.9 installed if any of your target
|
||||||
systems are vxWorks systems; the C++ compiler from older versions cannot
|
systems are vxWorks systems; the C++ compiler from older versions cannot
|
||||||
compile recently developed code. The vxWorks installation provides the
|
compile recently developed code. The vxWorks installation provides the
|
||||||
cross-compiler and header files needed to build for these targets. The
|
cross-compiler and header files needed to build for these targets. The
|
||||||
@@ -120,16 +99,10 @@ readline is available and will then use it. RTEMS targets may be
|
|||||||
configured to use `LIBTECLA` if available, and on vxWorks the OS's
|
configured to use `LIBTECLA` if available, and on vxWorks the OS's
|
||||||
ledLib line-editing library is normally used.
|
ledLib line-editing library is normally used.
|
||||||
|
|
||||||
### Host system storage requirements
|
|
||||||
|
|
||||||
The compressed tar file is approximately 3 MB in size. The
|
|
||||||
distribution source tree takes up approximately 21 MB. A 64-bit host
|
|
||||||
architecture may need around 610 MB to compile, while cross-compiled
|
|
||||||
targets are somewhat smaller.
|
|
||||||
|
|
||||||
### Documentation
|
### Documentation
|
||||||
|
|
||||||
EPICS documentation is available through the [EPICS website](https://epics.anl.gov/) at Argonne.
|
EPICS documentation is available from the
|
||||||
|
[EPICS Documentation Website](https://docs.epics-controls.org/).
|
||||||
|
|
||||||
Release specific documentation can also be found in the
|
Release specific documentation can also be found in the
|
||||||
`base/documentation` directory of the distribution.
|
`base/documentation` directory of the distribution.
|
||||||
@@ -143,8 +116,10 @@ Release specific documentation can also be found in the
|
|||||||
base/configure Build rules and OS-independent config files
|
base/configure Build rules and OS-independent config files
|
||||||
base/configure/os OS-dependent build config files
|
base/configure/os OS-dependent build config files
|
||||||
base/documentation Distribution documentation
|
base/documentation Distribution documentation
|
||||||
base/src Source code in various subdirectories
|
base/src Source code for templates and build tools
|
||||||
|
base/modules Source code for distribution submodules
|
||||||
base/startup Scripts for setting up path and environment
|
base/startup Scripts for setting up path and environment
|
||||||
|
base/test Unit tests for build tools
|
||||||
```
|
```
|
||||||
|
|
||||||
#### Directories created by the build
|
#### Directories created by the build
|
||||||
@@ -158,7 +133,8 @@ configuration variable if that has been set.
|
|||||||
cfg Installed build configuration files
|
cfg Installed build configuration files
|
||||||
db Installed database files
|
db Installed database files
|
||||||
dbd Installed database definition files
|
dbd Installed database definition files
|
||||||
html Installed html documentation
|
doc Installed Markdown documentation
|
||||||
|
html Installed HTML documentation
|
||||||
include Installed header files
|
include Installed header files
|
||||||
include/os Installed OS-specific header files in subdirs
|
include/os Installed OS-specific header files in subdirs
|
||||||
include/compiler Installed compiler-specific header files
|
include/compiler Installed compiler-specific header files
|
||||||
@@ -169,12 +145,11 @@ configuration variable if that has been set.
|
|||||||
|
|
||||||
#### `base/documentation` Directory
|
#### `base/documentation` Directory
|
||||||
|
|
||||||
This contains documents on how to setup, build, and install EPICS.
|
This contains EPICS reference documentation.
|
||||||
|
|
||||||
```
|
```
|
||||||
README.md This file
|
README.md This file
|
||||||
RELEASE_NOTES.md Notes on release changes
|
RELEASE_NOTES.md Notes on release changes
|
||||||
KnownProblems.html List of known problems and workarounds
|
|
||||||
```
|
```
|
||||||
|
|
||||||
#### `base/startup` Directory
|
#### `base/startup` Directory
|
||||||
@@ -272,8 +247,7 @@ need C and C++ compilers in your search path. When building base you
|
|||||||
must have `echo` in your search path. For Unix host builds you will
|
must have `echo` in your search path. For Unix host builds you will
|
||||||
also need `cp`, `rm`, `mv`, and `mkdir` in your search path. Some Unix
|
also need `cp`, `rm`, `mv`, and `mkdir` in your search path. Some Unix
|
||||||
systems may also need `ar` and `ranlib`, and the C/C++ compilers may
|
systems may also need `ar` and `ranlib`, and the C/C++ compilers may
|
||||||
require `as` and `ld` in your path. On Solaris systems you need
|
require `as` and `ld` in your path.
|
||||||
`uname` in your path.
|
|
||||||
|
|
||||||
* **`LD_LIBRARY_PATH`**
|
* **`LD_LIBRARY_PATH`**
|
||||||
EPICS shared libraries and executables normally contain the full path
|
EPICS shared libraries and executables normally contain the full path
|
||||||
@@ -290,7 +264,6 @@ Shared libraries are now built by default on all Unix type hosts.
|
|||||||
|
|
||||||
To configure EPICS, you may want to modify some values set in the
|
To configure EPICS, you may want to modify some values set in the
|
||||||
following files:
|
following files:
|
||||||
>>>>>>> mirror/3.15
|
|
||||||
|
|
||||||
```
|
```
|
||||||
configure/CONFIG_SITE Build settings. Specify target archs.
|
configure/CONFIG_SITE Build settings. Specify target archs.
|
||||||
@@ -387,7 +360,7 @@ install directories.
|
|||||||
|
|
||||||
EPICS executables and perl scripts are installed into the
|
EPICS executables and perl scripts are installed into the
|
||||||
`$(INSTALL_LOCATION)/bin/<arch>` directories. Libraries are installed
|
`$(INSTALL_LOCATION)/bin/<arch>` directories. Libraries are installed
|
||||||
into $`(INSTALL_LOCATION)/lib/<arch>`. The default definition for
|
into `$(INSTALL_LOCATION)/lib/<arch>`. The default definition for
|
||||||
`$(INSTALL_LOCATION)` is `$(TOP)` which is the root directory in the
|
`$(INSTALL_LOCATION)` is `$(TOP)` which is the root directory in the
|
||||||
distribution directory structure, `base`. Intermediate object files
|
distribution directory structure, `base`. Intermediate object files
|
||||||
are stored in `O.<arch>` source subdirectories during the build
|
are stored in `O.<arch>` source subdirectories during the build
|
||||||
|
|||||||
@@ -1,20 +1,668 @@
|
|||||||
# EPICS 7.0 Release Notes {#releasenotes}
|
# EPICS 7.0 Release Notes
|
||||||
|
|
||||||
These release notes describe changes that have been made since the previous
|
These release notes describe changes that have been made since the previous
|
||||||
release of this series of EPICS Base. **Note that changes which were merged up
|
release of this series of EPICS Base. **Note that changes which were merged up
|
||||||
from commits to the 3.15 branch are not described at the top of this file but
|
from commits to the 3.15 branch are described
|
||||||
lower down, under the 3.15 release to which they were originally committed.**
|
[further down this file](#changes-incorporated-from-the-315-branch)
|
||||||
Thus it is important to read more than just the first section to understand
|
under the 3.15 release to which they were originally committed.** Thus it is
|
||||||
everything that has changed in each release.
|
important to read more than just the first section to understand everything that
|
||||||
|
has changed in each release.
|
||||||
|
|
||||||
The PVA submodules each have their own individual sets of release notes which
|
The external PVA submodules each have their own individual release notes files.
|
||||||
should also be read to understand what has changed since earlier releases.
|
However the entries describing changes included in those submodules since EPICS
|
||||||
|
7.0.5 have now been copied into the appropriate place of this file.
|
||||||
|
|
||||||
**This version of EPICS has not been released yet.**
|
__This version of EPICS has not been released yet.__
|
||||||
|
|
||||||
## Changes made on the 7.0 branch since 7.0.6.1
|
## Changes made on the 7.0 branch since 7.0.9
|
||||||
|
|
||||||
<!-- Insert new items immediately below here ... -->
|
__Add new items below here__
|
||||||
|
|
||||||
|
### Reduce symbol and macro pollution from epicsAtomic.h on WIN32
|
||||||
|
|
||||||
|
`epicsAtomic.h` no longer pulls in as many unneeded declarations and macros from
|
||||||
|
`windows.h`. Prior to this change, including `epicsAtomic.h` at the wrong time
|
||||||
|
could result in unexpected compiler errors. Due to the nature of `windows.h`,
|
||||||
|
some unneeded declarations are still pulled in, however the number is greatly reduced.
|
||||||
|
Code that needs these declarations should explicitly include `windows.h` before `epicsAtomic.h`.
|
||||||
|
|
||||||
|
### epicsExport simplifications
|
||||||
|
|
||||||
|
`epicsExportAddress()`, `epicsExportRegistrar()` and `epicsRegisterFunction()`
|
||||||
|
no longer require to be wrapped in `extern "C" { }` in C++ code.
|
||||||
|
|
||||||
|
### New `dbServerStats()` API for iocStats
|
||||||
|
|
||||||
|
A new routine provides the ability to request channel and client counts from
|
||||||
|
named server layers that implement the `stats()` method, or to get a summary
|
||||||
|
of the counts from all registered server layers. A preprocessor macro
|
||||||
|
`HAS_DBSERVER_STATS` macro is defined in the `dbServer.h` header file to
|
||||||
|
simplify code that needs to support older versions of Base as well.
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
## EPICS Release 7.0.9
|
||||||
|
|
||||||
|
### Core documentation published at ReadTheDocs
|
||||||
|
|
||||||
|
The `documentation` directory's `Makefile` can now run various publication scripts including Sphinx and Doxygen to generate formatted documentation that is now being published
|
||||||
|
[at docs.epics-controls.org](https://docs.epics-controls.org/projects/base/en/latest/index.html)
|
||||||
|
and integrated into the main [EPICS Documentation website](https://docs.epics-controls.org/en/latest/index.html).
|
||||||
|
The best place to find out more about these mechanisms is the
|
||||||
|
[Contribution Guide](https://docs.epics-controls.org/en/latest/CONTRIBUTING.html)
|
||||||
|
although it doesn't currently cover the new processes added to epics-base.
|
||||||
|
|
||||||
|
Much of the documentation generated from .dbd.pod files at build time is now
|
||||||
|
also being converted into MarkDown (.md) files and installed into the top-level
|
||||||
|
`doc` directory. Some users might find it quicker to look up information about a
|
||||||
|
record type by opening these files in a text editor intead of opening a browser
|
||||||
|
and loading the HTML versions or finding and opening the files from the EPICS
|
||||||
|
Documentation site.
|
||||||
|
|
||||||
|
### Post monitors from compress record when it's reset
|
||||||
|
|
||||||
|
Writing into a compress record's `RES` field now posts a monitor event instead
|
||||||
|
of only changing `VAL`. Monitor clients will therefore receive an empty array.
|
||||||
|
|
||||||
|
### The AMSG error message propagates through MSS links
|
||||||
|
|
||||||
|
A database link with the MSS attribute will now propagate not only SEVR and
|
||||||
|
STAT, but also AMSG. This field contains additional information that complements
|
||||||
|
STAT. Links with MS or MSI attributes do not propagate STAT, and therefore do
|
||||||
|
not propagate AMSG, either.
|
||||||
|
|
||||||
|
Channel Access links do not propagate AMSG, regardless of the MSS attribute,
|
||||||
|
because the message is not available as Channel metadata.
|
||||||
|
|
||||||
|
### Reloading record aliases
|
||||||
|
|
||||||
|
Aliases can now be defined more than once as long as they still refer to the
|
||||||
|
same record, unless the global variable `dbRecordsOnceOnly` is non-zero.
|
||||||
|
This allows database files to be loaded multiple times, even if they contain
|
||||||
|
alias definitions.
|
||||||
|
|
||||||
|
### `DBE_PROPERTY` event rate changed
|
||||||
|
|
||||||
|
Updating property fields now only posts `DBE_PROPERTY` events if the
|
||||||
|
field actually changed.
|
||||||
|
|
||||||
|
### Changes to msi related to include paths
|
||||||
|
|
||||||
|
There are two changes to `msi` included here.
|
||||||
|
|
||||||
|
`msi` now treats files included by .template or .substutiions files in a more
|
||||||
|
consistent way: for relative paths, it will always look relative to the current
|
||||||
|
working directory if no `-I` flags are passed, and if they are passed then it
|
||||||
|
will search for the _relative_ path from each of those flags. That is, the
|
||||||
|
following will now find the file `bar.template` located at
|
||||||
|
`/some/path/rel/path/bar.template`
|
||||||
|
```
|
||||||
|
$ cat foo.substitutions
|
||||||
|
file rel/path/bar.template {
|
||||||
|
# contents
|
||||||
|
}
|
||||||
|
$ msi -I /some/path foo.substitutions
|
||||||
|
```
|
||||||
|
|
||||||
|
Note that this does provide one change from previous behaviour: when opening a
|
||||||
|
file from the command line, `msi` will not use the `-I`-specified paths to
|
||||||
|
search for the file, but will only work relative to the current working
|
||||||
|
directory, consistent with most commandline utilities.
|
||||||
|
|
||||||
|
### Allow users to delete previously created records from the database
|
||||||
|
|
||||||
|
From this release, record instances and aliases that have already been loaded
|
||||||
|
by an IOC can be removed from the database again before the call to iocInit
|
||||||
|
by loading a second instance of the named records but using `"#"` in place of
|
||||||
|
the record type. Values for the fields are not required or advised, just use
|
||||||
|
an empty record body `{}`. This is useful when a template defines records that
|
||||||
|
are not wanted in some IOCs, without having to split or duplicate the original
|
||||||
|
template.
|
||||||
|
|
||||||
|
For example this will remove the record named "unwanted":
|
||||||
|
|
||||||
|
```
|
||||||
|
record("#", "unwanted") {}
|
||||||
|
```
|
||||||
|
|
||||||
|
### Only keep readline history for interactive sessions
|
||||||
|
|
||||||
|
Previously, all IOCsh commands were persisited in the libreadline history
|
||||||
|
(when readline support is included).
|
||||||
|
Going forward, only interactive commands are saved.
|
||||||
|
|
||||||
|
### Type change to asTrap serverSpecific data
|
||||||
|
|
||||||
|
Change `void*` to `dbChannel*` in `asTrapWriteBeforeWithData()` and
|
||||||
|
`asTrapWriteMessage::serverSpecific` to reflect the reality since
|
||||||
|
the `dbAddr*` to `dbChannel*` migration.
|
||||||
|
External code wishing to support both before and after 3.15 should
|
||||||
|
already be conditionally casting to/from the appropriate type.
|
||||||
|
|
||||||
|
### Fix issues with `_FORTIFY_SOURCE=3`
|
||||||
|
|
||||||
|
This release fixes the false positives failures whhen building with `_FORTIFY_SOURCE` level 3.
|
||||||
|
The override introduced in 7.0.8.1 has been removed.
|
||||||
|
|
||||||
|
### Other
|
||||||
|
|
||||||
|
- genVersionHeader: work with git submodules and worktrees.
|
||||||
|
- avoid UB with self `pthread_join()`
|
||||||
|
- freebsd: Add support for x86 and amd64 builds
|
||||||
|
- Clear AMSG when SEVR becomes zero.
|
||||||
|
- `seqRecord` fix support for link `DLY0`
|
||||||
|
- Add `ABORT_ON_ASSERT` flag to `CONFIG_SITE_ENV`
|
||||||
|
- rationalize osdMutex
|
||||||
|
|
||||||
|
### Submodule updates
|
||||||
|
|
||||||
|
The pvDatabase module was updated to version 4.7.2:
|
||||||
|
|
||||||
|
* Resolved issue with changed field set in the case where the top level (master)
|
||||||
|
field ("_") is not requested by the client, but the master field callback causes
|
||||||
|
all fields to be marked as updated, rather than only those fields that have
|
||||||
|
actually been modified.
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
## EPICS Release 7.0.8.1
|
||||||
|
|
||||||
|
### Limit to `_FORTIFY_SOURCE=2`
|
||||||
|
|
||||||
|
GCC versions 12 and beyond and glibc have added some aggressive runtime
|
||||||
|
checks for buffer overflows in libc functions at runtime, and the
|
||||||
|
[Ubuntu 2024.04](https://wiki.ubuntu.com/ToolChain/CompilerFlags) release
|
||||||
|
increased their default gcc fortification level from 2 to 3.
|
||||||
|
This has started causing EPICS Base builds to fail on that version, and
|
||||||
|
other OS releases may make that configuration change with similar results.
|
||||||
|
This release detects a compiler configured with `_FORTIFY_SOURCE=3` and
|
||||||
|
overrides it to 2.
|
||||||
|
Later releases of Base will adjust the code, providing information to the
|
||||||
|
compiler to avoid triggering these incorrect protections.
|
||||||
|
|
||||||
|
### Fix issue with compress record
|
||||||
|
|
||||||
|
In Base 7.0.8, an update to the compress record was added to allow for certain
|
||||||
|
algorithms to use partially filled buffers in their computations. Unfortunately,
|
||||||
|
this broke the behaviour of the records in certain cases. This has been fixed.
|
||||||
|
|
||||||
|
### Various minor changes
|
||||||
|
|
||||||
|
These included fixing minor memory leaks and documentation corrections. The
|
||||||
|
`SIZV` field of lsi, lso and printf record VAL fields now can't exceed 32767
|
||||||
|
characters, to match an internal limit.
|
||||||
|
|
||||||
|
### `epicsSocketAccept()` now returns `SOCKET`, not `int`
|
||||||
|
|
||||||
|
This might have some effect on downstream modules still using `int`, but the
|
||||||
|
OS-specific osdSock.h headers which osiSock.h includes have all declared
|
||||||
|
`SOCKET` (in most casese as a typedef for `int`) for many releases.
|
||||||
|
This change removes a compiler warning on WIN32.
|
||||||
|
Further details and the discussion about this change can be found
|
||||||
|
[here](https://github.com/epics-base/epics-base/pull/458).
|
||||||
|
|
||||||
|
### `dbLoadRecords` allows macros with default values
|
||||||
|
|
||||||
|
Previously the parser assumed that files containing macro substitutions were
|
||||||
|
bad if no macro definitions were provided; that assumption was made incorrect
|
||||||
|
once macro substitutions were allowed to provide a default value.
|
||||||
|
|
||||||
|
### Hostname length limit in CA removed
|
||||||
|
|
||||||
|
Before this release, the CA client library only handled hostnames in address
|
||||||
|
list environment variables up to 255 characters long.
|
||||||
|
This limit has been removed.
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
## EPICS Release 7.0.8
|
||||||
|
|
||||||
|
### bi "Raw Soft Channel" use MASK
|
||||||
|
|
||||||
|
If MASK is non-zero, The raw device support will now apply MASK to the
|
||||||
|
value read into RVAL.
|
||||||
|
eg. allows extraction of a bit from an input integer.
|
||||||
|
|
||||||
|
```
|
||||||
|
record(longin, "integer") {
|
||||||
|
field(VAL, "0xff")
|
||||||
|
}
|
||||||
|
record(bi, "bit1") {
|
||||||
|
field(DESC, "extract bit 1")
|
||||||
|
field(DTYP, "Raw Soft Channel")
|
||||||
|
field(INP , "integer")
|
||||||
|
field(MASK, "0x2")
|
||||||
|
field(ZNAM, "Clear")
|
||||||
|
field(ONAM, "Set")
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
### ANSI escapes in stderr
|
||||||
|
|
||||||
|
ANSI escape charactor sequences may now be printed to the stderr stream.
|
||||||
|
These escapes will appear in logs captured from that stream.
|
||||||
|
Tools which parse and/or render these logs may need to be adjusted to
|
||||||
|
either strip out the escapes, or to translate them into markup.
|
||||||
|
(see [ansi2html](https://pypi.org/project/ansi2html/) for example)
|
||||||
|
|
||||||
|
### Allow explicit append with `dbRecordsOnceOnly!=0`
|
||||||
|
|
||||||
|
Previously setting `dbRecordsOnceOnly!=0` prevented any further changes to a record via a .db file. eg.
|
||||||
|
|
||||||
|
```
|
||||||
|
record(ai, "myrec") {}
|
||||||
|
```
|
||||||
|
|
||||||
|
`dbRecordsOnceOnly!=0` previously disallowed appending fields with either form:
|
||||||
|
|
||||||
|
```
|
||||||
|
record("*", "myrec") {} # error
|
||||||
|
record(ai, "myrec") {} # error
|
||||||
|
```
|
||||||
|
|
||||||
|
Beginning with this release, `dbRecordsOnceOnly!=0` allows appending when explicitly intended (when record type is `"*"`).
|
||||||
|
|
||||||
|
```
|
||||||
|
record("*", "myrec") {} # allowed
|
||||||
|
record(ai, "myrec") {} # error
|
||||||
|
```
|
||||||
|
|
||||||
|
### Add `$EPICS_CLI_TIMEOUT`
|
||||||
|
|
||||||
|
Add support for CA tools timeout from environment variable `$EPICS_CLI_TIMEOUT`
|
||||||
|
which sets the default the default timeout for `caget` et al.
|
||||||
|
The `-w` argument continues to take precedence.
|
||||||
|
|
||||||
|
### Fixed leak from a non-EPICS thread on WIN32
|
||||||
|
|
||||||
|
On Windows targets, if a thread not created by `epicsThreadCreate*()` directly
|
||||||
|
or indirectly calls an `epicsThread*()` function, a specific tracking struct
|
||||||
|
is allocated. Prior to this release the allocation would not be `free()`d,
|
||||||
|
resulting in a memory leak.
|
||||||
|
|
||||||
|
A similar issue on POSIX targets was previously fixed.
|
||||||
|
|
||||||
|
### Change compiler for FreeBSD to clang
|
||||||
|
|
||||||
|
The default compiler for FreeBSD targets changes from GCC to clang.
|
||||||
|
|
||||||
|
### Expose `dbCreateAlias` in IOC shell
|
||||||
|
|
||||||
|
Add a new IOC shell command `dbCreateAlias` allow record aliases to be added.
|
||||||
|
Intended for use before `iocInit`. eg. to add an alias "bar" for a record "foo".
|
||||||
|
|
||||||
|
```
|
||||||
|
dbLoadRecords("some.db") # includes: record(ai, "foo") { ...
|
||||||
|
dbCreateAlias("foo", "bar")
|
||||||
|
iocInit()
|
||||||
|
```
|
||||||
|
|
||||||
|
### dbEvent eventsRemaining missed on cancel
|
||||||
|
|
||||||
|
In some cases, RSRV may queue a subscription update, but not flush it.
|
||||||
|
This partially addresses this issue.
|
||||||
|
|
||||||
|
### subRecord on bad INP links
|
||||||
|
|
||||||
|
Previously, if a subRecord has an invalid `INP*` link, it was silently failing
|
||||||
|
(and not running the proc function). Now the the status code returned by the
|
||||||
|
subroutine is returned from `dbProcess()`.
|
||||||
|
|
||||||
|
### COMMANDLINE\_LIBRARY fallback to GNU\_DIR
|
||||||
|
|
||||||
|
Fall back to the previous behavior when searching for `readline.h` with older compilers.
|
||||||
|
|
||||||
|
### Search for readline installed via HomeBrew.
|
||||||
|
|
||||||
|
Look for `/opt/local/include/readline` on OSX.
|
||||||
|
|
||||||
|
### Always stop worker threads
|
||||||
|
|
||||||
|
The SCAN and callback threads are now stopped during normal IOC shutdown.
|
||||||
|
|
||||||
|
### Allow runtime bypass of free list allocator
|
||||||
|
|
||||||
|
The environment variable `$EPICS_FREELIST_BYPASS` may be set to `YES` to cause the `freeListLib` functions to always call directly to `malloc()`/`free()`. May be useful when troubleshooting some kinds of memory allocation bugs which would otherwise be "hidden". eg. use-after-free data races. This may also improve the results of dynamic analysis tools which are not aware of this internal free list.
|
||||||
|
|
||||||
|
### `compress` record enhancement
|
||||||
|
|
||||||
|
The compress record now supports the use of partially-filled buffers when using
|
||||||
|
any of the N-to-one algorithms. This is achieved by setting the new field `PBUF`
|
||||||
|
to `YES`.
|
||||||
|
|
||||||
|
### Extended timestamp channel filter
|
||||||
|
|
||||||
|
The `"ts"` filter can now retrieve the record's timestamp in several numeric
|
||||||
|
and string formats, some of which support full nanosecond precision.
|
||||||
|
|
||||||
|
Hal$ caget -a test:channel
|
||||||
|
test:channel 2021-03-11 18:23:48.265386 42
|
||||||
|
Hal$ caget -f9 'test:channel.{"ts": {"num": "dbl"}}'
|
||||||
|
test:channel.{"ts": {"num": "dbl"}} 984331428.265386105
|
||||||
|
Hal$ caget 'test:channel.{"ts": {"str": "iso"}}'
|
||||||
|
test:channel.{"ts": {"str": "iso"}} 2021-03-11T18:23:48.265386+0100
|
||||||
|
Hal$ caget -f1 'test:channel.{"ts": {"num": "ts"}}'
|
||||||
|
test:channel.{"ts": {"num": "ts"}} 2 984331428.0 265386163.0
|
||||||
|
|
||||||
|
More information is included in the filters documentation, which can be found in
|
||||||
|
the `html/filters.html` document that is generated during the build
|
||||||
|
|
||||||
|
### Allow adding new error symbols at any time
|
||||||
|
|
||||||
|
`errSymbolAdd` can now be called after early initialization.
|
||||||
|
|
||||||
|
### Add conditional output (OOPT) to the longout record
|
||||||
|
|
||||||
|
The longout record can now be configured using its new OOPT and OOCH fields
|
||||||
|
to (not) write to its output link depending on the contents of VAL, in a
|
||||||
|
similar manner to the calcout record. More information can be found on the
|
||||||
|
reference page for the longout record type that accompanies this release.
|
||||||
|
|
||||||
|
This functionality was suggested in
|
||||||
|
[lp# 1398215](https://bugs.launchpad.net/epics-base/+bug/1398215) and may
|
||||||
|
be added to other output record types if the community finds it useful,
|
||||||
|
please send feedback about the feature to tech-talk.
|
||||||
|
|
||||||
|
### IOC Shell
|
||||||
|
|
||||||
|
#### Tab completion
|
||||||
|
|
||||||
|
When built with optional GNU libreadline support, the interactive IOC shell
|
||||||
|
will perform tab completion for command names as well as for some arguments
|
||||||
|
of the built-in commands. For example, the record name argument of `dbpr`,
|
||||||
|
and the path name argument of `cd`.
|
||||||
|
|
||||||
|
Externally defined commands have a limited ability to opt into completion by
|
||||||
|
using the new `iocshArgStringRecord` and `iocshArgStringPath` argument types.
|
||||||
|
Both function identically to `iocshArgString` but indicate how to suggest
|
||||||
|
completion strings.
|
||||||
|
|
||||||
|
Builds on macOS (`darwin-x86` or `darwin-aarch64` targets) normally use Apple's
|
||||||
|
libedit library in readline compatibility mode, which doesn't support the tab
|
||||||
|
completion API that GNU readline provides. You can use Homebrew or some other
|
||||||
|
third-party package manager to install the GNU readline package, then edit the
|
||||||
|
`configure/os/CONFIG_SITE.darwinCommon.darwinCommon` file to have EPICS use the
|
||||||
|
real thing to get tab completion in the IOC shell. The default settings in that
|
||||||
|
file currently look for and use a Homebrew-installed readline if present.
|
||||||
|
|
||||||
|
#### Persist history
|
||||||
|
|
||||||
|
Attempt to read and write command to a file (`./.iocsh_history` by default).
|
||||||
|
Name may be overwritten with by setting `$EPICS_IOCSH_HISTFILE` to an
|
||||||
|
alternate path, or disabled by setting to an empty string.
|
||||||
|
|
||||||
|
#### Changes to help output
|
||||||
|
|
||||||
|
Rework the `help` command output to improve formatting and readability,
|
||||||
|
and include a visual marker (a line of underlines) between different help commands.
|
||||||
|
|
||||||
|
### Add FMOD as CALC Expression
|
||||||
|
|
||||||
|
The floating point modulo function `FMOD(NUM,DEN)` has been added to the CALC
|
||||||
|
expression engine and is available to all software using that (calc and calcout
|
||||||
|
record types, access security library and some extensions).
|
||||||
|
|
||||||
|
### Submodule updates
|
||||||
|
|
||||||
|
The pvData module was updated to version 8.0.6:
|
||||||
|
|
||||||
|
- Compatible changes
|
||||||
|
- Actually enable JSON-5 output in PVStructure::Formatter::JSON when available.
|
||||||
|
- Fix unaligned access issues for some ARM/Linux targets.
|
||||||
|
|
||||||
|
The pvAccess module was updated to version 7.1.7:
|
||||||
|
|
||||||
|
- Changes
|
||||||
|
- Registering the PVA server with the IOC now sets the `PVAS_SERVER_PORT`
|
||||||
|
variable in the environment.
|
||||||
|
|
||||||
|
The pva2pva module was updated to version 1.4.1:
|
||||||
|
|
||||||
|
- Bug Fixes
|
||||||
|
- `dbLoadGroup` was fixed
|
||||||
|
- Additions
|
||||||
|
- Support for "meta" member at top of array of structs
|
||||||
|
|
||||||
|
The pvDatabase module was updated to version 4.7.1:
|
||||||
|
|
||||||
|
* Added data distributor plugin which can be used for distributing data between
|
||||||
|
a group of clients. The plugin is triggered by the request string of the
|
||||||
|
form:
|
||||||
|
|
||||||
|
`_[distributor=group:<group id>;set:<set_id>;trigger:<field_name>;updates:<n_updates>;mode:<update_mode>]`
|
||||||
|
|
||||||
|
The plugin parameters are optional and are described bellow:
|
||||||
|
|
||||||
|
- group: this parameter indicates a group that client application belongs to (default value: "default"); groups of clients are completely independent of each other
|
||||||
|
|
||||||
|
- set: this parameter designates a client set that application belongs to within its group (default value: "default")
|
||||||
|
|
||||||
|
- trigger: this is the PV structure field that distinguishes different channel updates (default value: "timeStamp"); for example, for area detector images one could use the "uniqueId" field of the NTND structure
|
||||||
|
|
||||||
|
- updates: this parameter configures how many sequential updates a client (or a set of clients) will receive before the data distributor starts updating the next one (default value: "1")
|
||||||
|
|
||||||
|
- mode: this parameter configures how channel updates are to be distributed between clients in a set:
|
||||||
|
- one: update goes to one client per set
|
||||||
|
- all: update goes to all clients in a set
|
||||||
|
- default is "one" if client set id is not specified, and "all" if set id is specified
|
||||||
|
|
||||||
|
-----
|
||||||
|
|
||||||
|
## EPICS Release 7.0.7
|
||||||
|
|
||||||
|
### Doxygen Annotations
|
||||||
|
|
||||||
|
Thanks to several attendees at the 2022 EPICS Codeathon the number of header
|
||||||
|
files with Doxygen annotations in the EPICS Core has again increased.
|
||||||
|
|
||||||
|
### Build System updates
|
||||||
|
|
||||||
|
The top-level make targets `uninstall`, `archuninstall` and similar no
|
||||||
|
longer trigger the `clean` target which empties build directories, this
|
||||||
|
was a bug introduced in 7.0.5.
|
||||||
|
|
||||||
|
The `make distclean` target now properly deletes the generated file(s)
|
||||||
|
`modules/RELEASE.<host>.local` which are essential to build the external
|
||||||
|
submodules under the `modules` directory, and should not crash if the
|
||||||
|
build is configured with `INSTALL_LOCATION` pointing to an empty external directory (i.e. if you run `make distclean` twice in succession). When
|
||||||
|
`INSTALL_LOCATION` is set in the files `configure/CONFIG_SITE` or
|
||||||
|
`configure/CONFIG_SITE.local` the `modules/RELEASE.<host>.local` file
|
||||||
|
will now be regenerated in case the install path has been modified.
|
||||||
|
|
||||||
|
Note that passing `INSTALL_LOCATION=<path>` on the make command-line will
|
||||||
|
only work if you have run `make distclean` immediately beforehand, as the
|
||||||
|
`modules/RELEASE.<host>.local` file must be recreated using the new path.
|
||||||
|
|
||||||
|
### Enhancements to `capr.pl`
|
||||||
|
|
||||||
|
The `capr.pl` script can now display records from older Base versions to
|
||||||
|
which fields have since been added, and shows long strings and array data
|
||||||
|
up to 10 elements, use the new `-n` option to increase that number.
|
||||||
|
The script is fully event-driven and prints all the field data received by
|
||||||
|
the end of the CA wait time (`-w` option which defaults to 2 seconds).
|
||||||
|
The interest level can now be specified using the `-l` option before the
|
||||||
|
PV name, and the new `-D` flag outputs debugging information.
|
||||||
|
|
||||||
|
### Time Synchronization on VxWorks
|
||||||
|
|
||||||
|
VxWorks 6.9 can do its own OS clock time synchronization, if it has been
|
||||||
|
configured by setting `SNTPC_PRIMARY_IPV4_ADDR`. Since EPICS 3.15.3 the
|
||||||
|
IOC time support code has checked for the existence of the VxWorks time
|
||||||
|
synchronization task and avoided starting the EPICS one if the OS task
|
||||||
|
exists and the OS clock gives a "recent" time (i.e. after when EPICS was
|
||||||
|
compiled), unless the environment variable `EPICS_TS_FORCE_NTPTIME` is
|
||||||
|
also set. However a logic error in that code required the environment
|
||||||
|
variable to be set in more cases than it should have.
|
||||||
|
|
||||||
|
This error has been fixed and the IOC should work normally if the VxWorks
|
||||||
|
task is configured and running. The `TIMEZONE` value for the year is also
|
||||||
|
now calculated at initialization in this configuration, previously it was
|
||||||
|
only done when the IOC synchronzation task was used. Setting the above
|
||||||
|
environment variable will now cause the IOC support code to shut down the
|
||||||
|
VxWorks synchronization thread (if running) before starting the EPICS one.
|
||||||
|
|
||||||
|
Running the iocsh command `ClockTime_Report` now shows whether the VxWorks
|
||||||
|
task is running as well as giving the state of the IOC synchronization task.
|
||||||
|
The `ClockTime_Init` command can also be used to stop or restart the IOC
|
||||||
|
time synchronization task while the IOC is running, depending on the `0` or
|
||||||
|
`1` parameter passed to it. This last change also applies to RTEMS IOCs.
|
||||||
|
|
||||||
|
### Incompatible change to `struct db_field_log`
|
||||||
|
|
||||||
|
This change may cause channel filters which manipulate array updates
|
||||||
|
to fail to compile.
|
||||||
|
|
||||||
|
To avoid potential speculation issues arising from overlapping code pointers
|
||||||
|
with data values, `union dbfl_ref` is modified to remove the `dtor` member.
|
||||||
|
`dtor` is moved out into the enclosing `struct db_field_log`.
|
||||||
|
|
||||||
|
So eg. using a `db_field_log* p`, the expression `p->u.r.dtor` must be
|
||||||
|
changed to `(p)->dtor`.
|
||||||
|
|
||||||
|
### Fix undef ts on first camonitor update of NORD from waveformRecord
|
||||||
|
|
||||||
|
The order over operations when processing a waveformRecord is adjusted
|
||||||
|
so that updates to NORD is posted with the correct timestamp.
|
||||||
|
|
||||||
|
### Automatic `COMMANDLINE_LIBRARY` with newer compilers
|
||||||
|
|
||||||
|
When built with a compiler supporting `__has_include<>`, the presence
|
||||||
|
of a `readline/readline.h` header will be used to automatically determine
|
||||||
|
a default value for `COMMANDLINE_LIBRARY`.
|
||||||
|
|
||||||
|
Mingw builds with readline support now link `-ltermcap` instead of `-lcurses`.
|
||||||
|
|
||||||
|
This should not effect sites which set explicitly set `COMMANDLINE_LIBRARY`
|
||||||
|
as the only definition in Base now has the form `COMMANDLINE_LIBRARY ?= ...`.
|
||||||
|
|
||||||
|
### Perl CA support for empty long strings
|
||||||
|
|
||||||
|
The Perl CA bindings have been fixed to handle zero-length long string data
|
||||||
|
properly.
|
||||||
|
|
||||||
|
### `aao` gains `OMSL` and `DOL`
|
||||||
|
|
||||||
|
The `aao` record types gains the same `DOL` functionality found
|
||||||
|
in other output record types (`ao`, `longout`, etc.)
|
||||||
|
|
||||||
|
### Server exports `RSRV_SERVER_PORT`
|
||||||
|
|
||||||
|
During `iocInit()`, the environment variable `RSRV_SERVER_PORT` is set
|
||||||
|
with the TCP port number selected.
|
||||||
|
|
||||||
|
### `dbdExpand.pl` sorts all items by name
|
||||||
|
|
||||||
|
DBD files generated by the `dbdExpand.pl` script are now sorted within each
|
||||||
|
item type by the primary name of the item. The result should resolve any
|
||||||
|
issues with reproducable builds. No option is provided to prevent the sorting,
|
||||||
|
previously the order was essentially random and varied each time.
|
||||||
|
|
||||||
|
### `dbExpand.pl` sorts records by name
|
||||||
|
|
||||||
|
Records are now output by this program in order, sorted by name. The new flag
|
||||||
|
`-s` can be given to output the records in the same order they were read in,
|
||||||
|
instead of sorting them.
|
||||||
|
|
||||||
|
Note that there are currently no build rules provided with Base which make use
|
||||||
|
of this program.
|
||||||
|
|
||||||
|
### Simulation Mode RAW Support for Output Record Types
|
||||||
|
|
||||||
|
SIMM=RAW support has been added for the relevant output record types
|
||||||
|
(ao, bo, mbbo, mbboDirect).
|
||||||
|
RAW simulation mode will have those records do the appropriate conversion
|
||||||
|
and write RVAL to the location pointed to by SIOL.
|
||||||
|
|
||||||
|
### Fixed leak from a non-EPICS thread
|
||||||
|
|
||||||
|
On some targets, if a thread not created by `epicsThreadCreate*()` directly
|
||||||
|
or indirectly calls an `epicsThread*()` function, a specific tracking struct
|
||||||
|
is allocated.
|
||||||
|
|
||||||
|
Prior to this release, on POSIX and WIN32 targets, this
|
||||||
|
struct would not be `free()`d, resulting in a memory leak.
|
||||||
|
|
||||||
|
This release fixed the leak on POSIX targets.
|
||||||
|
|
||||||
|
See the associated github [issue 241](https://github.com/epics-base/epics-base/issues/241)
|
||||||
|
for WIN32 status.
|
||||||
|
|
||||||
|
### Fixed leak from a non-EPICS thread
|
||||||
|
|
||||||
|
On some targets, if a thread not created by `epicsThreadCreate*()` directly
|
||||||
|
or indirectly calls an `epicsThread*()` function, a specific tracking struct
|
||||||
|
is allocated.
|
||||||
|
|
||||||
|
Prior to this release, on POSIX and WIN32 targets, this
|
||||||
|
allocation would not be `free()`d, resulting in a memory leak.
|
||||||
|
|
||||||
|
This release fixed the leak on POSIX and WIN32 targets (excluding
|
||||||
|
MSVC before vs2012, and the WINE runtime).
|
||||||
|
|
||||||
|
### Fixed leak from a non-EPICS thread
|
||||||
|
|
||||||
|
On some targets, if a thread not created by `epicsThreadCreate*()` directly
|
||||||
|
or indirectly calls an `epicsThread*()` function, a specific tracking struct
|
||||||
|
is allocated.
|
||||||
|
|
||||||
|
Prior to this release, on POSIX and WIN32 targets, this
|
||||||
|
struct would not be `free()`d, resulting in a memory leak.
|
||||||
|
|
||||||
|
This release fixed the leak on POSIX targets.
|
||||||
|
|
||||||
|
See the associated github [issue 241](https://github.com/epics-base/epics-base/issues/241)
|
||||||
|
for WIN32 status.
|
||||||
|
|
||||||
|
### Fix `CHECK_RELEASE = WARN`
|
||||||
|
|
||||||
|
This now works again, it was broken in 2019 (7.0.3.1) by an errant commit.
|
||||||
|
|
||||||
|
### Document `DISP` as design-time field
|
||||||
|
|
||||||
|
The DISP field can be set to a non-zero value to prevent records being changed
|
||||||
|
from outside the IOC (this is ancient behavior), but has never been documented
|
||||||
|
as being usable at design-time (DCT=Yes in the Record Reference tables). This
|
||||||
|
has now been changed.
|
||||||
|
|
||||||
|
### Make `epicsInt8` signed on all architectures
|
||||||
|
|
||||||
|
The `epicsInt8` and thus `DBF_CHAR` types have always been unsigned on
|
||||||
|
architectures where `char` is unsigned, for example on many PowerPC CPU
|
||||||
|
architectures. This was counter-intuitive, and resulted in IOC behavior
|
||||||
|
differing between architectures when converting `DBF_CHAR` values into a
|
||||||
|
signed integer or floating point type.
|
||||||
|
|
||||||
|
**WARNING**: This fix may change behavior of existing databases on target
|
||||||
|
architectures with unsigned `char` (mainly PowerPC) when using input links to
|
||||||
|
read from `CHAR` arrays. Architectures with signed `char` (usually x86) should
|
||||||
|
be unaffected, although some compilers might generate new warnings.
|
||||||
|
|
||||||
|
### Allow hexadecimal and octal numbers in hardware links
|
||||||
|
|
||||||
|
[GH:213](https://github.com/epics-base/epics-base/pull/213)
|
||||||
|
|
||||||
|
Several types of hardware links (`VME_IO`, `CAMAC_IO`, etc) now accept
|
||||||
|
hexadecimal and octal numbers. (Hexadecimal numbers had already been valid
|
||||||
|
up to EPICS R3.15.) This change may introduce incompatibilities when using
|
||||||
|
numbers with leading `0` as they will now be parsed as octal.
|
||||||
|
|
||||||
|
### Fix embedded implementations of `epicsEvent`
|
||||||
|
|
||||||
|
[GH:202](https://github.com/epics-base/epics-base/issues/202) and
|
||||||
|
[GH:206](https://github.com/epics-base/epics-base/pull/206)
|
||||||
|
|
||||||
|
Heinz Junkes provided a new implementation of the `epicsEvent` API suitable for
|
||||||
|
RTEMS Posix targets (RTEMS 5.1 and later). In review a few issues related to
|
||||||
|
overflow of timeout values surfaced in this and other embedded implementations,
|
||||||
|
and these were also been fixed in this Pull Request. The API documentation for
|
||||||
|
this and some other routines has also been updated.
|
||||||
|
|
||||||
|
### Breakpoint Table Names
|
||||||
|
|
||||||
|
The names of breakpoint tables were made unnecessarily strict when DBD file
|
||||||
|
processing was moved to Perl for the 3.15 release series. Table names may now
|
||||||
|
contain the special characters `_` `-` `:` `;` `.` `[` `]` `<` `>` in addition
|
||||||
|
to letters and digits.
|
||||||
|
|
||||||
### Fix for `undefined` in configure/RELEASE files
|
### Fix for `undefined` in configure/RELEASE files
|
||||||
|
|
||||||
@@ -48,6 +696,44 @@ or if unsupported (`$TERM` not set, or Windows < 10).
|
|||||||
The `dbnd` server side filter now passes through alarm and property
|
The `dbnd` server side filter now passes through alarm and property
|
||||||
change events, even when not exceeding the deadband.
|
change events, even when not exceeding the deadband.
|
||||||
|
|
||||||
|
### Submodule updates
|
||||||
|
|
||||||
|
The pvData module was updated to version 8.0.5:
|
||||||
|
|
||||||
|
- Compatible changes
|
||||||
|
- Internal changes to use the YAJL API for generating JSON and JSON-5 output.
|
||||||
|
|
||||||
|
The pvAccess module was updated to version 7.1.6:
|
||||||
|
|
||||||
|
- Changes to caProvider
|
||||||
|
- Bug fix related to enum values.
|
||||||
|
- More internal changes to improve performance when connecting tens of
|
||||||
|
thousands of CA channels.
|
||||||
|
- Several minor internal improvements.
|
||||||
|
|
||||||
|
The pva2pva module was updated to version 1.4.0:
|
||||||
|
|
||||||
|
- Bug Fixes
|
||||||
|
- Apply ACF when writing to atomic group
|
||||||
|
- Additions
|
||||||
|
- Add new "structure" to @ref qsrv_group_map_types
|
||||||
|
- Changes
|
||||||
|
- Add Access Security hooks for single and group writes.
|
||||||
|
- Enable "Async Soft Channel" for output links
|
||||||
|
- When built against Base 7.0.6.1, set timeStamp.userTag from UTAG field.
|
||||||
|
- Add DTYP="QSRV Set UTag" for longin, which sets UTAG=VAL.
|
||||||
|
|
||||||
|
The pvDatabase module was updated to version 4.7.0:
|
||||||
|
|
||||||
|
* Added support for the whole structure (master field) server side plugins.
|
||||||
|
The whole structure is identified as the `_` string, and a pvRequest string
|
||||||
|
that applies a plugin to it takes the form:
|
||||||
|
|
||||||
|
`field(_[XYZ=A:3;B:uniqueId])`
|
||||||
|
|
||||||
|
where `XYZ` is the name of a specific filter plugin that takes parameters
|
||||||
|
`A` and `B` with values `3` and `uniqueId` respectively.
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
## EPICS Release 7.0.6.1
|
## EPICS Release 7.0.6.1
|
||||||
@@ -67,7 +753,7 @@ monitors posted on the bit fields.
|
|||||||
Some scripts now make use of features that were introduced to this Perl version
|
Some scripts now make use of features that were introduced to this Perl version
|
||||||
that was released in 2009.
|
that was released in 2009.
|
||||||
|
|
||||||
### DB Links to DBF_MENU fields fixed
|
### DB Links to `DBF_MENU` fields fixed
|
||||||
|
|
||||||
[GH:183](https://github.com/epics-base/epics-base/issues/183)
|
[GH:183](https://github.com/epics-base/epics-base/issues/183)
|
||||||
These were broken in a previous release, but now work again.
|
These were broken in a previous release, but now work again.
|
||||||
@@ -114,6 +800,15 @@ This was done to simplify the code and may have improved performance slightly fo
|
|||||||
|
|
||||||
Many of the built-in record types have had improvements to their documentation with additional fields added to the tables, rewrites of descriptions and links to other documents added or fixed.
|
Many of the built-in record types have had improvements to their documentation with additional fields added to the tables, rewrites of descriptions and links to other documents added or fixed.
|
||||||
|
|
||||||
|
### Submodule updates
|
||||||
|
|
||||||
|
The pvAccess module was updated to version 7.1.4:
|
||||||
|
|
||||||
|
- Changes to caProvider
|
||||||
|
- Resolve issues with pv structures that don't have a value field
|
||||||
|
- Add NULL checks for handling unusual structures
|
||||||
|
- Speed up channel creation when using large numbers of channels
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
## EPICS Release 7.0.6
|
## EPICS Release 7.0.6
|
||||||
@@ -124,7 +819,7 @@ These target architectures have been removed:
|
|||||||
|
|
||||||
+ darwin-ppc, darwin-ppcx86
|
+ darwin-ppc, darwin-ppcx86
|
||||||
+ linux-386, linux-486, linux-586, linux-686, linux-athlon (cross-build)
|
+ linux-386, linux-486, linux-586, linux-686, linux-athlon (cross-build)
|
||||||
+ linux-cris, linux-cris_v10, linux-cris_v32 (cross-build)
|
+ linux-cris, linux-cris\_v10, linux-cris\_v32 (cross-build)
|
||||||
+ RTEMS-at91rm9200ek, RTEMS-gen68360, RTEMS-mcp750, RTEMS-mvme167,
|
+ RTEMS-at91rm9200ek, RTEMS-gen68360, RTEMS-mcp750, RTEMS-mvme167,
|
||||||
RTEMS-psim (cross-build)
|
RTEMS-psim (cross-build)
|
||||||
|
|
||||||
@@ -142,9 +837,9 @@ running on RTEMS 5:
|
|||||||
|
|
||||||
- RTEMS-beagleboneblack
|
- RTEMS-beagleboneblack
|
||||||
- RTEMS-pc686
|
- RTEMS-pc686
|
||||||
- RTEMS-qoriq_e500 (MVME2500)
|
- RTEMS-qoriq\_e500 (MVME2500)
|
||||||
- RTEMS-xilinx_zynq_a9_qemu
|
- RTEMS-xilinx\_zynq\_a9\_qemu
|
||||||
- RTEMS-xilinx_zynq_zedboard
|
- RTEMS-xilinx\_zynq\_zedboard
|
||||||
|
|
||||||
The EPICS support for RTEMS 4 has always relied on RTEMS-specific
|
The EPICS support for RTEMS 4 has always relied on RTEMS-specific
|
||||||
kernel APIs which cannot be used on an SMP system, so a new port was
|
kernel APIs which cannot be used on an SMP system, so a new port was
|
||||||
@@ -156,7 +851,7 @@ to run `make distclean` if switching a single source tree from one
|
|||||||
to the other (both header files and dependency files are different
|
to the other (both header files and dependency files are different
|
||||||
between the two and must be cleaned out).
|
between the two and must be cleaned out).
|
||||||
|
|
||||||
The configuration variable RTEMS_VERSION in the EPICS config file
|
The configuration variable `RTEMS_VERSION` in the EPICS config file
|
||||||
`configure/os/CONFIG_SITE.Common.RTEMS` must be set to the full 3-
|
`configure/os/CONFIG_SITE.Common.RTEMS` must be set to the full 3-
|
||||||
part version number for RTEMS 4 releases, e.g. `4.9.1`, `4.10.2`
|
part version number for RTEMS 4 releases, e.g. `4.9.1`, `4.10.2`
|
||||||
but for RTEMS 5.1 and later it must only contain the major version
|
but for RTEMS 5.1 and later it must only contain the major version
|
||||||
@@ -354,6 +1049,39 @@ Test programs written directly in Perl as a `.plt` script should implement a
|
|||||||
similar timeout for themselves. The "netget" test in Base does this in a way
|
similar timeout for themselves. The "netget" test in Base does this in a way
|
||||||
that works on Windows as well as Unix-like hosts.
|
that works on Windows as well as Unix-like hosts.
|
||||||
|
|
||||||
|
### Submodule updates
|
||||||
|
|
||||||
|
The pvAccess module was updated to version 7.1.4:
|
||||||
|
|
||||||
|
- Changes
|
||||||
|
- Adjust argument parsing with pvput (Jesus Vasquez).
|
||||||
|
|
||||||
|
The pva2pva module was updated to version 1.3.1:
|
||||||
|
|
||||||
|
- Bug Fixes
|
||||||
|
- Correct handling for server side filters.
|
||||||
|
- Changes
|
||||||
|
- Syncing softMain.cpp with epics-base
|
||||||
|
|
||||||
|
The pvDatabase module was updated to version 4.6.0:
|
||||||
|
|
||||||
|
* Access Security is now supported.
|
||||||
|
* <b>special</b> has been revised and extended.
|
||||||
|
* addRecord, removeRecord, processRecord, and traceRecord are replaced by pvdbcr versions.
|
||||||
|
* <b>support</b> is DEPRECATED
|
||||||
|
|
||||||
|
The pvaClient module was updated to version 4.8.0:
|
||||||
|
|
||||||
|
* `PvaClientNTMultiData::getChannelChangeFlags` is a new method. It fixes
|
||||||
|
issue #66.
|
||||||
|
* Fix for issue #68. Both `PvaClientArray` and `PvaClientField` are not longer
|
||||||
|
present. Neither was previously implemented.
|
||||||
|
* Several public methods are now protected. They were never meant to be called
|
||||||
|
by clients.
|
||||||
|
* Issue #70 has been fixed.
|
||||||
|
* Changes was made to increase the performance of `pvaMultiChannel`.
|
||||||
|
* doxygen changes were made.
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
## EPICS Release 7.0.5
|
## EPICS Release 7.0.5
|
||||||
@@ -391,7 +1119,7 @@ compile device supports as loadable modules.
|
|||||||
### Priority inversion safe Posix mutexes
|
### Priority inversion safe Posix mutexes
|
||||||
|
|
||||||
On Posix systems, epicsMutex now support priority inheritance if available.
|
On Posix systems, epicsMutex now support priority inheritance if available.
|
||||||
The IOC needs to run with SCHED_FIFO engaged to use these.
|
The IOC needs to run with `SCHED_FIFO` engaged to use these.
|
||||||
Support for Posix implementations before POSIX.1-2001 (`_XOPEN_SOURCE < 500`,
|
Support for Posix implementations before POSIX.1-2001 (`_XOPEN_SOURCE < 500`,
|
||||||
glibc version < 2.3.3) has been dropped.
|
glibc version < 2.3.3) has been dropped.
|
||||||
|
|
||||||
@@ -409,10 +1137,10 @@ broken.
|
|||||||
|
|
||||||
This fixes [lauchpad bug #1896295](https://bugs.launchpad.net/bugs/1896295).
|
This fixes [lauchpad bug #1896295](https://bugs.launchpad.net/bugs/1896295).
|
||||||
|
|
||||||
### Support for Apple M1 (arm64) Processors
|
### Support for Apple M1/M2 (arm64) Processors
|
||||||
|
|
||||||
Thanks to Jeong Han Lee this release comes with build support for Apple's new
|
Thanks to Jeong Han Lee this release comes with build support for Apple's new
|
||||||
M1 CPUs running macOS, using the target name `darwin-aarch64`.
|
M1/M2 CPUs running macOS, using the target name `darwin-aarch64`.
|
||||||
|
|
||||||
It should also be possible to build universal binaries containing code for
|
It should also be possible to build universal binaries containing code for
|
||||||
both the Intel and arm64 processors under either target name: In the
|
both the Intel and arm64 processors under either target name: In the
|
||||||
@@ -524,14 +1252,14 @@ properly handle zero-length arrays. The `caget`, `caput` and `camonitor`
|
|||||||
client programs are known to work with empty arrays as long as they were
|
client programs are known to work with empty arrays as long as they were
|
||||||
built with this or a later version of EPICS.
|
built with this or a later version of EPICS.
|
||||||
|
|
||||||
#### Change to the db_access.h `dbr_size_n(TYPE, COUNT)` macro
|
#### Change to the db\_access.h `dbr_size_n(TYPE, COUNT)` macro
|
||||||
|
|
||||||
When called with COUNT=0 this macro no longer returns the number of bytes
|
When called with COUNT=0 this macro no longer returns the number of bytes
|
||||||
required for a scalar (1 element) but for an empty array (0 elements).
|
required for a scalar (1 element) but for an empty array (0 elements).
|
||||||
Make sure code that uses this doesn't call it with COUNT=0 when it really
|
Make sure code that uses this doesn't call it with COUNT=0 when it really
|
||||||
means COUNT=1.
|
means COUNT=1.
|
||||||
|
|
||||||
Note that the db_access.h header file is included by cadef.h so the change
|
Note that the db\_access.h header file is included by cadef.h so the change
|
||||||
can impact Channel Access client programs that use this macro.
|
can impact Channel Access client programs that use this macro.
|
||||||
|
|
||||||
#### Channel Access support for zero-length arrays
|
#### Channel Access support for zero-length arrays
|
||||||
@@ -641,6 +1369,35 @@ GNUmake added the directive `undefine` in version 3.82 to allow variables to
|
|||||||
be undefined. Support for this has been added to the EPICS Release file parser,
|
be undefined. Support for this has been added to the EPICS Release file parser,
|
||||||
so `undefine` can now be used in configure/RELEASE files to unset variables.
|
so `undefine` can now be used in configure/RELEASE files to unset variables.
|
||||||
|
|
||||||
|
|
||||||
|
### Submodule updates
|
||||||
|
|
||||||
|
The pvData module was updated to version 8.0.4:
|
||||||
|
|
||||||
|
- Incompatible changes
|
||||||
|
- Remove `ByteBuffer::align()`
|
||||||
|
- Compatible changes
|
||||||
|
- Deprecate `SerializableControl::alignBuffer()` and
|
||||||
|
`DeserializableControl::alignData()`
|
||||||
|
- `shared_vector_convert<>()` fix convert of empty, untyped, array
|
||||||
|
|
||||||
|
The pvAccess module was updated to version 7.1.3:
|
||||||
|
|
||||||
|
- Bug fixes
|
||||||
|
- Increase default TCP timeout to 40 seconds.
|
||||||
|
Applies a 4/3 multiplier on `$EPICS_PVA_CONN_TMO` for compatibility.
|
||||||
|
- CA Provider implementation restructured to simplify, reduce duplication
|
||||||
|
and fix issues #163 and #165.
|
||||||
|
- Changes
|
||||||
|
- Enable building of pvtools to all except vxWorks, RTEMS and iOS.
|
||||||
|
|
||||||
|
The pva2pva module was updated to version 1.3.0:
|
||||||
|
|
||||||
|
- Changes
|
||||||
|
- Add `dbLoadGroup()` iocsh function to read group JSON definitions
|
||||||
|
from a file. Mappings in files must refer to full record names
|
||||||
|
instead of fields. eg. 'recname.VAL' instead of 'VAL'.
|
||||||
|
|
||||||
-----
|
-----
|
||||||
|
|
||||||
## EPICS Release 7.0.4.1
|
## EPICS Release 7.0.4.1
|
||||||
@@ -706,7 +1463,7 @@ The following launchpad bugs have fixes included in this release:
|
|||||||
operators on aarch64
|
operators on aarch64
|
||||||
- [lp: 1853148](https://bugs.launchpad.net/bugs/1853148), mingw compiler
|
- [lp: 1853148](https://bugs.launchpad.net/bugs/1853148), mingw compiler
|
||||||
problem with printf/scanf formats
|
problem with printf/scanf formats
|
||||||
- [lp: 1852653](https://bugs.launchpad.net/bugs/1852653), USE_TYPED_DSET
|
- [lp: 1852653](https://bugs.launchpad.net/bugs/1852653), `USE_TYPED_DSET`
|
||||||
incompatible with C++
|
incompatible with C++
|
||||||
- [lp: 1862328](https://bugs.launchpad.net/bugs/1862328), Race condition on
|
- [lp: 1862328](https://bugs.launchpad.net/bugs/1862328), Race condition on
|
||||||
IOC start leaves rsrv unresponsive
|
IOC start leaves rsrv unresponsive
|
||||||
@@ -716,7 +1473,7 @@ The following launchpad bugs have fixes included in this release:
|
|||||||
- [lp: 1868680](https://bugs.launchpad.net/bugs/1868680), Access Security file
|
- [lp: 1868680](https://bugs.launchpad.net/bugs/1868680), Access Security file
|
||||||
reload (asInit) fails
|
reload (asInit) fails
|
||||||
|
|
||||||
### \*_API macros in EPICS headers
|
### `*_API` macros in EPICS headers
|
||||||
|
|
||||||
Internally, the Com and ca libraries now express dllimport/export (Windows)
|
Internally, the Com and ca libraries now express dllimport/export (Windows)
|
||||||
and symbol visibility (GCC) using library-specific macros (eg. `LIBCOM_API`)
|
and symbol visibility (GCC) using library-specific macros (eg. `LIBCOM_API`)
|
||||||
@@ -950,7 +1707,7 @@ The API functions `epicsGetExecDir()` and `epicsGetExecName()` are also
|
|||||||
added to `osiFileName.h` to provide runtime access to the directory or
|
added to `osiFileName.h` to provide runtime access to the directory or
|
||||||
filename of the executable with which the process was started.
|
filename of the executable with which the process was started.
|
||||||
|
|
||||||
### Decouple LINKER_USE_RPATH and STATIC_BUILD
|
### Decouple `LINKER_USE_RPATH` and `STATIC_BUILD`
|
||||||
|
|
||||||
Previously, setting `STATIC_BUILD=NO` implied `LINKER_USE_RPATH=NO`.
|
Previously, setting `STATIC_BUILD=NO` implied `LINKER_USE_RPATH=NO`.
|
||||||
This is no longer the case. Setting `LINKER_USE_RPATH=YES` will
|
This is no longer the case. Setting `LINKER_USE_RPATH=YES` will
|
||||||
@@ -1428,7 +2185,7 @@ editing and history. This functionality has now been restored, see Launchpad
|
|||||||
### Constant link types
|
### Constant link types
|
||||||
|
|
||||||
Constant links can now hold 64-bit integer values, either as scalars or
|
Constant links can now hold 64-bit integer values, either as scalars or
|
||||||
arrays. Only base 10 is supported by the JSON parser though, the JSON standard
|
arrays. Only base 10 is supported by the JSON parser though, the JSON standard
|
||||||
doesn't allow for hexadecimal numbers.
|
doesn't allow for hexadecimal numbers.
|
||||||
|
|
||||||
### Upgraded the YAJL JSON Library
|
### Upgraded the YAJL JSON Library
|
||||||
@@ -1529,7 +2286,7 @@ number instead, like this:
|
|||||||
Channel Access does not (and probably never will) directly support 64-bit
|
Channel Access does not (and probably never will) directly support 64-bit
|
||||||
integer types, so the new field types are presented to the CA server as
|
integer types, so the new field types are presented to the CA server as
|
||||||
`DBF_DOUBLE` values. This means that field values larger than 2^52
|
`DBF_DOUBLE` values. This means that field values larger than 2^52
|
||||||
(0x10_0000_0000_0000 = 4503599627370496) cannot be transported over Channel
|
(0x10\_0000\_0000\_0000 = 4503599627370496) cannot be transported over Channel
|
||||||
Access without their least significant bits being truncated. The EPICS V4
|
Access without their least significant bits being truncated. The EPICS V4
|
||||||
pvAccess network protocol _can_ transport 64-bit data types however, and a
|
pvAccess network protocol _can_ transport 64-bit data types however, and a
|
||||||
future release of the pvaSrv module will connect this ability to the fields of
|
future release of the pvaSrv module will connect this ability to the fields of
|
||||||
@@ -2026,6 +2783,17 @@ header and removed the need for dbScan.c to reach into the internals of its
|
|||||||
|
|
||||||
## Changes from the 3.15 branch since 3.15.9
|
## Changes from the 3.15 branch since 3.15.9
|
||||||
|
|
||||||
|
### Support for Apple M1/M2 (arm64) Processors
|
||||||
|
|
||||||
|
Thanks to Jeong Han Lee this release comes with build support for Apple's new
|
||||||
|
M1/M2 CPUs running macOS, using the target name `darwin-aarch64`.
|
||||||
|
|
||||||
|
### Set thread names on Windows
|
||||||
|
|
||||||
|
On MS Windows, epicsThread names are made available to the OS and debugger
|
||||||
|
using `SetThreadDescription()` if available as well as using the older
|
||||||
|
exception mechanism.
|
||||||
|
|
||||||
### Fix timers on MS Windows for non-EPICS threads
|
### Fix timers on MS Windows for non-EPICS threads
|
||||||
|
|
||||||
The waitable timer changes in 3.15.9 broke calls to `epicsThreadSleep()` and
|
The waitable timer changes in 3.15.9 broke calls to `epicsThreadSleep()` and
|
||||||
|
|||||||
@@ -1,74 +0,0 @@
|
|||||||
# Record Reference Documentation {#recordrefmanual}
|
|
||||||
|
|
||||||
The documentation below for the record types and menus included with Base was
|
|
||||||
converted from the old EPICS Wiki pages and updated. This list only includes the
|
|
||||||
record types supplied with Base. The first two links below are to an external
|
|
||||||
website where these original reference chapters are now being published.
|
|
||||||
|
|
||||||
* [Introduction to EPICS](https://docs.epics-controls.org/en/latest/guides/EPICS_Intro.html)
|
|
||||||
* [Process Database Concepts](https://docs.epics-controls.org/en/latest/guides/EPICS_Process_Database_Concepts.html)
|
|
||||||
* [Fields Common to All Record Types](dbCommonRecord.html)
|
|
||||||
* [Fields Common to Input Record Types](dbCommonInput.html)
|
|
||||||
* [Fields Common to Output Record Types](dbCommonOutput.html)
|
|
||||||
|
|
||||||
## Record Types
|
|
||||||
|
|
||||||
* [Analog Array Input Record (aai)](aaiRecord.html)
|
|
||||||
* [Analog Array Output Record (aao)](aaoRecord.html)
|
|
||||||
* [Analog Input Record (ai)](aiRecord.html)
|
|
||||||
* [Analog Output Record (ao)](aoRecord.html)
|
|
||||||
* [Array Subroutine Record (aSub)](aSubRecord.html)
|
|
||||||
* [Binary Input Record (bi)](biRecord.html)
|
|
||||||
* [Binary Output Record (bo)](boRecord.html)
|
|
||||||
* [Calculation Output Record (calcout)](calcoutRecord.html)
|
|
||||||
* [Calculation Record (calc)](calcRecord.html)
|
|
||||||
* [Compression Record (compress)](compressRecord.html)
|
|
||||||
* [Data Fanout Record (dfanout)](dfanoutRecord.html)
|
|
||||||
* [Event Record (event)](eventRecord.html)
|
|
||||||
* [Fanout Record (fanout)](fanoutRecord.html)
|
|
||||||
* [Histogram Record (histogram)](histogramRecord.html)
|
|
||||||
* [64bit Integer Input Record (int64in)](int64inRecord.html)
|
|
||||||
* [64bit Integer Output Record (int64out)](int64outRecord.html)
|
|
||||||
* [Long Input Record (longin)](longinRecord.html)
|
|
||||||
* [Long Output Record (longout)](longoutRecord.html)
|
|
||||||
* [Long String Input Record (lsi)](lsiRecord.html)
|
|
||||||
* [Long String Output Record (lso)](lsoRecord.html)
|
|
||||||
* [Multi-Bit Binary Input Direct Record (mbbiDirect)](mbbiDirectRecord.html)
|
|
||||||
* [Multi-Bit Binary Input Record (mbbi)](mbbiRecord.html)
|
|
||||||
* [Multi-Bit Binary Output Direct Record (mbboDirect)](mbboDirectRecord.html)
|
|
||||||
* [Multi-Bit Binary Output Record (mbbo)](mbboRecord.html)
|
|
||||||
* [Permissive Record (permissive)](permissiveRecord.html)
|
|
||||||
* [Printf Record (printf)](printfRecord.html)
|
|
||||||
* [Select Record (sel)](selRecord.html)
|
|
||||||
* [Sequence Record (seq)](seqRecord.html)
|
|
||||||
* [State Record (state)](stateRecord.html)
|
|
||||||
* [String Input Record (stringin)](stringinRecord.html)
|
|
||||||
* [String Output Record (stringout)](stringoutRecord.html)
|
|
||||||
* [Sub-Array Record (subArray)](subArrayRecord.html)
|
|
||||||
* [Subroutine Record (sub)](subRecord.html)
|
|
||||||
* [Waveform Record (waveform)](waveformRecord.html)
|
|
||||||
|
|
||||||
## Menu Definitions
|
|
||||||
|
|
||||||
* [Alarm Severity Menu](menuAlarmSevr.html)
|
|
||||||
* [Alarm Status Menu](menuAlarmStat.html)
|
|
||||||
* [Analog Conversions Menu](menuConvert.html)
|
|
||||||
* [Field Type Menu](menuFtype.html)
|
|
||||||
* [Invalid Value Output Action Menu](menuIvoa.html)
|
|
||||||
* [Output Mode Select Menu](menuOmsl.html)
|
|
||||||
* [Process at iocInit Menu](menuPini.html)
|
|
||||||
* [Post Monitors Menu](menuPost.html)
|
|
||||||
* [Priority Menu](menuPriority.html)
|
|
||||||
* [Scan Menu](menuScan.html)
|
|
||||||
* [Simulation Mode Menu](menuSimm.html)
|
|
||||||
* [Yes/No Menu](menuYesNo.html)
|
|
||||||
|
|
||||||
## Corrections and Updates
|
|
||||||
|
|
||||||
Corrections to these documents can be submitted as patch files to the EPICS core
|
|
||||||
developers, or as merge requests or pull requests to the 7.0 branch of Base.
|
|
||||||
The document sources can be found in the `modules/database/src/std/rec` and
|
|
||||||
`modules/database/src/ioc/db` directories in files with extension `.dbd.pod`.
|
|
||||||
The documentation source format is a combination of the EPICS DBD file format
|
|
||||||
with an extended version of Perl's POD (plain old documentation); run `perldoc
|
|
||||||
pod` for details of POD.
|
|
||||||
@@ -48,14 +48,14 @@ everything that has to be done since it's so easy to miss steps.</p>
|
|||||||
<p>The following roles are used below:</p>
|
<p>The following roles are used below:</p>
|
||||||
|
|
||||||
<dl>
|
<dl>
|
||||||
<dt><strong>Release Manager</strong> ()</dt>
|
<dt><strong>Release Manager</strong></dt>
|
||||||
<dd>Responsible for managing and tagging the release</dd>
|
<dd>Responsible for managing and tagging the release</dd>
|
||||||
<dt><strong>Platform Developers</strong> (informal)</dt>
|
<dt><strong>Core Developers</strong></dt>
|
||||||
<dd>Responsible for individual operating system platforms</dd>
|
<dd>Responsible for maintaining the EPICS software</dd>
|
||||||
<dt><strong>Application Developers</strong></dt>
|
<dt><strong>Application Developers</strong></dt>
|
||||||
<dd>Responsible for support modules that depend on EPICS Base.</dd>
|
<dd>Responsible for support modules that depend on EPICS Base.</dd>
|
||||||
<dt><strong>Website Editor</strong> (Andrew Johnson)</dt>
|
<dt><strong>Website Editors</strong></dt>
|
||||||
<dd>Responsible for the EPICS website</dd>
|
<dd>Responsible for the EPICS websites</dd>
|
||||||
</dl>
|
</dl>
|
||||||
|
|
||||||
<form>
|
<form>
|
||||||
@@ -72,23 +72,22 @@ everything that has to be done since it's so easy to miss steps.</p>
|
|||||||
<tr>
|
<tr>
|
||||||
<td> </td>
|
<td> </td>
|
||||||
<td>Release Manager</td>
|
<td>Release Manager</td>
|
||||||
<td>Email all developers about the upcoming release and ask for a list
|
<td>Notify core developers about the upcoming release and ask about any
|
||||||
of remaining tasks that must be finished.</td>
|
remaining tasks that must be finished.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td> </td>
|
<td> </td>
|
||||||
<td>All developers</td>
|
<td>All developers</td>
|
||||||
<td>Check the bug tracker for any outstanding items and handle
|
<td>Check the bug tracker for any outstanding items and handle
|
||||||
appropriately. All bugs that have been fixed should have been marked
|
appropriately.</td>
|
||||||
as Fix Committed.</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td> </td>
|
<td> </td>
|
||||||
<td>Release Manager</td>
|
<td>Release Manager</td>
|
||||||
<td>Set the Feature Freeze date, by which time all Git commits for
|
<td>Set a Feature Freeze date, by which time all Git branches for
|
||||||
enhancements and new functionality should have been completed. After
|
enhancements and new functionality should have been merged. After this
|
||||||
this date, commits should only be made to fix problems that show up
|
date, commits and merges should only be made to fix problems that show
|
||||||
during testing.</td>
|
up during testing.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td> </td>
|
<td> </td>
|
||||||
@@ -97,6 +96,7 @@ everything that has to be done since it's so easy to miss steps.</p>
|
|||||||
<td>Ensure that documentation will be updated before the release date:
|
<td>Ensure that documentation will be updated before the release date:
|
||||||
<ul>
|
<ul>
|
||||||
<li>Release Notes</li>
|
<li>Release Notes</li>
|
||||||
|
<li>Doxygen annotations</li>
|
||||||
<li>Other documents</li>
|
<li>Other documents</li>
|
||||||
</ul>
|
</ul>
|
||||||
</td>
|
</td>
|
||||||
@@ -104,13 +104,8 @@ everything that has to be done since it's so easy to miss steps.</p>
|
|||||||
<tr>
|
<tr>
|
||||||
<td> </td>
|
<td> </td>
|
||||||
<td>Release Manager</td>
|
<td>Release Manager</td>
|
||||||
<td>Review and update this checklist for the upcoming release.</td>
|
<td>Review and update this checklist for the upcoming release.
|
||||||
</tr>
|
Update the release version number in the tags and messages below.</td>
|
||||||
<tr>
|
|
||||||
<td> </td>
|
|
||||||
<td>Release Manager</td>
|
|
||||||
<td>Create a release milestone on Launchpad. If a target release date is
|
|
||||||
known set "Date Targeted" to the expected release date.</td>
|
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="3">Testing</th>
|
<th colspan="3">Testing</th>
|
||||||
@@ -118,7 +113,7 @@ everything that has to be done since it's so easy to miss steps.</p>
|
|||||||
<tr>
|
<tr>
|
||||||
<td> </td>
|
<td> </td>
|
||||||
<td>Platform Developers</td>
|
<td>Platform Developers</td>
|
||||||
<td>Run the built-in test programs on all available host platforms using
|
<td>Run the internal test programs on all available host platforms using
|
||||||
<blockquote><tt>
|
<blockquote><tt>
|
||||||
make -s runtests
|
make -s runtests
|
||||||
</tt></blockquote></td>
|
</tt></blockquote></td>
|
||||||
@@ -156,6 +151,7 @@ everything that has to be done since it's so easy to miss steps.</p>
|
|||||||
<td>Check that documentation has been updated:
|
<td>Check that documentation has been updated:
|
||||||
<ul>
|
<ul>
|
||||||
<li>Release Notes</li>
|
<li>Release Notes</li>
|
||||||
|
<li>Doxygen annotations</li>
|
||||||
<li>Other documents</li>
|
<li>Other documents</li>
|
||||||
</ul>
|
</ul>
|
||||||
</td>
|
</td>
|
||||||
@@ -167,8 +163,8 @@ everything that has to be done since it's so easy to miss steps.</p>
|
|||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><input type="checkbox"></td>
|
<td><input type="checkbox"></td>
|
||||||
<td>Release Manager</td>
|
<td>Core Developers</td>
|
||||||
<td>Obtain a positive <q>Ok to release</q> from developers.</td>
|
<td>Reach a consensus that the software is ready to release.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="3">Creating the final release version</th>
|
<th colspan="3">Creating the final release version</th>
|
||||||
@@ -180,35 +176,59 @@ everything that has to be done since it's so easy to miss steps.</p>
|
|||||||
<p><b>For each external submodule</b> in turn (assuming it has not been
|
<p><b>For each external submodule</b> in turn (assuming it has not been
|
||||||
tagged yet):</p>
|
tagged yet):</p>
|
||||||
<ol>
|
<ol>
|
||||||
|
<li><tt>git grep UNRELEASED</tt> and insert the module version to any
|
||||||
|
doxygen annotations that have a <tt>@since UNRELEASED</tt> comment.
|
||||||
|
Commit (don't push yet).</li>
|
||||||
|
|
||||||
<li>Check that the module's Release Notes have been updated to cover
|
<li>Check that the module's Release Notes have been updated to cover
|
||||||
all changes; add items as necessary, and set the module version
|
all changes; add items as necessary, and set the module version
|
||||||
number and release date if appropriate. Convert to HTML and view in
|
number and release date if appropriate.
|
||||||
a browser to check the formatting:
|
Commit these changes (don't push).</li>
|
||||||
<blockquote><tt>
|
|
||||||
cd base-7.0/modules/<module>/documentation<br />
|
|
||||||
pandoc -f gfm -t html -o RELEASE_NOTES.html RELEASE_NOTES.md
|
|
||||||
</tt></blockquote>
|
|
||||||
Commit changes (don't push yet).</li>
|
|
||||||
|
|
||||||
<li>Edit the module's release version file
|
<li>Edit the module's release version file
|
||||||
<tt>configure/CONFIG_<i>module</i>_VERSION</tt> and its top-level
|
<tt>configure/CONFIG_<i>module</i>_VERSION</tt> and the
|
||||||
<tt>Doxyfile</tt>; set the <tt>DEVELOPMENT_FLAG</tt> value to 0 and
|
<tt>Doxyfile</tt>s in the top-level and/or documentation
|
||||||
remove <tt>-dev</tt> from the <tt>PROJECT_NUMBER</tt> string.
|
directories. In these, set <tt>DEVELOPMENT_FLAG</tt> to 0 and remove
|
||||||
Commit changes (don't push).</li>
|
<tt>-dev</tt> from the <tt>PROJECT_NUMBER</tt> string. Commit these
|
||||||
|
changes (don't push):
|
||||||
<li>Tag the module:
|
|
||||||
<blockquote><tt>
|
<blockquote><tt>
|
||||||
git tag -m 'ANJ: Tag for EPICS 7.0.6.1' <module-version>
|
git ci -m 'Final commit for <module-version>'
|
||||||
</tt></blockquote>
|
</tt></blockquote>
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
|
<li>Tag the module:
|
||||||
|
<blockquote><tt>
|
||||||
|
git tag -m 'ANJ: Tag for EPICS 7.0.8.2' <module-version>
|
||||||
|
</tt></blockquote>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li>Generate documentation or Release Notes using one of these:
|
||||||
|
<ul>
|
||||||
|
<li>For older modules with a RELEASE_NOTES.md file convert it to
|
||||||
|
HTML and view in a browser to check the formatting as follows:
|
||||||
|
<blockquote><tt>
|
||||||
|
cd base-7.0/modules/<module>/documentation<br />
|
||||||
|
pandoc -f gfm -t html -o RELEASE_NOTES.html RELEASE_NOTES.md
|
||||||
|
</tt></blockquote>
|
||||||
|
|
||||||
|
<li>For newer modules with release_notes.dox file, generate the
|
||||||
|
new github-pages website as follows:
|
||||||
|
<blockquote><tt>
|
||||||
|
cd base-7.0/modules/<module>/documentation<br />
|
||||||
|
make commit
|
||||||
|
git push --force upstream gh-pages
|
||||||
|
</tt></blockquote>
|
||||||
|
<i>Q: Delay this <tt>git push</tt> until later?</i></li>
|
||||||
|
</ul></li>
|
||||||
|
|
||||||
<li>Update the git submodule on the Base-7.0 branch to the
|
<li>Update the git submodule on the Base-7.0 branch to the
|
||||||
newly-tagged version, but don't commit yet:
|
newly-tagged version, check the module's status matches the tag:
|
||||||
<blockquote><tt>
|
<blockquote><tt>
|
||||||
cd base-7.0/modules<br />
|
cd base-7.0/modules<br />
|
||||||
git add <module><br />
|
git add <module><br />
|
||||||
git submodule status --cached
|
git submodule status --cached
|
||||||
</tt></blockquote>
|
</tt></blockquote>
|
||||||
|
Don't commit the submodule updates yet.
|
||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li>Edit the module's release version file
|
<li>Edit the module's release version file
|
||||||
@@ -218,7 +238,8 @@ everything that has to be done since it's so easy to miss steps.</p>
|
|||||||
<tt>PROJECT_NUMBER</tt> string, appending <tt>-dev</tt> to the new
|
<tt>PROJECT_NUMBER</tt> string, appending <tt>-dev</tt> to the new
|
||||||
module version number. Commit changes.</li>
|
module version number. Commit changes.</li>
|
||||||
|
|
||||||
<li>Push commits and the new tag to the submodule's GitHub repository:
|
<li>Push commits and the new tag to the submodule's GitHub repository
|
||||||
|
(assumed to be the <tt>upstream</tt> remote):
|
||||||
<blockquote><tt>
|
<blockquote><tt>
|
||||||
cd base-7.0/modules/<module><br />
|
cd base-7.0/modules/<module><br />
|
||||||
git push --follow-tags upstream master
|
git push --follow-tags upstream master
|
||||||
@@ -267,10 +288,9 @@ everything that has to be done since it's so easy to miss steps.</p>
|
|||||||
<td>Tag the epics-base module in Git:
|
<td>Tag the epics-base module in Git:
|
||||||
<blockquote><tt>
|
<blockquote><tt>
|
||||||
cd base-7.0<br />
|
cd base-7.0<br />
|
||||||
git tag -m 'ANJ: Tagged for release' R7.0.6.1
|
git tag -m 'ANJ: Tagged for release' R7.0.8.2
|
||||||
</tt></blockquote>
|
</tt></blockquote>
|
||||||
<p>Don't push anything to the Launchpad repository
|
<p>Don't push to GitHub yet.</p>
|
||||||
yet.</p>
|
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
@@ -302,12 +322,12 @@ everything that has to be done since it's so easy to miss steps.</p>
|
|||||||
files and directories that are only used for continuous integration:
|
files and directories that are only used for continuous integration:
|
||||||
<blockquote><tt>
|
<blockquote><tt>
|
||||||
cd base-7.0<br />
|
cd base-7.0<br />
|
||||||
./.tools/make-tar.sh R7.0.6.1 ../base-7.0.6.1.tar.gz base-7.0.6.1/
|
./.tools/make-tar.sh R7.0.8.2 ../base-7.0.8.2.tar.gz base-7.0.8.2/
|
||||||
</tt></blockquote>
|
</tt></blockquote>
|
||||||
Create a GPG signature file of the tarfile as follows:
|
Create a GPG signature file of the tarfile as follows:
|
||||||
<blockquote><tt>
|
<blockquote><tt>
|
||||||
cd ..<br />
|
cd ..<br />
|
||||||
gpg --armor --sign --detach-sig base-7.0.6.1.tar.gz
|
gpg --armor --sign --detach-sig base-7.0.8.2.tar.gz
|
||||||
</tt></blockquote>
|
</tt></blockquote>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -315,8 +335,9 @@ everything that has to be done since it's so easy to miss steps.</p>
|
|||||||
<td><input type="checkbox"></td>
|
<td><input type="checkbox"></td>
|
||||||
<td>Release Manager</td>
|
<td>Release Manager</td>
|
||||||
<td>Test the tar file by extracting its contents and building it on at
|
<td>Test the tar file by extracting its contents and building it on at
|
||||||
least one supported platform. When this succeeds the commits and new git
|
least one supported platform. If this succeeds the commits and new git
|
||||||
tag can be pushed to the Launchpad repository:
|
tag can be pushed to the GitHub repository's 7.0 branch (assumed to be
|
||||||
|
the <tt>upstream</tt> remote):
|
||||||
<blockquote><tt>
|
<blockquote><tt>
|
||||||
git push --follow-tags upstream 7.0
|
git push --follow-tags upstream 7.0
|
||||||
</tt></blockquote>
|
</tt></blockquote>
|
||||||
@@ -364,7 +385,7 @@ everything that has to be done since it's so easy to miss steps.</p>
|
|||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="3">Publish to epics-controls</th>
|
<th colspan="3">Publish to epics-controls.org</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><input type="checkbox"></td>
|
<td><input type="checkbox"></td>
|
||||||
@@ -372,7 +393,7 @@ everything that has to be done since it's so easy to miss steps.</p>
|
|||||||
<td>Upload the tar file and its <tt>.asc</tt> signature file to the
|
<td>Upload the tar file and its <tt>.asc</tt> signature file to the
|
||||||
epics-controls web-server.
|
epics-controls web-server.
|
||||||
<blockquote><tt>
|
<blockquote><tt>
|
||||||
scp base-7.0.6.1.tar.gz base-7.0.6.1.tar.gz.asc epics-controls:download/base<br />
|
scp base-7.0.8.2.tar.gz base-7.0.8.2.tar.gz.asc epics-controls:download/base<br />
|
||||||
</tt></blockquote>
|
</tt></blockquote>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -389,22 +410,22 @@ everything that has to be done since it's so easy to miss steps.</p>
|
|||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
<th colspan="3">Publish to Launchpad</th>
|
<th colspan="3">Publish to GitHub</th>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><input type="checkbox"></td>
|
<td><input type="checkbox"></td>
|
||||||
<td>Release Manager</td>
|
<td>Release Manager</td>
|
||||||
<td>Go to the Launchpad milestone for this release. Click the Create
|
<td>Go to the GitHub
|
||||||
release button and add the release date. Put a URL for the release page
|
<a href="https://github.com/epics-base/epics-base/releases/new?tag=R7.0.8.2">
|
||||||
in the Release notes box, and click the Create release button. Upload
|
Create release from tag R7.0.8.2</a> page.
|
||||||
the tar file and its <tt>.asc</tt> signature file to the new Launchpad
|
Upload the tar file and its <tt>.asc</tt> signature file to the new
|
||||||
release page.</td>
|
GitHub release page.</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td><input type="checkbox"></td>
|
<td><input type="checkbox"></td>
|
||||||
<td>Release Manager</td>
|
<td>Release Manager</td>
|
||||||
<td>Find all Launchpad bug reports with the status Fix Committed which
|
<td>We used to close out bug reports in Launchpad at release-time, this
|
||||||
have been fixed in this release and mark them Fix Released.</td>
|
would be the time to do that if we have an equivalent on GitHub.</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
||||||
<tr>
|
<tr>
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
#!/bin/sh
|
|
||||||
set -e -x
|
|
||||||
# Usage: commit-gh <sub-directory-prefix> <files...>
|
|
||||||
#
|
|
||||||
# Creates a commit containing only the files in the sub-directory provided as an argument
|
|
||||||
#
|
|
||||||
# Does not disturb the working copy or index
|
|
||||||
|
|
||||||
prefix="$1"
|
|
||||||
shift
|
|
||||||
|
|
||||||
# Commit to this branch
|
|
||||||
BRANCH=refs/heads/gh-pages
|
|
||||||
|
|
||||||
# Use the main branch description as the gh-pages commit message
|
|
||||||
MSG=`git describe --tags --always`
|
|
||||||
|
|
||||||
# Scratch space
|
|
||||||
TDIR=`mktemp -d -p $PWD`
|
|
||||||
|
|
||||||
# Automatic cleanup of scratch space
|
|
||||||
trap 'rm -rf $TDIR' INT TERM QUIT EXIT
|
|
||||||
|
|
||||||
export GIT_INDEX_FILE="$TDIR/index"
|
|
||||||
|
|
||||||
# Add listed files to a new (empty) index
|
|
||||||
git update-index --add "$@"
|
|
||||||
|
|
||||||
# Write the index into the repo, get tree hash
|
|
||||||
TREE=`git write-tree --prefix="$prefix"`
|
|
||||||
|
|
||||||
echo "TREE $TREE"
|
|
||||||
git cat-file -p $TREE
|
|
||||||
|
|
||||||
# Create a commit with our new tree
|
|
||||||
# Reference current branch head as parent (if any)
|
|
||||||
CMT=`git commit-tree -m "$MSG" $TREE`
|
|
||||||
|
|
||||||
echo "COMMIT $CMT"
|
|
||||||
git cat-file -p $CMT
|
|
||||||
|
|
||||||
# Update the branch with the new commit tree hash
|
|
||||||
git update-ref $BRANCH $CMT
|
|
||||||
|
|
||||||
echo "Done"
|
|
||||||
130
documentation/conf.py
Normal file
130
documentation/conf.py
Normal file
@@ -0,0 +1,130 @@
|
|||||||
|
# Configuration file for the Sphinx documentation builder.
|
||||||
|
#
|
||||||
|
# This file only contains a selection of the most common options. For a full
|
||||||
|
# list see the documentation:
|
||||||
|
# http://www.sphinx-doc.org/en/master/config
|
||||||
|
|
||||||
|
# -- Path setup --------------------------------------------------------------
|
||||||
|
|
||||||
|
# If extensions (or modules to document with autodoc) are in another directory,
|
||||||
|
# add these directories to sys.path here. If the directory is relative to the
|
||||||
|
# documentation root, use os.path.abspath to make it absolute, like shown here.
|
||||||
|
#
|
||||||
|
import os
|
||||||
|
import sys
|
||||||
|
|
||||||
|
sys.path.insert(0, os.path.abspath("."))
|
||||||
|
|
||||||
|
# -- Project information -----------------------------------------------------
|
||||||
|
|
||||||
|
project = "EPICS Base Documentation"
|
||||||
|
copyright = "EPICS Controls"
|
||||||
|
author = "The EPICS Collaboration"
|
||||||
|
|
||||||
|
# -- General configuration ---------------------------------------------------
|
||||||
|
|
||||||
|
# Add any Sphinx extension module names here, as strings. They can be
|
||||||
|
# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom
|
||||||
|
# ones.
|
||||||
|
|
||||||
|
extensions = [
|
||||||
|
"hoverxref.extension",
|
||||||
|
"breathe",
|
||||||
|
"sphinx.ext.mathjax",
|
||||||
|
"sphinx.ext.ifconfig",
|
||||||
|
"sphinx.ext.graphviz",
|
||||||
|
"sphinx_copybutton",
|
||||||
|
"sphinx.ext.intersphinx",
|
||||||
|
'myst_parser',
|
||||||
|
]
|
||||||
|
|
||||||
|
# Setup the breathe extension
|
||||||
|
breathe_projects = {"epics-base": "xml"}
|
||||||
|
|
||||||
|
breathe_default_project = "epics-base"
|
||||||
|
|
||||||
|
# Tell sphinx what the primary language being documented is.
|
||||||
|
primary_domain = "cpp"
|
||||||
|
|
||||||
|
# Tell sphinx what the pygments highlight language should be.
|
||||||
|
highlight_language = "cpp"
|
||||||
|
|
||||||
|
# Add any paths that contain templates here, relative to this directory.
|
||||||
|
# templates_path = ()
|
||||||
|
|
||||||
|
# List of patterns, relative to source directory, that match files and
|
||||||
|
# directories to ignore when looking for source files.
|
||||||
|
# This pattern also affects html_static_path and html_extra_path.
|
||||||
|
exclude_patterns = ["_build", "Thumbs.db", ".DS_Store", "O.*", "venv"]
|
||||||
|
|
||||||
|
# Intersphinx links to subprojects
|
||||||
|
intersphinx_mapping = {
|
||||||
|
"epics": ("https://docs.epics-controls.org/en/latest/", None),
|
||||||
|
}
|
||||||
|
intersphinx_disabled_reftypes = ["*"]
|
||||||
|
hoverxref_role_types = {
|
||||||
|
"hoverxref": "tooltip",
|
||||||
|
"ref": "modal",
|
||||||
|
"confval": "tooltip",
|
||||||
|
"mod": "modal",
|
||||||
|
"class": "modal",
|
||||||
|
"obj": "tooltip",
|
||||||
|
}
|
||||||
|
|
||||||
|
hoverxref_intersphinx_types = {
|
||||||
|
"readthedocs": "modal",
|
||||||
|
"sphinx": "tooltip",
|
||||||
|
}
|
||||||
|
|
||||||
|
hoverxref_domains = [
|
||||||
|
"py",
|
||||||
|
]
|
||||||
|
|
||||||
|
# Enabled Markdown extensions.
|
||||||
|
# See here for what they do:
|
||||||
|
# https://myst-parser.readthedocs.io/en/latest/syntax/optional.html
|
||||||
|
myst_enable_extensions = [
|
||||||
|
"amsmath",
|
||||||
|
"colon_fence",
|
||||||
|
"deflist",
|
||||||
|
"dollarmath",
|
||||||
|
"fieldlist",
|
||||||
|
"html_image",
|
||||||
|
"replacements",
|
||||||
|
"smartquotes",
|
||||||
|
"strikethrough",
|
||||||
|
"tasklist",
|
||||||
|
]
|
||||||
|
|
||||||
|
# Allows auto-generated header anchors:
|
||||||
|
# https://myst-parser.readthedocs.io/en/latest/syntax/optional.html#auto-generated-header-anchors
|
||||||
|
myst_heading_anchors = 4
|
||||||
|
|
||||||
|
|
||||||
|
# -- Options for HTML output -------------------------------------------------
|
||||||
|
|
||||||
|
# The theme to use for HTML and HTML Help pages. See the documentation for
|
||||||
|
# a list of builtin themes.
|
||||||
|
#
|
||||||
|
html_theme = "sphinx_rtd_theme"
|
||||||
|
|
||||||
|
|
||||||
|
# Add any paths that contain custom static files (such as style sheets) here,
|
||||||
|
# relative to this directory. They are copied after the builtin static files,
|
||||||
|
# so a file named "default.css" will overwrite the builtin "default.css".
|
||||||
|
# html_static_path = ['_static']
|
||||||
|
|
||||||
|
# html_css_files = [
|
||||||
|
# 'css/custom.css',
|
||||||
|
# ]
|
||||||
|
|
||||||
|
master_doc = "index"
|
||||||
|
|
||||||
|
# html_theme_options = {
|
||||||
|
# 'logo_only': True,
|
||||||
|
# }
|
||||||
|
# html_logo = "images/EPICS_white_logo_v02.png"
|
||||||
|
|
||||||
|
# html_extra_path = ['../html']
|
||||||
|
|
||||||
|
# Breathe directives
|
||||||
7
documentation/database-API.rst
Normal file
7
documentation/database-API.rst
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
IOC Database C/C++ APIs
|
||||||
|
=======================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
:caption: IOC Header Files
|
||||||
|
|
||||||
30
documentation/index.rst
Normal file
30
documentation/index.rst
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
EPICS Base Documentation
|
||||||
|
========================
|
||||||
|
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:hidden:
|
||||||
|
|
||||||
|
EPICS Documentation Index <https://docs.epics-controls.org/en/latest/>
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
:caption: General Information
|
||||||
|
|
||||||
|
README
|
||||||
|
RELEASE_NOTES
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 2
|
||||||
|
:caption: IOC Component Reference
|
||||||
|
|
||||||
|
ComponentReference
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
:caption: C/C++ Headers
|
||||||
|
|
||||||
|
libcom-api
|
||||||
|
database-api
|
||||||
|
record-api
|
||||||
|
menu-api
|
||||||
7
documentation/libcom-API.rst
Normal file
7
documentation/libcom-API.rst
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
Common Library C/C++ APIs
|
||||||
|
=========================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
:caption: LibCom Header Files
|
||||||
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
/**
|
|
||||||
@mainpage EPICS Base
|
|
||||||
|
|
||||||
Documentation index
|
|
||||||
|
|
||||||
@li @ref releasenotes
|
|
||||||
@li @ref install
|
|
||||||
@li @ref recordrefmanual
|
|
||||||
@li <a href="CAref.html">Channel Access Reference Manual</a>
|
|
||||||
@li <a href="filters.html">Server Side Filters Reference</a>
|
|
||||||
@li <a href="msi.html">msi: Macro Substitution and Include Tool</a>
|
|
||||||
@li <a href="links.html">JSON Link Types</a>
|
|
||||||
@li <a href="CA.html">Perl 5 Interface to Channel Access</a>
|
|
||||||
|
|
||||||
*/
|
|
||||||
7
documentation/menu-API.rst
Normal file
7
documentation/menu-API.rst
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
C/C++ Headers from Menus
|
||||||
|
========================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
:caption: Generated Menu Header Files
|
||||||
|
|
||||||
7
documentation/record-API.rst
Normal file
7
documentation/record-API.rst
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
C/C++ Headers from Record Types
|
||||||
|
===============================
|
||||||
|
|
||||||
|
.. toctree::
|
||||||
|
:maxdepth: 1
|
||||||
|
:caption: Generated Record Header Files
|
||||||
|
|
||||||
6
documentation/requirements.txt
Normal file
6
documentation/requirements.txt
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
sphinx==7.2.6
|
||||||
|
myst-parser==2.0.0
|
||||||
|
breathe==4.35.0
|
||||||
|
sphinx_copybutton==0.5.2
|
||||||
|
sphinx-hoverxref==1.3.0
|
||||||
|
sphinx-rtd-theme==2.0.0
|
||||||
@@ -2,6 +2,16 @@
|
|||||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||||
# in file LICENSE that is included with this distribution.
|
# in file LICENSE that is included with this distribution.
|
||||||
#*************************************************************************
|
#*************************************************************************
|
||||||
|
#
|
||||||
|
# modules/CONFIG_SITE.local
|
||||||
|
#
|
||||||
|
# Despite the .local in its name, this file *is* included in EPICS Base
|
||||||
|
# sources and should *not* be modified by sites. This trick is necessary
|
||||||
|
# to allow external submodules to be placed inside the modules directory
|
||||||
|
# without having to modify them, as long as their configure/CONFIG_SITE
|
||||||
|
# file includes the standard line
|
||||||
|
# -include $(TOP)/../CONFIG_SITE.local
|
||||||
|
# that causes this file to be read in during submodule builds.
|
||||||
|
|
||||||
# The name our submodules know us by:
|
# The name our submodules know us by:
|
||||||
PARENT_MODULE = EPICS_BASE
|
PARENT_MODULE = EPICS_BASE
|
||||||
|
|||||||
@@ -34,9 +34,6 @@ pvDatabase_DEPEND_DIRS = pvAccess
|
|||||||
SUBMODULES += pva2pva
|
SUBMODULES += pva2pva
|
||||||
pva2pva_DEPEND_DIRS = pvAccess
|
pva2pva_DEPEND_DIRS = pvAccess
|
||||||
|
|
||||||
SUBMODULES += example
|
|
||||||
example_DEPEND_DIRS = pva2pva pvaClient
|
|
||||||
|
|
||||||
# Allow sites to add extra submodules
|
# Allow sites to add extra submodules
|
||||||
-include Makefile.local
|
-include Makefile.local
|
||||||
|
|
||||||
|
|||||||
@@ -118,7 +118,6 @@ EXPAND_VARS = INSTALL_BIN=$(FINAL_LOCATION)/bin/$(T_A)
|
|||||||
SRC_DIRS += $(CURDIR)/test
|
SRC_DIRS += $(CURDIR)/test
|
||||||
PROD_HOST += ca_test
|
PROD_HOST += ca_test
|
||||||
ca_test_SRCS = ca_test_main.c ca_test.c
|
ca_test_SRCS = ca_test_main.c ca_test.c
|
||||||
ca_test_LIBS = ca Com
|
|
||||||
ca_test_SYS_LIBS_WIN32 = ws2_32 advapi32 user32
|
ca_test_SYS_LIBS_WIN32 = ws2_32 advapi32 user32
|
||||||
|
|
||||||
OBJS_vxWorks += ca_test
|
OBJS_vxWorks += ca_test
|
||||||
|
|||||||
@@ -2575,7 +2575,8 @@ void monitorUpdateTest ( chid chan, unsigned interestLevel )
|
|||||||
SEVCHK ( ca_get ( DBR_FLOAT, chan, &temp ), NULL );
|
SEVCHK ( ca_get ( DBR_FLOAT, chan, &temp ), NULL );
|
||||||
SEVCHK ( ca_pend_io ( timeoutToPendIO ), NULL );
|
SEVCHK ( ca_pend_io ( timeoutToPendIO ), NULL );
|
||||||
|
|
||||||
/* printf ( "flow control bypassed %u events\n", flowCtrlCount ); */
|
if (0)
|
||||||
|
printf ( "flow control bypassed %u events\n", flowCtrlCount );
|
||||||
|
|
||||||
showProgressEnd ( interestLevel );
|
showProgressEnd ( interestLevel );
|
||||||
}
|
}
|
||||||
@@ -3395,7 +3396,7 @@ void verifyContextRundownChanStillExist (
|
|||||||
showProgressEnd ( interestLevel );
|
showProgressEnd ( interestLevel );
|
||||||
}
|
}
|
||||||
|
|
||||||
int acctst ( const char * pName, unsigned interestLevel, unsigned channelCount,
|
void acctst ( const char * pName, unsigned interestLevel, unsigned channelCount,
|
||||||
unsigned repetitionCount, enum ca_preemptive_callback_select select )
|
unsigned repetitionCount, enum ca_preemptive_callback_select select )
|
||||||
{
|
{
|
||||||
chid chan;
|
chid chan;
|
||||||
@@ -3548,8 +3549,6 @@ int acctst ( const char * pName, unsigned interestLevel, unsigned channelCount,
|
|||||||
printf ( "\nTest Complete\n" );
|
printf ( "\nTest Complete\n" );
|
||||||
|
|
||||||
epicsExit ( EXIT_SUCCESS );
|
epicsExit ( EXIT_SUCCESS );
|
||||||
|
|
||||||
return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,13 @@ static const iocshArg *acctstArgs[] =
|
|||||||
&acctstArg3,
|
&acctstArg3,
|
||||||
&acctstArg4
|
&acctstArg4
|
||||||
};
|
};
|
||||||
static const iocshFuncDef acctstFuncDef = {"acctst", 5, acctstArgs};
|
static const iocshFuncDef acctstFuncDef = {
|
||||||
|
"acctst",
|
||||||
|
5,
|
||||||
|
acctstArgs,
|
||||||
|
"Execute a Channel Access regression test.\n\n"
|
||||||
|
"For more information, see the 'acctst' documentation in the Channel Access reference.\n",
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
/* Wrapper called by iocsh, selects the argument types that print needs */
|
/* Wrapper called by iocsh, selects the argument types that print needs */
|
||||||
|
|||||||
@@ -20,7 +20,8 @@ extern "C" {
|
|||||||
enum appendNumberFlag {appendNumber, dontAppendNumber};
|
enum appendNumberFlag {appendNumber, dontAppendNumber};
|
||||||
int catime ( const char *channelName, unsigned channelCount, enum appendNumberFlag appNF );
|
int catime ( const char *channelName, unsigned channelCount, enum appendNumberFlag appNF );
|
||||||
|
|
||||||
int acctst ( const char *pname, unsigned logggingInterestLevel,
|
EPICS_NORETURN
|
||||||
|
void acctst ( const char *pname, unsigned logggingInterestLevel,
|
||||||
unsigned channelCount, unsigned repetitionCount,
|
unsigned channelCount, unsigned repetitionCount,
|
||||||
enum ca_preemptive_callback_select select );
|
enum ca_preemptive_callback_select select );
|
||||||
|
|
||||||
|
|||||||
@@ -392,9 +392,19 @@ void ca_client_context :: vSignal (
|
|||||||
}
|
}
|
||||||
|
|
||||||
epicsTime current = epicsTime::getCurrent ();
|
epicsTime current = epicsTime::getCurrent ();
|
||||||
char date[64];
|
try {
|
||||||
current.strftime ( date, sizeof ( date ), "%a %b %d %Y %H:%M:%S.%f");
|
char date[64];
|
||||||
this->printFormated ( " Current Time: %s\n", date );
|
current.strftime ( date, sizeof ( date ), "%a %b %d %Y %H:%M:%S.%f");
|
||||||
|
this->printFormated ( " Current Time: %s\n", date );
|
||||||
|
}
|
||||||
|
catch ( std::exception & except ) {
|
||||||
|
errlogPrintf (
|
||||||
|
"CA client library thread \"%s\" caught C++ exception \"%s\"\n",
|
||||||
|
epicsThreadGetNameSelf (), except.what () );
|
||||||
|
epicsTimeStamp now = current;
|
||||||
|
this->printFormated ( " Current Time: %u.%u\n",
|
||||||
|
now.secPastEpoch, now.nsec );
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Terminate execution if unsuccessful
|
* Terminate execution if unsuccessful
|
||||||
|
|||||||
@@ -25,6 +25,7 @@
|
|||||||
#include <stdexcept>
|
#include <stdexcept>
|
||||||
#include <string> // vxWorks 6.0 requires this include
|
#include <string> // vxWorks 6.0 requires this include
|
||||||
|
|
||||||
|
#include "epicsStdio.h"
|
||||||
#include "dbDefs.h"
|
#include "dbDefs.h"
|
||||||
#include "epicsGuard.h"
|
#include "epicsGuard.h"
|
||||||
#include "epicsVersion.h"
|
#include "epicsVersion.h"
|
||||||
@@ -1008,7 +1009,7 @@ bool cac::defaultExcep (
|
|||||||
char buf[512];
|
char buf[512];
|
||||||
char hostName[64];
|
char hostName[64];
|
||||||
iiu.getHostName ( guard, hostName, sizeof ( hostName ) );
|
iiu.getHostName ( guard, hostName, sizeof ( hostName ) );
|
||||||
sprintf ( buf, "host=%s ctx=%.400s", hostName, pCtx );
|
epicsSnprintf( buf, sizeof(buf), "host=%s ctx=%.400s", hostName, pCtx );
|
||||||
this->notify.exception ( guard, status, buf, 0, 0u );
|
this->notify.exception ( guard, status, buf, 0, 0u );
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -1312,7 +1313,7 @@ void cac::pvMultiplyDefinedNotify ( msgForMultiplyDefinedPV & mfmdpv,
|
|||||||
const char * pChannelName, const char * pAcc, const char * pRej )
|
const char * pChannelName, const char * pAcc, const char * pRej )
|
||||||
{
|
{
|
||||||
char buf[256];
|
char buf[256];
|
||||||
sprintf ( buf, "Channel: \"%.64s\", Connecting to: %.64s, Ignored: %.64s",
|
epicsSnprintf( buf, sizeof(buf), "Channel: \"%.64s\", Connecting to: %.64s, Ignored: %.64s",
|
||||||
pChannelName, pAcc, pRej );
|
pChannelName, pAcc, pRej );
|
||||||
{
|
{
|
||||||
callbackManager mgr ( this->notify, this->cbMutex );
|
callbackManager mgr ( this->notify, this->cbMutex );
|
||||||
|
|||||||
@@ -559,19 +559,19 @@ LIBCA_API chid epicsStdCall ca_evid_to_chid ( evid id );
|
|||||||
/*
|
/*
|
||||||
* ca_pend_event()
|
* ca_pend_event()
|
||||||
*
|
*
|
||||||
* timeOut R wait for this delay in seconds
|
* timeout R wait for this delay in seconds
|
||||||
*/
|
*/
|
||||||
LIBCA_API int epicsStdCall ca_pend_event (ca_real timeOut);
|
LIBCA_API int epicsStdCall ca_pend_event (ca_real timeout);
|
||||||
#define ca_poll() ca_pend_event(1e-12)
|
#define ca_poll() ca_pend_event(1e-12)
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ca_pend_io()
|
* ca_pend_io()
|
||||||
*
|
*
|
||||||
* timeOut R wait for this delay in seconds but return early
|
* timeout R wait for this delay in seconds but return early
|
||||||
* if all get requests (or search requests with null
|
* if all get requests (or search requests with null
|
||||||
* connection handler pointer have completed)
|
* connection handler pointer have completed)
|
||||||
*/
|
*/
|
||||||
LIBCA_API int epicsStdCall ca_pend_io (ca_real timeOut);
|
LIBCA_API int epicsStdCall ca_pend_io (ca_real timeout);
|
||||||
|
|
||||||
/* calls ca_pend_io() if early is true otherwise ca_pend_event() is called */
|
/* calls ca_pend_io() if early is true otherwise ca_pend_event() is called */
|
||||||
LIBCA_API int epicsStdCall ca_pend (ca_real timeout, int early);
|
LIBCA_API int epicsStdCall ca_pend (ca_real timeout, int early);
|
||||||
|
|||||||
@@ -450,7 +450,7 @@ void timeIt ( tf *pfunc, ti *pItems, unsigned iterations,
|
|||||||
epicsTimeStamp end_time;
|
epicsTimeStamp end_time;
|
||||||
epicsTimeStamp start_time;
|
epicsTimeStamp start_time;
|
||||||
double delay;
|
double delay;
|
||||||
unsigned inlineIter;
|
unsigned inlineIter = 0;
|
||||||
|
|
||||||
epicsTimeGetCurrent ( &start_time );
|
epicsTimeGetCurrent ( &start_time );
|
||||||
(*pfunc) ( pItems, iterations, &inlineIter );
|
(*pfunc) ( pItems, iterations, &inlineIter );
|
||||||
|
|||||||
@@ -88,6 +88,7 @@ public:
|
|||||||
bool push ( const T & value );
|
bool push ( const T & value );
|
||||||
template < class T >
|
template < class T >
|
||||||
unsigned push ( const T * pValue, unsigned nElem );
|
unsigned push ( const T * pValue, unsigned nElem );
|
||||||
|
unsigned push ( const char * pValue, unsigned nElem );
|
||||||
unsigned push ( const epicsInt8 * pValue, unsigned nElem );
|
unsigned push ( const epicsInt8 * pValue, unsigned nElem );
|
||||||
unsigned push ( const epicsUInt8 * pValue, unsigned nElem );
|
unsigned push ( const epicsUInt8 * pValue, unsigned nElem );
|
||||||
unsigned push ( const epicsOldString * pValue, unsigned nElem );
|
unsigned push ( const epicsOldString * pValue, unsigned nElem );
|
||||||
@@ -208,6 +209,11 @@ inline unsigned comBuf :: push ( const epicsUInt8 *pValue, unsigned nElem )
|
|||||||
return copyInBytes ( pValue, nElem );
|
return copyInBytes ( pValue, nElem );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
inline unsigned comBuf :: push ( const char *pValue, unsigned nElem )
|
||||||
|
{
|
||||||
|
return copyInBytes ( pValue, nElem );
|
||||||
|
}
|
||||||
|
|
||||||
inline unsigned comBuf :: push ( const epicsOldString * pValue, unsigned nElem )
|
inline unsigned comBuf :: push ( const epicsOldString * pValue, unsigned nElem )
|
||||||
{
|
{
|
||||||
unsigned index = this->nextWriteIndex;
|
unsigned index = this->nextWriteIndex;
|
||||||
|
|||||||
@@ -46,7 +46,7 @@ void comQueRecv::clear ()
|
|||||||
this->nBytesPending = 0u;
|
this->nBytesPending = 0u;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned comQueRecv::copyOutBytes ( epicsInt8 *pBuf, unsigned nBytes )
|
unsigned comQueRecv::copyOutBytes ( char *pBuf, unsigned nBytes )
|
||||||
{
|
{
|
||||||
unsigned totalBytes = 0u;
|
unsigned totalBytes = 0u;
|
||||||
do {
|
do {
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ public:
|
|||||||
comQueRecv ( comBufMemoryManager & );
|
comQueRecv ( comBufMemoryManager & );
|
||||||
~comQueRecv ();
|
~comQueRecv ();
|
||||||
unsigned occupiedBytes () const;
|
unsigned occupiedBytes () const;
|
||||||
unsigned copyOutBytes ( epicsInt8 *pBuf, unsigned nBytes );
|
unsigned copyOutBytes ( char *pBuf, unsigned nBytes );
|
||||||
unsigned removeBytes ( unsigned nBytes );
|
unsigned removeBytes ( unsigned nBytes );
|
||||||
void pushLastComBufReceived ( comBuf & );
|
void pushLastComBufReceived ( comBuf & );
|
||||||
void clear ();
|
void clear ();
|
||||||
|
|||||||
@@ -676,7 +676,7 @@ union db_access_val{
|
|||||||
(type)%(LAST_TYPE+1) == DBR_DOUBLE)
|
(type)%(LAST_TYPE+1) == DBR_DOUBLE)
|
||||||
|
|
||||||
#define dbf_type_to_text(type) \
|
#define dbf_type_to_text(type) \
|
||||||
( ((type) >= -1 && (type) < dbf_text_dim-2) ? \
|
( ((type+1) >= 0 && (type) < dbf_text_dim-2) ? \
|
||||||
dbf_text[type+1] : dbf_text_invalid )
|
dbf_text[type+1] : dbf_text_invalid )
|
||||||
|
|
||||||
#define dbf_text_to_type(text, type) \
|
#define dbf_text_to_type(text, type) \
|
||||||
|
|||||||
@@ -21,6 +21,9 @@
|
|||||||
|
|
||||||
#define epicsAssertAuthor "Jeff Hill johill@lanl.gov"
|
#define epicsAssertAuthor "Jeff Hill johill@lanl.gov"
|
||||||
|
|
||||||
|
#include <vector>
|
||||||
|
#include <exception>
|
||||||
|
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@@ -28,6 +31,7 @@
|
|||||||
|
|
||||||
#include "envDefs.h"
|
#include "envDefs.h"
|
||||||
#include "epicsAssert.h"
|
#include "epicsAssert.h"
|
||||||
|
#include "epicsString.h"
|
||||||
#include "epicsStdioRedirect.h"
|
#include "epicsStdioRedirect.h"
|
||||||
#include "errlog.h"
|
#include "errlog.h"
|
||||||
#include "osiWireFormat.h"
|
#include "osiWireFormat.h"
|
||||||
@@ -35,39 +39,6 @@
|
|||||||
#include "addrList.h"
|
#include "addrList.h"
|
||||||
#include "iocinf.h"
|
#include "iocinf.h"
|
||||||
|
|
||||||
/*
|
|
||||||
* getToken()
|
|
||||||
*/
|
|
||||||
static char *getToken ( const char **ppString, char *pBuf, unsigned bufSIze )
|
|
||||||
{
|
|
||||||
bool tokenFound = false;
|
|
||||||
const char *pToken;
|
|
||||||
unsigned i;
|
|
||||||
|
|
||||||
pToken = *ppString;
|
|
||||||
while ( isspace (*pToken) && *pToken ){
|
|
||||||
pToken++;
|
|
||||||
}
|
|
||||||
|
|
||||||
for ( i=0u; i<bufSIze; i++ ) {
|
|
||||||
if ( isspace (pToken[i]) || pToken[i]=='\0' ) {
|
|
||||||
pBuf[i] = '\0';
|
|
||||||
*ppString = &pToken[i];
|
|
||||||
if ( i != 0 ) {
|
|
||||||
tokenFound = true;
|
|
||||||
}
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
pBuf[i] = pToken[i];
|
|
||||||
}
|
|
||||||
|
|
||||||
if ( tokenFound ) {
|
|
||||||
pBuf[bufSIze-1] = '\0';
|
|
||||||
return pBuf;
|
|
||||||
}
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* addAddrToChannelAccessAddressList ()
|
* addAddrToChannelAccessAddressList ()
|
||||||
*/
|
*/
|
||||||
@@ -77,9 +48,7 @@ extern "C" int epicsStdCall addAddrToChannelAccessAddressList
|
|||||||
{
|
{
|
||||||
osiSockAddrNode *pNewNode;
|
osiSockAddrNode *pNewNode;
|
||||||
const char *pStr;
|
const char *pStr;
|
||||||
const char *pToken;
|
|
||||||
struct sockaddr_in addr;
|
struct sockaddr_in addr;
|
||||||
char buf[32u]; /* large enough to hold an IP address */
|
|
||||||
int status, ret = -1;
|
int status, ret = -1;
|
||||||
|
|
||||||
pStr = envGetConfigParamPtr (pEnv);
|
pStr = envGetConfigParamPtr (pEnv);
|
||||||
@@ -87,31 +56,45 @@ extern "C" int epicsStdCall addAddrToChannelAccessAddressList
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
while ( ( pToken = getToken (&pStr, buf, sizeof (buf) ) ) ) {
|
try {
|
||||||
status = aToIPAddr ( pToken, port, &addr );
|
std::vector<char> scratch(pStr, pStr+strlen(pStr)+1); // copy chars and trailing nil
|
||||||
if (status<0) {
|
|
||||||
fprintf ( stderr, "%s: Parsing '%s'\n", __FILE__, pEnv->name);
|
char *save = NULL;
|
||||||
fprintf ( stderr, "\tBad internet address or host name: '%s'\n", pToken);
|
for(const char *pToken = epicsStrtok_r(&scratch[0], " \t\n\r", &save);
|
||||||
continue;
|
pToken;
|
||||||
|
pToken = epicsStrtok_r(NULL, " \t\n\r", &save))
|
||||||
|
{
|
||||||
|
if(!pToken[0]) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
status = aToIPAddr ( pToken, port, &addr );
|
||||||
|
if (status<0) {
|
||||||
|
fprintf ( stderr, "%s: Parsing '%s'\n", __FILE__, pEnv->name);
|
||||||
|
fprintf ( stderr, "\tBad internet address or host name: '%s'\n", pToken);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( ignoreNonDefaultPort && ntohs ( addr.sin_port ) != port ) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
pNewNode = (osiSockAddrNode *) calloc (1, sizeof(*pNewNode));
|
||||||
|
if (pNewNode==NULL) {
|
||||||
|
fprintf ( stderr, "addAddrToChannelAccessAddressList(): no memory available for configuration\n");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
pNewNode->addr.ia = addr;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* LOCK applied externally
|
||||||
|
*/
|
||||||
|
ellAdd (pList, &pNewNode->node);
|
||||||
|
ret = 0; /* success if anything is added to the list */
|
||||||
}
|
}
|
||||||
|
} catch(std::exception&) { // only bad_alloc currently possible
|
||||||
if ( ignoreNonDefaultPort && ntohs ( addr.sin_port ) != port ) {
|
ret = -1;
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
pNewNode = (osiSockAddrNode *) calloc (1, sizeof(*pNewNode));
|
|
||||||
if (pNewNode==NULL) {
|
|
||||||
fprintf ( stderr, "addAddrToChannelAccessAddressList(): no memory available for configuration\n");
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
pNewNode->addr.ia = addr;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* LOCK applied externally
|
|
||||||
*/
|
|
||||||
ellAdd (pList, &pNewNode->node);
|
|
||||||
ret = 0; /* success if anything is added to the list */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
|||||||
@@ -56,6 +56,7 @@ extern "C" void epicsStdCall ca_dump_dbr (
|
|||||||
|
|
||||||
if ( INVALID_DB_REQ ( type ) ) {
|
if ( INVALID_DB_REQ ( type ) ) {
|
||||||
printf ( "bad DBR type %ld\n", type );
|
printf ( "bad DBR type %ld\n", type );
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
printf ( "%s\t", dbr_text[type] );
|
printf ( "%s\t", dbr_text[type] );
|
||||||
|
|||||||
@@ -202,7 +202,7 @@ udpiiu::udpiiu (
|
|||||||
char sockErrBuf[64];
|
char sockErrBuf[64];
|
||||||
epicsSocketConvertErrnoToString (
|
epicsSocketConvertErrnoToString (
|
||||||
sockErrBuf, sizeof ( sockErrBuf ) );
|
sockErrBuf, sizeof ( sockErrBuf ) );
|
||||||
errlogPrintf("CAC: failed to set mcast ttl %d\n", ttl);
|
errlogPrintf("CAC: failed to set mcast ttl %d\n", (int)ttl);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@@ -549,7 +549,7 @@ void epicsStdCall caRepeaterRegistrationMessage (
|
|||||||
char sockErrBuf[64];
|
char sockErrBuf[64];
|
||||||
epicsSocketConvertErrnoToString (
|
epicsSocketConvertErrnoToString (
|
||||||
sockErrBuf, sizeof ( sockErrBuf ) );
|
sockErrBuf, sizeof ( sockErrBuf ) );
|
||||||
fprintf ( stderr, "error sending registration message to CA repeater daemon was \"%s\"\n",
|
fprintf ( stderr, ERL_ERROR " sending registration message to CA repeater daemon was \"%s\"\n",
|
||||||
sockErrBuf );
|
sockErrBuf );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -813,13 +813,13 @@ bool udpiiu::exceptionRespAction (
|
|||||||
|
|
||||||
if ( msg.m_postsize > sizeof ( caHdr ) ){
|
if ( msg.m_postsize > sizeof ( caHdr ) ){
|
||||||
errlogPrintf (
|
errlogPrintf (
|
||||||
"error condition \"%s\" detected by %s with context \"%s\" at %s\n",
|
ERL_ERROR " condition \"%s\" detected by %s with context \"%s\" at %s\n",
|
||||||
ca_message ( msg.m_available ),
|
ca_message ( msg.m_available ),
|
||||||
name, reinterpret_cast <const char *> ( &reqMsg + 1 ), date );
|
name, reinterpret_cast <const char *> ( &reqMsg + 1 ), date );
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
errlogPrintf (
|
errlogPrintf (
|
||||||
"error condition \"%s\" detected by %s at %s\n",
|
ERL_ERROR " condition \"%s\" detected by %s at %s\n",
|
||||||
ca_message ( msg.m_available ), name, date );
|
ca_message ( msg.m_available ), name, date );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,13 @@
|
|||||||
* here and just generates unnecessary compiler warnings. */
|
* here and just generates unnecessary compiler warnings. */
|
||||||
#define REENTRINC
|
#define REENTRINC
|
||||||
|
|
||||||
|
/* Clang-12 and later generates many warnings about compound token */
|
||||||
|
#ifdef __has_warning
|
||||||
|
# if __has_warning("-Wcompound-token-split-by-macro")
|
||||||
|
# pragma clang diagnostic ignored "-Wcompound-token-split-by-macro"
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
#include "EXTERN.h"
|
#include "EXTERN.h"
|
||||||
#include "perl.h"
|
#include "perl.h"
|
||||||
#include "XSUB.h"
|
#include "XSUB.h"
|
||||||
@@ -201,6 +208,8 @@ SV * newSVdbr(struct event_handler_args *peha) {
|
|||||||
if (is_primitive) {
|
if (is_primitive) {
|
||||||
if (value_type == DBR_CHAR) {
|
if (value_type == DBR_CHAR) {
|
||||||
/* Long string => Perl scalar */
|
/* Long string => Perl scalar */
|
||||||
|
if (peha->count == 0)
|
||||||
|
return newSVpvn(peha->dbr, 0);
|
||||||
((char *)peha->dbr) [peha->count - 1] = 0;
|
((char *)peha->dbr) [peha->count - 1] = 0;
|
||||||
return newSVpv(peha->dbr, 0);
|
return newSVpv(peha->dbr, 0);
|
||||||
}
|
}
|
||||||
@@ -271,8 +280,12 @@ SV * newSVdbr(struct event_handler_args *peha) {
|
|||||||
char *str = dbr_value_ptr(peha->dbr, peha->type);
|
char *str = dbr_value_ptr(peha->dbr, peha->type);
|
||||||
|
|
||||||
/* Long string => Perl scalar */
|
/* Long string => Perl scalar */
|
||||||
str[peha->count - 1] = 0;
|
if (peha->count == 0)
|
||||||
val = newSVpv(str, 0);
|
val = newSVpvn(str, 0);
|
||||||
|
else {
|
||||||
|
str[peha->count - 1] = 0;
|
||||||
|
val = newSVpv(str, 0);
|
||||||
|
}
|
||||||
} else if (peha->count == 1) {
|
} else if (peha->count == 1) {
|
||||||
/* Single value => Perl scalar */
|
/* Single value => Perl scalar */
|
||||||
val = newSVdbf(value_type,
|
val = newSVdbf(value_type,
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ ifeq ($(wildcard $(PERL_h)),)
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifneq (inc,$(strip $(MAKECMDGOALS)))
|
ifneq ($(filter-out inc,$(strip $(MAKECMDGOALS))),)
|
||||||
ifeq ($(T_A),$(EPICS_HOST_ARCH)) # No cross-builds (wrong Perl!)
|
ifeq ($(T_A),$(EPICS_HOST_ARCH)) # No cross-builds (wrong Perl!)
|
||||||
ifeq ($(strip $(XSUBPP)),)
|
ifeq ($(strip $(XSUBPP)),)
|
||||||
$(warning Perl's xsubpp program was not found.)
|
$(warning Perl's xsubpp program was not found.)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user