Compare commits
926 Commits
R3.13.0-al
...
R3.13.0-be
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
115f2b8a1e | ||
|
|
fefb8454c7 | ||
|
|
e4cf1df857 | ||
|
|
f3bd38caca | ||
|
|
c104460654 | ||
|
|
fc3db2c3bf | ||
|
|
41e02220d1 | ||
|
|
8f5061b28e | ||
|
|
5898d94c4c | ||
|
|
b2ced4889b | ||
|
|
a65e5f1f73 | ||
|
|
839b8bdb5f | ||
|
|
421d98a936 | ||
|
|
95b6d4a998 | ||
|
|
cc2ea961d7 | ||
|
|
3a0de109a3 | ||
|
|
41aad467a6 | ||
|
|
ebf6c4932a | ||
|
|
b587d3639f | ||
|
|
7408f7f29f | ||
|
|
e2baae4281 | ||
|
|
b61b816c49 | ||
|
|
5257374a73 | ||
|
|
f732ff2505 | ||
|
|
8e2e15194a | ||
|
|
4a3993c4e5 | ||
|
|
f11dadd032 | ||
|
|
881cbd60e3 | ||
|
|
598e87d598 | ||
|
|
6e8fc4f9c1 | ||
|
|
1be3c39e50 | ||
|
|
fc48d2dd1d | ||
|
|
11084a5dfc | ||
|
|
7946e9b921 | ||
|
|
2a1f06cd2a | ||
|
|
ccf3271fe1 | ||
|
|
c99ee0317c | ||
|
|
5bf13da02c | ||
|
|
cbd5d9a36e | ||
|
|
bb8e8f46cb | ||
|
|
6b6e5e7515 | ||
|
|
0b0b23c6d6 | ||
|
|
1ed2559cc3 | ||
|
|
9a068b824d | ||
|
|
32a847087d | ||
|
|
67fbf5b746 | ||
|
|
a0e8290c50 | ||
|
|
7cde4f8f2b | ||
|
|
437142b5bb | ||
|
|
42adbd20c8 | ||
|
|
85a2ef6e4d | ||
|
|
62ce79e147 | ||
|
|
3a840f6e2f | ||
|
|
69c62573b0 | ||
|
|
e1e8a34b2f | ||
|
|
13c9ae5fe3 | ||
|
|
6912ff4929 | ||
|
|
0e387c8936 | ||
|
|
e8e3b5226e | ||
|
|
b87f049c2d | ||
|
|
0d7698e0d4 | ||
|
|
ebbaee5ed2 | ||
|
|
bff266bef3 | ||
|
|
1d6f9f80f6 | ||
|
|
8a298ab07c | ||
|
|
7f317f4d55 | ||
|
|
50b19bc74f | ||
|
|
9f35f8043e | ||
|
|
19091f245b | ||
|
|
0bc395108d | ||
|
|
2b6367e1d4 | ||
|
|
6fb8477b3a | ||
|
|
39c22d2ee0 | ||
|
|
721840498c | ||
|
|
56e35d8305 | ||
|
|
a42a244aed | ||
|
|
b8dba0a4ad | ||
|
|
fe9f9b91fb | ||
|
|
206a04e15f | ||
|
|
db11fd957d | ||
|
|
2517d52437 | ||
|
|
f85aba61ed | ||
|
|
147403b0e5 | ||
|
|
afa84f396b | ||
|
|
9888b965d8 | ||
|
|
c3e2f58d96 | ||
|
|
697200e942 | ||
|
|
33b940562e | ||
|
|
08f2298215 | ||
|
|
8c992ed466 | ||
|
|
c442950e5f | ||
|
|
0a5dffc069 | ||
|
|
744a0de15d | ||
|
|
7c42f005db | ||
|
|
652cb0d66c | ||
|
|
9f77fbccd1 | ||
|
|
de2864a5a5 | ||
|
|
2caf1628ca | ||
|
|
f1865a507c | ||
|
|
8013fecb61 | ||
|
|
8d6deea83d | ||
|
|
da3eed2a6f | ||
|
|
5de817b531 | ||
|
|
a173792b1f | ||
|
|
6af690f524 | ||
|
|
1891940018 | ||
|
|
6adb68d7d6 | ||
|
|
c1225d880e | ||
|
|
017686e0f6 | ||
|
|
f61f401683 | ||
|
|
3a5e5fc5d7 | ||
|
|
8d0712bea4 | ||
|
|
0804f7fb08 | ||
|
|
7a8878dec6 | ||
|
|
92ae7b14c4 | ||
|
|
eda3aae608 | ||
|
|
8e363122b3 | ||
|
|
ff378e17c9 | ||
|
|
5e1157d363 | ||
|
|
d3c6310bb1 | ||
|
|
5c4d82cacc | ||
|
|
414c8ed603 | ||
|
|
603c598e14 | ||
|
|
a3cad9563f | ||
|
|
cb95ba41ac | ||
|
|
8e000eb634 | ||
|
|
b00f152456 | ||
|
|
566d70bf9c | ||
|
|
bc6bf59bda | ||
|
|
6fcbfa15b3 | ||
|
|
121a2dc9ae | ||
|
|
35f9a872f7 | ||
|
|
0efb9a0c8c | ||
|
|
63da245439 | ||
|
|
8b83afc1bb | ||
|
|
54e6f9aed1 | ||
|
|
4c99a53852 | ||
|
|
b95f7afd3c | ||
|
|
a2db2d88ca | ||
|
|
cbe00bb737 | ||
|
|
7efb007b53 | ||
|
|
4e7917d9fe | ||
|
|
ee8fad1e7a | ||
|
|
0fa8b1e62d | ||
|
|
117f75eac4 | ||
|
|
85432e6307 | ||
|
|
cdbbf69a1e | ||
|
|
fb8e026551 | ||
|
|
5f1b0c19a8 | ||
|
|
bbef91c39e | ||
|
|
f0120adba4 | ||
|
|
457d64640e | ||
|
|
eae68a0872 | ||
|
|
48bbe65f60 | ||
|
|
6e04d47209 | ||
|
|
02dc1c300c | ||
|
|
2d1c1d3e09 | ||
|
|
5e9ebd8b9b | ||
|
|
c5bc89f11b | ||
|
|
bd2407153c | ||
|
|
2b42b3eab0 | ||
|
|
77146706a6 | ||
|
|
b6d0f183de | ||
|
|
4f649964de | ||
|
|
f565901231 | ||
|
|
9821aaa612 | ||
|
|
a364fbe125 | ||
|
|
0500ccb4da | ||
|
|
3db726ddac | ||
|
|
edff0569b6 | ||
|
|
cbbeb7ea25 | ||
|
|
ccb055cf78 | ||
|
|
4ddd63d141 | ||
|
|
fdd89be534 | ||
|
|
ed77e687a3 | ||
|
|
f5e2c72b18 | ||
|
|
1e4e78d6bc | ||
|
|
3ede2a2512 | ||
|
|
1995c735a1 | ||
|
|
79a2ef7ad1 | ||
|
|
11b9be6dfd | ||
|
|
d21c4ba0ab | ||
|
|
a23b0be5a5 | ||
|
|
199fdff643 | ||
|
|
d762ed7af6 | ||
|
|
85e3a6e0a1 | ||
|
|
74f253820a | ||
|
|
3c73143f3a | ||
|
|
18cafc2d06 | ||
|
|
6f6e34dced | ||
|
|
a16f99b8d0 | ||
|
|
46a180f755 | ||
|
|
cebd5f3cf8 | ||
|
|
2ced0242bd | ||
|
|
7edc0cd149 | ||
|
|
417411ab62 | ||
|
|
ea589a75a9 | ||
|
|
d00b72f3e8 | ||
|
|
56cf313613 | ||
|
|
98498419c0 | ||
|
|
653d8f1dae | ||
|
|
8405cf7323 | ||
|
|
80a8d9c37f | ||
|
|
ce87cee840 | ||
|
|
0ca6bf3ecc | ||
|
|
8e0a2c9e0f | ||
|
|
fad67f380d | ||
|
|
4dc12e992d | ||
|
|
bf6f69065c | ||
|
|
be09fad901 | ||
|
|
0b07bf8094 | ||
|
|
d2c38b8db5 | ||
|
|
7f1249ae45 | ||
|
|
617b4dd26f | ||
|
|
ef7b658bc0 | ||
|
|
ef6adf90fc | ||
|
|
ca2a66514f | ||
|
|
ce3095d1fc | ||
|
|
2869b388dd | ||
|
|
dc03deead7 | ||
|
|
99a0613092 | ||
|
|
38044917f4 | ||
|
|
2092f9faee | ||
|
|
f0ea531cc4 | ||
|
|
54de9067ee | ||
|
|
dcbf2a6331 | ||
|
|
63d0339d05 | ||
|
|
8d88cf2277 | ||
|
|
450f76d205 | ||
|
|
890de43c91 | ||
|
|
a8879d0f41 | ||
|
|
cdab5000bc | ||
|
|
fd0daa0b92 | ||
|
|
86219510c6 | ||
|
|
471a5a71e6 | ||
|
|
ae1b395a87 | ||
|
|
fecf4de0d1 | ||
|
|
378cc22c07 | ||
|
|
6f3b75b485 | ||
|
|
2b1aab904e | ||
|
|
8afabaf4e1 | ||
|
|
ff02a0fe6e | ||
|
|
8b9b9c0bf6 | ||
|
|
b134b99686 | ||
|
|
61f0440de5 | ||
|
|
c68ace1542 | ||
|
|
2207e20627 | ||
|
|
0a4d1f26d1 | ||
|
|
1114813608 | ||
|
|
0b09d90b12 | ||
|
|
219324f304 | ||
|
|
f0e00aacc8 | ||
|
|
02e5131522 | ||
|
|
194784d781 | ||
|
|
a0a5198a2f | ||
|
|
e41619eea3 | ||
|
|
93deef330a | ||
|
|
5507e033d8 | ||
|
|
d0c26b575e | ||
|
|
66c844cebf | ||
|
|
fc449a487e | ||
|
|
4be53cd0fa | ||
|
|
2adb49b93e | ||
|
|
d7bb945cc0 | ||
|
|
752fbcc6dc | ||
|
|
d1e1a5f249 | ||
|
|
a13d49cf81 | ||
|
|
2fc75ca08e | ||
|
|
7f3c5e6cbb | ||
|
|
355fe461e7 | ||
|
|
b87c59eab2 | ||
|
|
e2edfb470f | ||
|
|
8f642dfe1e | ||
|
|
ad533e7c35 | ||
|
|
5937eb099e | ||
|
|
9ca456bfb3 | ||
|
|
52854cd1ed | ||
|
|
7a92120974 | ||
|
|
9b1cf4a467 | ||
|
|
62ae22ef7a | ||
|
|
9e7f4020c2 | ||
|
|
17aa8609b0 | ||
|
|
4b83df7f01 | ||
|
|
a1acb62b58 | ||
|
|
71144f3c20 | ||
|
|
7c89b7850f | ||
|
|
cdb42f3c11 | ||
|
|
22cf3b4935 | ||
|
|
d584853a94 | ||
|
|
94ce85b538 | ||
|
|
1427caaee9 | ||
|
|
3846165645 | ||
|
|
fdddf61b06 | ||
|
|
07e07db9c7 | ||
|
|
1c091779a8 | ||
|
|
88140f9116 | ||
|
|
e9b078491b | ||
|
|
218ae4569a | ||
|
|
03188d0eec | ||
|
|
88c99148b2 | ||
|
|
261067b0f5 | ||
|
|
89b90296ec | ||
|
|
dff79f6bea | ||
|
|
fa64c5bdd2 | ||
|
|
a9acb01482 | ||
|
|
de4c463956 | ||
|
|
07857588f0 | ||
|
|
f9346a7eca | ||
|
|
e332794a4a | ||
|
|
ab4c4baa52 | ||
|
|
b372a53bbb | ||
|
|
e031341af1 | ||
|
|
ce5adaa037 | ||
|
|
b578f783e2 | ||
|
|
2c0a4561bd | ||
|
|
f14ac97ee2 | ||
|
|
8431539f23 | ||
|
|
7f8be4b3a1 | ||
|
|
59304ffd99 | ||
|
|
7c124f6e93 | ||
|
|
7543005120 | ||
|
|
f4784cafb5 | ||
|
|
c80e584dfa | ||
|
|
4820f93b6a | ||
|
|
eff915d837 | ||
|
|
a7e61ddeb8 | ||
|
|
fb624a76d2 | ||
|
|
33d5b78b5b | ||
|
|
e6a68089c6 | ||
|
|
4d1875e738 | ||
|
|
737f4b83e6 | ||
|
|
a4362b3b3f | ||
|
|
96f6b17458 | ||
|
|
e5df8aef5b | ||
|
|
f8f7240e12 | ||
|
|
7bab56dcb7 | ||
|
|
37c4bead67 | ||
|
|
3b934ac775 | ||
|
|
d34ad2d0ff | ||
|
|
ff0e52d4b4 | ||
|
|
4961e0c799 | ||
|
|
c41ea11302 | ||
|
|
8215339e79 | ||
|
|
49d0571e4a | ||
|
|
a93baf6214 | ||
|
|
8dcf6e1a5f | ||
|
|
687770d207 | ||
|
|
a897ba6ac9 | ||
|
|
87efbf9a7c | ||
|
|
7aa17be09c | ||
|
|
292bbca26b | ||
|
|
ede722c5da | ||
|
|
6844074eac | ||
|
|
26385135f4 | ||
|
|
079e377937 | ||
|
|
369841f425 | ||
|
|
3f7bfda8d8 | ||
|
|
cfc470d480 | ||
|
|
ff7a84bbb1 | ||
|
|
485817d819 | ||
|
|
bf4738a2b3 | ||
|
|
4449495196 | ||
|
|
d89ceac446 | ||
|
|
a9a77b8a9c | ||
|
|
d8fdf046d1 | ||
|
|
5f2999d9c4 | ||
|
|
0a943103f2 | ||
|
|
8e34d8cc43 | ||
|
|
e05ed3ebae | ||
|
|
da7f5837ec | ||
|
|
d8fc7ff7bd | ||
|
|
66d2971efb | ||
|
|
16e9a2dbc0 | ||
|
|
77cf658c05 | ||
|
|
a1e16b72b7 | ||
|
|
f48578f681 | ||
|
|
cbc3f74479 | ||
|
|
569d7e7879 | ||
|
|
2d6ac57834 | ||
|
|
44aae92786 | ||
|
|
9976984eb8 | ||
|
|
452d3d68ca | ||
|
|
a609cfaa02 | ||
|
|
c12f73e2b3 | ||
|
|
fd72915fae | ||
|
|
8d5cfe739f | ||
|
|
d40253a1b5 | ||
|
|
55589cb65a | ||
|
|
14127052f1 | ||
|
|
5201df3dbc | ||
|
|
3263a885a3 | ||
|
|
4dbb3d18de | ||
|
|
31b046e108 | ||
|
|
c25f195f08 | ||
|
|
f8910ba651 | ||
|
|
9b05ce2169 | ||
|
|
6bbc5576f9 | ||
|
|
52b5b08b62 | ||
|
|
c83ef56154 | ||
|
|
77c34614a2 | ||
|
|
0f925b7264 | ||
|
|
17ff2420b4 | ||
|
|
1f722b453d | ||
|
|
5bcd8e3fe7 | ||
|
|
cacdbe8a7e | ||
|
|
8397c013f0 | ||
|
|
40f6521d20 | ||
|
|
183386fc02 | ||
|
|
ee83524e6b | ||
|
|
58b02d04cb | ||
|
|
68006545e1 | ||
|
|
9a0e885a2e | ||
|
|
4013ea544b | ||
|
|
9258159419 | ||
|
|
ecc19506ef | ||
|
|
6373069d52 | ||
|
|
2a8ec06437 | ||
|
|
603519ae1c | ||
|
|
f7433d8e93 | ||
|
|
5ca50b7ce7 | ||
|
|
7287113d58 | ||
|
|
179c9f6df0 | ||
|
|
a160ebf5ba | ||
|
|
b52605705b | ||
|
|
3ef7c191db | ||
|
|
73dc2a91e4 | ||
|
|
ad76c5efab | ||
|
|
5981891ee0 | ||
|
|
884737e82e | ||
|
|
e301e1b359 | ||
|
|
a3b1033015 | ||
|
|
ac5e26f132 | ||
|
|
19cc8098dc | ||
|
|
49da47700d | ||
|
|
3d22feedd8 | ||
|
|
bab66fe7cc | ||
|
|
4de3accb61 | ||
|
|
ba2b082abd | ||
|
|
086f5999aa | ||
|
|
96f51f2b99 | ||
|
|
a93773ae77 | ||
|
|
d997adeb16 | ||
|
|
299c22ff0f | ||
|
|
71e83671aa | ||
|
|
1b66a4c204 | ||
|
|
0c8f41a6a0 | ||
|
|
5268e13e74 | ||
|
|
a0d4d84622 | ||
|
|
9427acb0a1 | ||
|
|
41d5c292f9 | ||
|
|
f2ceaba174 | ||
|
|
0faa5d56cc | ||
|
|
072c850568 | ||
|
|
0f4b4deb80 | ||
|
|
e22ae5f857 | ||
|
|
926298ac6d | ||
|
|
e135b2a4c0 | ||
|
|
69a07d8807 | ||
|
|
5c341931d0 | ||
|
|
f78d291850 | ||
|
|
89e5f59610 | ||
|
|
09ce70661a | ||
|
|
22b550ed35 | ||
|
|
a17b659a86 | ||
|
|
b5e120d082 | ||
|
|
b8d6a8216e | ||
|
|
5587867f6f | ||
|
|
be33ae291e | ||
|
|
932a4b0d5c | ||
|
|
7452aea2bc | ||
|
|
178e034e75 | ||
|
|
cbb5a6acde | ||
|
|
08a8e874eb | ||
|
|
29f381b8f4 | ||
|
|
5d123c6a4d | ||
|
|
2d999ed858 | ||
|
|
956fba853e | ||
|
|
97b96da957 | ||
|
|
63a377ce99 | ||
|
|
84df076e38 | ||
|
|
582d4b64cd | ||
|
|
ebebde9539 | ||
|
|
8771c33c46 | ||
|
|
3eae90a803 | ||
|
|
693de689e9 | ||
|
|
a30a0fcbaa | ||
|
|
0283890686 | ||
|
|
c1d0a4ad5a | ||
|
|
b2fcff709b | ||
|
|
aed16987e2 | ||
|
|
b6a5423a1f | ||
|
|
9610b9a07d | ||
|
|
98df963844 | ||
|
|
19f9d0c14d | ||
|
|
a5e1223b0c | ||
|
|
0db9c03505 | ||
|
|
a3ce428cdd | ||
|
|
057e1723cb | ||
|
|
0f156d5219 | ||
|
|
1d39b11b7f | ||
|
|
9e12de8e4f | ||
|
|
4aa19f07d7 | ||
|
|
142b7515e3 | ||
|
|
8feefadabf | ||
|
|
6a9030e5e6 | ||
|
|
bece5d0b9a | ||
|
|
24e0989142 | ||
|
|
815668143f | ||
|
|
737278aa41 | ||
|
|
c14d23494c | ||
|
|
d611fa2d75 | ||
|
|
1aa384308d | ||
|
|
2e80e8c2ee | ||
|
|
0830382ec7 | ||
|
|
c253066bc7 | ||
|
|
6fca0cd260 | ||
|
|
470152454b | ||
|
|
4a8507cb0d | ||
|
|
6917b31975 | ||
|
|
0cf19108db | ||
|
|
01b3617614 | ||
|
|
27567a54ed | ||
|
|
c04f34be42 | ||
|
|
0d2b196be2 | ||
|
|
7c23cf9c8c | ||
|
|
2d0dd7828f | ||
|
|
6fbc050c96 | ||
|
|
5856008613 | ||
|
|
f3003d9052 | ||
|
|
340ffec332 | ||
|
|
91c6f156ff | ||
|
|
2008c19e7d | ||
|
|
4dcb0e3ae6 | ||
|
|
74bc7758b5 | ||
|
|
17143d0e12 | ||
|
|
40be4d1cd5 | ||
|
|
d1ba9be665 | ||
|
|
7f6bd17474 | ||
|
|
6a534ca2b5 | ||
|
|
26ec4dd5c8 | ||
|
|
a0db9a2eb2 | ||
|
|
b5a102ef79 | ||
|
|
ed1491bb7b | ||
|
|
7fabc325bb | ||
|
|
5b546d2467 | ||
|
|
6440239832 | ||
|
|
cb6c444a19 | ||
|
|
c251b05020 | ||
|
|
1f7cc343c5 | ||
|
|
d67eb28145 | ||
|
|
3001f7e82f | ||
|
|
3982ea7d17 | ||
|
|
3fe00ec2a9 | ||
|
|
11fa08c1e0 | ||
|
|
b8d2273683 | ||
|
|
77fc9734b1 | ||
|
|
289302f603 | ||
|
|
a01241aa19 | ||
|
|
525842b076 | ||
|
|
03a4c8ad01 | ||
|
|
8a7158b3c6 | ||
|
|
08c57574d5 | ||
|
|
a6c40247f1 | ||
|
|
86969d7b3a | ||
|
|
a3c13f6da6 | ||
|
|
0d0566253e | ||
|
|
15fda603a5 | ||
|
|
7c0895bd82 | ||
|
|
5311ba4c15 | ||
|
|
27b0c05bcf | ||
|
|
435208afa8 | ||
|
|
0f1f7fc30c | ||
|
|
471acea0fc | ||
|
|
e122d8f4a6 | ||
|
|
53bde9e545 | ||
|
|
2ccaa6dcb6 | ||
|
|
8c8b971221 | ||
|
|
dd43f91278 | ||
|
|
6b3a62de9f | ||
|
|
4bd45337bf | ||
|
|
9351447cf2 | ||
|
|
b9cdf72ee1 | ||
|
|
81000e9391 | ||
|
|
19b81912fb | ||
|
|
b7df13b4fe | ||
|
|
2f3befc845 | ||
|
|
826b68b652 | ||
|
|
aece23e6ee | ||
|
|
3a9ddfbdbb | ||
|
|
11bdb5f6d4 | ||
|
|
741450ce9e | ||
|
|
868e6c417d | ||
|
|
0c19e23835 | ||
|
|
342ffb5d83 | ||
|
|
afa44fae79 | ||
|
|
333b379287 | ||
|
|
36f74c934e | ||
|
|
8f41686a98 | ||
|
|
75feb3a5d4 | ||
|
|
50ace741fe | ||
|
|
036cd8dd26 | ||
|
|
9758aa4a45 | ||
|
|
cf1cb554f6 | ||
|
|
ee68f746c6 | ||
|
|
85f2cf5833 | ||
|
|
5819ac0c48 | ||
|
|
3e26a12948 | ||
|
|
279385ecb9 | ||
|
|
75c91c8035 | ||
|
|
1f39f39d79 | ||
|
|
d807b2ace5 | ||
|
|
18c52e5839 | ||
|
|
81cd82fcca | ||
|
|
f1d714a57e | ||
|
|
7ce03e13e8 | ||
|
|
3ca0a1f556 | ||
|
|
b8a0083745 | ||
|
|
11925a7168 | ||
|
|
e81b990a31 | ||
|
|
edff93791b | ||
|
|
5ca9baaede | ||
|
|
ea0ff36f65 | ||
|
|
a2b8735fe5 | ||
|
|
cb9583a21a | ||
|
|
3d1180b17f | ||
|
|
507a125c2c | ||
|
|
c5bfbfccc0 | ||
|
|
d3e21e87b2 | ||
|
|
9c05191e9e | ||
|
|
9c2248a5c6 | ||
|
|
546bb97e92 | ||
|
|
c556f69387 | ||
|
|
2ec12266ad | ||
|
|
13c03c4cde | ||
|
|
99deec1134 | ||
|
|
1938a00761 | ||
|
|
e50d5375f8 | ||
|
|
30e64505e3 | ||
|
|
0b3df30c4f | ||
|
|
070673fa89 | ||
|
|
bfb6dcc118 | ||
|
|
46c39c3253 | ||
|
|
ad232dd2d9 | ||
|
|
c40ff7da52 | ||
|
|
2af23a4893 | ||
|
|
7260cf15fb | ||
|
|
ee2cf25c35 | ||
|
|
08ec0e69d8 | ||
|
|
e906138c55 | ||
|
|
0e6b238881 | ||
|
|
82e39acd3a | ||
|
|
85ef2f5a10 | ||
|
|
733ed90bd7 | ||
|
|
4c8c63c9e1 | ||
|
|
aeaad63186 | ||
|
|
70a87d2c95 | ||
|
|
41b53c1a67 | ||
|
|
a4ac96afdc | ||
|
|
a5d46a7a07 | ||
|
|
e37d227975 | ||
|
|
adab5e6a1a | ||
|
|
56a11aa90c | ||
|
|
969152088f | ||
|
|
2a5871e303 | ||
|
|
b5c459b036 | ||
|
|
cffd160cf0 | ||
|
|
c4aa64946f | ||
|
|
069c404d64 | ||
|
|
998e413bed | ||
|
|
8fd7fff71c | ||
|
|
d799330ec0 | ||
|
|
631de381fd | ||
|
|
f15f4ad524 | ||
|
|
13156bee16 | ||
|
|
090e6ce3d3 | ||
|
|
fd2a536131 | ||
|
|
6b6c9ce6a1 | ||
|
|
95f4990b98 | ||
|
|
ad2a272e90 | ||
|
|
7438234eb5 | ||
|
|
67eb929b63 | ||
|
|
5d73bdffb2 | ||
|
|
3c603a7e3f | ||
|
|
ec34df23fc | ||
|
|
67dce79b62 | ||
|
|
70c885000e | ||
|
|
f2cd63c68f | ||
|
|
7d342b5276 | ||
|
|
20880b3950 | ||
|
|
6bd6481cbd | ||
|
|
2433b09c1c | ||
|
|
a057f79d75 | ||
|
|
1947538968 | ||
|
|
dc6972ba06 | ||
|
|
c4171b7ec0 | ||
|
|
7f08759c2a | ||
|
|
43b11de6ad | ||
|
|
66ee6135ba | ||
|
|
3c4ffb5cc4 | ||
|
|
72a8c35f55 | ||
|
|
53f2acfaa1 | ||
|
|
fe4cfd8091 | ||
|
|
8c2cefc5a4 | ||
|
|
dbe9f90ac1 | ||
|
|
4b47e7a979 | ||
|
|
d12ce5f58a | ||
|
|
f1b751a3d3 | ||
|
|
c324b8f598 | ||
|
|
64e851e05c | ||
|
|
e3fb1f6c90 | ||
|
|
0844d7132f | ||
|
|
dd8fa0e290 | ||
|
|
276dd19293 | ||
|
|
a312de99b0 | ||
|
|
ccfcd95561 | ||
|
|
2e42535459 | ||
|
|
d3432d487a | ||
|
|
c6701f8475 | ||
|
|
dba800ebb7 | ||
|
|
cda87cbf31 | ||
|
|
376f37eb1e | ||
|
|
2f2f378238 | ||
|
|
4e1d778fc8 | ||
|
|
9c1d4be29d | ||
|
|
291b22271f | ||
|
|
a8db0e5d73 | ||
|
|
4ba33b8259 | ||
|
|
4b7dd0f8b1 | ||
|
|
0c831f7e5a | ||
|
|
4b655c1632 | ||
|
|
01462e1c7c | ||
|
|
5832c6fa25 | ||
|
|
9eab30d3fc | ||
|
|
46beb63264 | ||
|
|
ab9a1d4022 | ||
|
|
0ab1978030 | ||
|
|
845a45d20e | ||
|
|
2486f6b20f | ||
|
|
49e7beed3b | ||
|
|
d175ff7449 | ||
|
|
14a2f1866d | ||
|
|
236cf1ddf8 | ||
|
|
01402c6bbd | ||
|
|
b1450980b5 | ||
|
|
b40676fe20 | ||
|
|
dea19e8846 | ||
|
|
d08070f69b | ||
|
|
3eeee76e99 | ||
|
|
2bcf574f79 | ||
|
|
d4f77948a0 | ||
|
|
1df41d2964 | ||
|
|
9b5fa04dae | ||
|
|
d1c337f7a3 | ||
|
|
543a610bb4 | ||
|
|
eed3471e15 | ||
|
|
b0e533dd75 | ||
|
|
04b02a71a5 | ||
|
|
7a18c98df3 | ||
|
|
a4b092c966 | ||
|
|
9e62be865b | ||
|
|
1969cbb2af | ||
|
|
495d94ee15 | ||
|
|
4ca3bf9217 | ||
|
|
d7f522577f | ||
|
|
cdb0a5719b | ||
|
|
a8bf57750d | ||
|
|
c0bb0d68af | ||
|
|
c2ebb2d91b | ||
|
|
5d0347c8ef | ||
|
|
d9aeca1b19 | ||
|
|
fb3ada00dd | ||
|
|
67e383af94 | ||
|
|
5791d6b61c | ||
|
|
637a046890 | ||
|
|
e61dce7a96 | ||
|
|
a7bf1d42e6 | ||
|
|
a229aaa159 | ||
|
|
c82788102c | ||
|
|
622ad2926d | ||
|
|
4299e39bce | ||
|
|
c3d2e1a46a | ||
|
|
39fdd3f785 | ||
|
|
0f28113959 | ||
|
|
433e81791b | ||
|
|
5e2aea4dab | ||
|
|
0074252862 | ||
|
|
125282e839 | ||
|
|
ea7f95fe17 | ||
|
|
9574829a43 | ||
|
|
9f6c8d2cb4 | ||
|
|
d2adaabbfe | ||
|
|
e32066749b | ||
|
|
f93fa732ac | ||
|
|
2fc14dc03b | ||
|
|
8e8ff2a2f6 | ||
|
|
969479e04f | ||
|
|
9dddad37ca | ||
|
|
741d784ad3 | ||
|
|
97b4200806 | ||
|
|
2727281cb4 | ||
|
|
e1ecb4f2e0 | ||
|
|
22ae937b08 | ||
|
|
1e52376f87 | ||
|
|
17333e4278 | ||
|
|
6467c0a777 | ||
|
|
e6768e0c94 | ||
|
|
a10641575b | ||
|
|
b06c40e470 | ||
|
|
61c525792e | ||
|
|
a7375e363b | ||
|
|
99b8d0d0fd | ||
|
|
a76a338e8e | ||
|
|
f1cd963176 | ||
|
|
d89a50416c | ||
|
|
2d55dafacc | ||
|
|
418fa60dbd | ||
|
|
a75f083371 | ||
|
|
5a8bb49c77 | ||
|
|
5f1ec28daf | ||
|
|
31fd02f8e9 | ||
|
|
ebc6972f74 | ||
|
|
eb437e162f | ||
|
|
7121929f1e | ||
|
|
7942f42242 | ||
|
|
91347ff65f | ||
|
|
aa8cceb119 | ||
|
|
ee0faa077f | ||
|
|
78c7233d0e | ||
|
|
87b2b3b1e6 | ||
|
|
701d2ee9cb | ||
|
|
2b293e286a | ||
|
|
0a824f8b40 | ||
|
|
28c4ce844d | ||
|
|
e9a86c7e26 | ||
|
|
54d746e3f3 | ||
|
|
6a116affea | ||
|
|
e73ba4b3c3 | ||
|
|
4a5a2f463b | ||
|
|
055b8a7149 | ||
|
|
00ca9457c4 | ||
|
|
0238591d9a | ||
|
|
459571b648 | ||
|
|
0646d6795f | ||
|
|
a56d58cf95 | ||
|
|
47171dd159 | ||
|
|
47ad9222a2 | ||
|
|
4376d7b186 | ||
|
|
6f2acd5645 | ||
|
|
87307b87bf | ||
|
|
00d9239af7 | ||
|
|
f119d0556f | ||
|
|
c7667fded7 | ||
|
|
b5bb5a0f46 | ||
|
|
dda17e5eaf | ||
|
|
f67af0cd21 | ||
|
|
160aab02eb | ||
|
|
9a1e7a3034 | ||
|
|
d141e38a80 | ||
|
|
25b5b8d5c2 | ||
|
|
ad26ee285f | ||
|
|
7f00b2034f | ||
|
|
2f6e847cf6 | ||
|
|
484427be12 | ||
|
|
20d75f926c | ||
|
|
922206cbcc | ||
|
|
9ab235fee7 | ||
|
|
dda8b9c9f6 | ||
|
|
117b4c7a9f | ||
|
|
ce6fe283b8 | ||
|
|
f904389afc | ||
|
|
de3bf16215 | ||
|
|
ac20fb5a17 | ||
|
|
88ef5bfc7c | ||
|
|
04a8db049f | ||
|
|
a624ea2c0c | ||
|
|
4609aa45d5 | ||
|
|
473f12132d | ||
|
|
8d43b12d93 | ||
|
|
fcc810efba | ||
|
|
4697f951b9 | ||
|
|
14f53d7844 | ||
|
|
9ea7fc6dd1 | ||
|
|
8f299a1d80 | ||
|
|
7263c8a271 | ||
|
|
41557f3946 | ||
|
|
7cf7fea999 | ||
|
|
391cbf40b6 | ||
|
|
093a0533c4 | ||
|
|
db44eedef4 | ||
|
|
1a78dc9064 | ||
|
|
ca6ed090ff | ||
|
|
df34a2eabc | ||
|
|
ad033dd8c2 | ||
|
|
16e9dc781a | ||
|
|
6e229435d1 | ||
|
|
65c14ab802 | ||
|
|
ef0402dcbd | ||
|
|
506003f300 | ||
|
|
a03cf9b56e | ||
|
|
a8f0ec2338 | ||
|
|
d7f50f503e | ||
|
|
fb82d0de0a | ||
|
|
20eed1bd05 | ||
|
|
4b248c8abe | ||
|
|
bd1b6d4f50 | ||
|
|
62551322b2 | ||
|
|
64809b2c52 | ||
|
|
dbb1fc2aa0 | ||
|
|
b5fc2cd1dd | ||
|
|
755abbeaef | ||
|
|
601cb19fa4 | ||
|
|
5fc13933a5 | ||
|
|
755aebb11b | ||
|
|
29a8aab459 | ||
|
|
f0e6c62973 | ||
|
|
a2939aa9c5 | ||
|
|
f2b70591eb | ||
|
|
7412b68956 | ||
|
|
49173bcb97 | ||
|
|
e52d0e0929 | ||
|
|
470c461102 | ||
|
|
70e01fcb18 | ||
|
|
8c55790b98 | ||
|
|
391565de5c | ||
|
|
b9395b020c | ||
|
|
4ccdf79d2f |
60
MakeRelease
60
MakeRelease
@@ -10,6 +10,21 @@
|
||||
# [-b] - For fully built release
|
||||
#
|
||||
# $Log$
|
||||
# Revision 1.9 1996/09/04 21:41:36 jba
|
||||
# Top level dir no longer passed to MakeRelease
|
||||
#
|
||||
# Revision 1.8 1996/07/02 13:45:09 jba
|
||||
# Added dbd and base/config dirs. Removed epics/config and base/rec.
|
||||
#
|
||||
# Revision 1.7 1996/06/25 21:54:42 jba
|
||||
# Command line parm now base dir
|
||||
#
|
||||
# Revision 1.6 1996/06/07 19:19:10 jba
|
||||
# MakeRelease is now in release tar file.
|
||||
#
|
||||
# Revision 1.5 1996/03/04 21:03:48 jba
|
||||
# epicsVersion.h now in src/include.
|
||||
#
|
||||
# Revision 1.4 1996/02/20 21:03:53 jba
|
||||
# Updated README files to reflect directory changes and new installEpics.
|
||||
#
|
||||
@@ -58,60 +73,50 @@
|
||||
#
|
||||
#
|
||||
|
||||
EPICS=${1};
|
||||
|
||||
if [ ! -d src ]; then
|
||||
echo "Cannot find src directory, are you at the top of EPICS base ?"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cd $EPICS/base
|
||||
|
||||
FULLY_BUILT=NO
|
||||
if [ "${2}" = "-b" ]; then
|
||||
if [ "${1}" = "-b" ]; then
|
||||
FULLY_BUILT=YES
|
||||
shift
|
||||
if [ "${1}" != "." ]; then
|
||||
echo "TOP: Cannot create a fully built release.";
|
||||
exit 1;
|
||||
fi
|
||||
fi
|
||||
|
||||
# Retrieve EPICS release string from src/include/epicsVersion.h
|
||||
grep EPICS_VERSION_STRING src/include/epicsVersion.h > /dev/null 2>&1 || ERR=1;
|
||||
# Retrieve EPICS release string from config/CONFIG_BASE_VERSION
|
||||
. config/CONFIG_BASE_VERSION
|
||||
|
||||
if [ "$ERR" = "1" ];
|
||||
if [ -z "${EPICS_VERSION}" ];
|
||||
then
|
||||
echo "TOP: Cannot retrieve release number from include/epicsVersion.h";
|
||||
echo "TOP: Cannot retrieve release number from config/CONFIG_BASE_VERSION";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
RELS=`grep "EPICS_VERSION_STRING" src/include/epicsVersion.h \
|
||||
| sed -e 's-.*Version--' \
|
||||
-e 's-[ ][ ]*--g' \
|
||||
-e 's-".*--' \
|
||||
-e 's-\.0$--'`;
|
||||
|
||||
if [ -z "${RELS}" ];
|
||||
then
|
||||
echo "TOP: Cannot retrieve release number from src/include/epicsVersion.h";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
RELS="R${RELS}";
|
||||
RELS="R${EPICS_VERSION}.${EPICS_REVISION}.${EPICS_MODIFICATION}.${EPICS_UPDATE_NAME}${EPICS_UPDATE_LEVEL}";
|
||||
|
||||
echo TOP: Creating ../${RELS}.Tar;
|
||||
|
||||
if [ -f ${RELS}.Tar* ];
|
||||
then
|
||||
echo "TOP: This release has already been created.";
|
||||
echo "TOP: Remove Tar file or edit src/include/epicsVersion.h.";
|
||||
echo "TOP: Remove Tar file or edit config/CONFIG_BASE_VERSION.";
|
||||
exit 1;
|
||||
fi
|
||||
|
||||
# Create list of files and dirs to include in Tar file
|
||||
|
||||
cd $EPICS
|
||||
cd ..
|
||||
|
||||
ls base/README* | xargs tar cvf ${RELS}.Tar
|
||||
|
||||
ls base/Makefile* > /tmp/make_release.out.$$;
|
||||
ls base/Make* > /tmp/make_release.out.$$;
|
||||
|
||||
ls base/*COPYRIGHT* >> /tmp/make_release.out.$$;
|
||||
|
||||
@@ -121,9 +126,6 @@ if [ -d startup ];
|
||||
>> /tmp/make_release.out.$$;
|
||||
fi
|
||||
|
||||
find config -name CVS -prune -o \
|
||||
! -type d -print >> /tmp/make_release.out.$$;
|
||||
|
||||
# binary / library / default.dctsdr / <rec>Record.h / etc.
|
||||
if [ $FULLY_BUILT = "YES" ];
|
||||
then
|
||||
@@ -139,10 +141,14 @@ if [ $FULLY_BUILT = "YES" ];
|
||||
find base/lib -name CVS -prune -o ! -type d -print \
|
||||
>> /tmp/make_release.out.$$;
|
||||
|
||||
find base/rec -name CVS -prune -o ! -type d -print \
|
||||
find base/dbd -name CVS -prune -o ! -type d -print \
|
||||
>> /tmp/make_release.out.$$;
|
||||
|
||||
fi
|
||||
|
||||
find base/config -name CVS -prune -o -name SCCS -prune -o ! -type d -print \
|
||||
| grep -v '/O\..*$' >> /tmp/make_release.out.$$
|
||||
|
||||
find base/src -name CVS -prune -o -name SCCS -prune -o ! -type d -print \
|
||||
| grep -v '/O\..*$' >> /tmp/make_release.out.$$
|
||||
|
||||
|
||||
137
Makefile
137
Makefile
@@ -1,5 +1,4 @@
|
||||
#
|
||||
#
|
||||
# Top Level EPICS Makefile
|
||||
# by Matthew Needes and Mike Bordua
|
||||
#
|
||||
@@ -11,139 +10,25 @@
|
||||
# However, the release dependencies DOES require a complete
|
||||
# install because the release.% syntax is illegal.
|
||||
#
|
||||
# $Log$
|
||||
# Revision 1.26 1996/01/25 21:37:09 mrk
|
||||
# uninstall base/man
|
||||
#
|
||||
# Revision 1.25 1996/01/25 21:29:42 mrk
|
||||
# base/rec=>base/db base/include now installed
|
||||
#
|
||||
# Revision 1.24 1995/08/17 20:14:59 jba
|
||||
# Added base/tools scripts functionality to base/Makefile, removed scripts
|
||||
# Moved base/tools/MakeRelease to base dir.
|
||||
#
|
||||
# Revision 1.23 1995/02/13 15:00:09 jba
|
||||
# Changed include file from CONFIG_SITE to CONFIG
|
||||
#
|
||||
# Revision 1.22 1994/11/14 23:12:17 tang
|
||||
# Replace ARCH_TYPE with .
|
||||
#
|
||||
# Revision 1.1.1.1 1994/11/09 01:08:53 epics
|
||||
# Import of R3.12.0Beta
|
||||
#
|
||||
# Revision 1.18 1994/10/13 19:44:34 mda
|
||||
# Introduce temporary symbol (ARCH_TYPE=$$ARCH) and use in later targets/rules
|
||||
# to avoid problem with $* symbol resolution in some versions of gnumake.
|
||||
#
|
||||
# Revision 1.17 1994/10/05 18:45:57 jba
|
||||
# Modified syntax of makefile usage
|
||||
#
|
||||
# Revision 1.16 1994/09/09 17:32:27 jba
|
||||
# Cleanup of files
|
||||
#
|
||||
# Revision 1.15 1994/09/08 17:25:39 mcn
|
||||
# Changed clean to tools/Clean. Added "uninstall" dependency.
|
||||
#
|
||||
# Revision 1.14 1994/09/07 20:42:19 jba
|
||||
# Minor changes
|
||||
#
|
||||
# Revision 1.13 1994/09/07 19:15:17 jba
|
||||
# Modified to eork with extensions and do depends
|
||||
#
|
||||
# Revision 1.12 1994/08/21 00:55:51 mcn
|
||||
# New stuff.
|
||||
#
|
||||
# Revision 1.11 1994/08/19 15:38:01 mcn
|
||||
# Dependencies are now generated with a "make release".
|
||||
#
|
||||
# Revision 1.10 1994/08/12 18:51:29 mcn
|
||||
# Added Log and/or Id.
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
EPICS=..
|
||||
include $(EPICS)/config/CONFIG
|
||||
TOP=.
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
|
||||
all: install
|
||||
DIRS = src config
|
||||
|
||||
build:
|
||||
@(for ARCH in ${BUILD_ARCHS}; do \
|
||||
${MAKE} $@.$${ARCH}; \
|
||||
done)
|
||||
|
||||
install:
|
||||
@(for ARCH in ${BUILD_ARCHS}; do \
|
||||
${MAKE} $@.$${ARCH}; \
|
||||
done)
|
||||
|
||||
depends:
|
||||
@(for ARCH in ${BUILD_ARCHS}; do \
|
||||
${MAKE} $@.$${ARCH}; \
|
||||
done)
|
||||
|
||||
clean:
|
||||
@(for ARCH in ${BUILD_ARCHS}; do \
|
||||
${MAKE} $@.$${ARCH}; \
|
||||
done)
|
||||
|
||||
uninstall:
|
||||
@(for ARCH in ${BUILD_ARCHS}; do \
|
||||
${MAKE} $@.$${ARCH}; \
|
||||
done)
|
||||
include $(TOP)/config/RULES_TOP
|
||||
|
||||
release:
|
||||
@echo TOP: Creating Release...
|
||||
@./MakeRelease ${EPICS}
|
||||
@./MakeRelease
|
||||
|
||||
built_release: install
|
||||
built_release:
|
||||
@echo TOP: Creating Fully Built Release...
|
||||
@./MakeRelease ${EPICS} -b
|
||||
|
||||
# Notes for single architecture build rules:
|
||||
# CheckArch only has to be run for dirs.% . That
|
||||
# way it will only be run ONCE when filtering down
|
||||
# dependencies.
|
||||
#
|
||||
# CheckArch does not have to be run for cleans
|
||||
# because you might want to eliminate binaries for
|
||||
# an old architecture.
|
||||
|
||||
# DIRS RULE syntax: make depends.arch
|
||||
# e.g.: make depends.mv167
|
||||
#
|
||||
# Create dependencies for an architecture. We MUST
|
||||
# do this separately for each architecture because
|
||||
# some things may be included on a per architecture
|
||||
# basis.
|
||||
|
||||
build.%:
|
||||
@echo $*: Building
|
||||
@${MAKE} ${MFLAGS} T_A=$* -f Makefile.subdirs build
|
||||
|
||||
install.%:
|
||||
@echo $*: Installing
|
||||
@${MAKE} ${MFLAGS} T_A=$* -f Makefile.subdirs install
|
||||
|
||||
depends.%:
|
||||
@echo $*: Performing Make Depends
|
||||
@${MAKE} ${MFLAGS} T_A=$* -f Makefile.subdirs depends
|
||||
|
||||
# Illegal Syntax
|
||||
|
||||
release.%:
|
||||
@echo
|
||||
@echo "The release.arch syntax is not supported by this build."
|
||||
@echo " Use 'make release' or 'make built_release' instead."
|
||||
@echo
|
||||
|
||||
uninstall.%:
|
||||
@echo "TOP: Uninstalling $* "
|
||||
@rm -rf ./bin/$* ./lib/$* db include man
|
||||
@rm -rf rec.bak rec
|
||||
|
||||
clean.%:
|
||||
@echo "TOP: Cleaning $* "
|
||||
@find src -type d -name "O.$*" -prune -exec rm -rf {} \;
|
||||
|
||||
@./MakeRelease -b $(INSTALL_LOCATION)
|
||||
|
||||
uninstall::
|
||||
@DIR1=`pwd`;cd $(INSTALL_LOCATION);DIR2=`pwd`;cd $$DIR1;\
|
||||
if [ "$$DIR1" != "$$DIR2" ]; then $(RMDIR) $(INSTALL_LOCATION)/config; fi
|
||||
|
||||
|
||||
@@ -1,76 +0,0 @@
|
||||
#
|
||||
# base $Id$
|
||||
#
|
||||
# EPICS Makefile For Subdirectory Recursions
|
||||
# by Matthew Needes and Mike Bordua
|
||||
#
|
||||
# $Log$
|
||||
# Revision 1.13 1994/09/09 17:32:29 jba
|
||||
# Cleanup of files
|
||||
#
|
||||
# Revision 1.12 1994/09/08 17:25:41 mcn
|
||||
# Changed clean to tools/Clean. Added "uninstall" dependency.
|
||||
#
|
||||
# Revision 1.11 1994/09/07 19:15:19 jba
|
||||
# Modified to eork with extensions and do depends
|
||||
#
|
||||
# Revision 1.10 1994/08/21 00:55:52 mcn
|
||||
# New stuff.
|
||||
#
|
||||
# Revision 1.9 1994/08/19 15:38:03 mcn
|
||||
# Dependencies are now generated with a "make release".
|
||||
#
|
||||
# Revision 1.8 1994/08/12 18:51:28 mcn
|
||||
# Added Log and/or Id.
|
||||
#
|
||||
#
|
||||
|
||||
EPICS=..
|
||||
include $(EPICS)/config/CONFIG_BASE
|
||||
|
||||
all: build
|
||||
|
||||
build: dirs
|
||||
@(for DIR in ${DIRS}; \
|
||||
do \
|
||||
TMP=`pwd`; echo "${T_A}: $@: $$DIR"; \
|
||||
cd $$DIR/O.${T_A}; ${MAKE} ${MFLAGS} $@; \
|
||||
cd $$TMP; \
|
||||
done)
|
||||
|
||||
install: dirs
|
||||
@(for DIR in ${DIRS}; \
|
||||
do \
|
||||
TMP=`pwd`; echo "${T_A}: $@: $$DIR"; \
|
||||
cd $$DIR/O.${T_A}; ${MAKE} ${MFLAGS} $@; \
|
||||
cd $$TMP; \
|
||||
done)
|
||||
|
||||
depends: dirs
|
||||
@(for DIR in ${DIRS}; \
|
||||
do \
|
||||
TMP=`pwd`; echo "${T_A}: $@: $$DIR"; \
|
||||
cd $$DIR/O.${T_A}; ${MAKE} ${MFLAGS} $@; \
|
||||
cd $$TMP; \
|
||||
done)
|
||||
|
||||
dirs:
|
||||
@echo ${T_A}: Creating Directories
|
||||
@for DIR in ${DIRS}; \
|
||||
do \
|
||||
TMP=`pwd`; \
|
||||
cd $$DIR ; \
|
||||
if [ -f Makefile.${BUILD_TYPE} ] ; then \
|
||||
test -d O.${T_A} || \
|
||||
mkdir O.${T_A}; \
|
||||
test -f O.${T_A}/Makefile || \
|
||||
ln -s ../Makefile.${BUILD_TYPE} O.${T_A}/Makefile \
|
||||
> /dev/null 2> /dev/null; \
|
||||
test -f O.${T_A}/Target.include || \
|
||||
echo "T_A=${T_A}" > O.${T_A}/Target.include; \
|
||||
test -f O.${T_A}/.DEPENDS || \
|
||||
touch O.${T_A}/.DEPENDS; \
|
||||
fi ; \
|
||||
cd $$TMP; \
|
||||
done
|
||||
|
||||
180
README
180
README
@@ -1,7 +1,7 @@
|
||||
$Id$
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
3.12 EPICS BASE Notes and Build Instructions.
|
||||
3.13 EPICS BASE Notes and Build Instructions.
|
||||
- By Matthew Needes
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
@@ -27,9 +27,9 @@ Notes:
|
||||
|
||||
1.2 To add a target architecture to EPICS:
|
||||
|
||||
cd epics/config
|
||||
cp CONFIG_ARCH.mv167 CONFIG_ARCH.YOUR_ARCH
|
||||
edit CONFIG_ARCH.YOUR_ARCH - For compiler flags / etc.
|
||||
cd base/config
|
||||
cp CONFIG.mv167 CONFIG.YOUR_ARCH
|
||||
edit CONFIG.YOUR_ARCH - For compiler flags / etc.
|
||||
|
||||
cp CONFIG.Vx.68k CONFIG.Vx.YOUR_ARCH_CLASS
|
||||
cp CONFIG_SITE.Vx.68k CONFIG_SITE.Vx.YOUR_ARCH_CLASS
|
||||
@@ -41,35 +41,51 @@ Notes:
|
||||
1.3 To build EPICS:
|
||||
|
||||
cd epics/base
|
||||
gnumake - To build and install EPICS.
|
||||
gnumake - To install include files, build and install EPICS.
|
||||
(Same as "gnumake inc install")
|
||||
gnumake all - Same as "gnumake"
|
||||
gnumake clean - To clean temporary object files. Top level
|
||||
clean will remove all the O.ARCH dirs, not
|
||||
only those specified in BUILD_ARCHS.
|
||||
clean will remove all the O.ARCH dirs, not
|
||||
only those specified in BUILD_ARCHS.
|
||||
gnumake uninstall - Only available at the top level directory.
|
||||
Cleans directories created by the install.
|
||||
gnumake rebuild - Same as "gnumake clean uninstall all"
|
||||
|
||||
1.4 To create an EPICS release:
|
||||
1.4 "Partial" build commands:
|
||||
|
||||
edit base/include/version.h - ONLY IF you need to change the EPICS
|
||||
version number.
|
||||
The complete set of targets now supported are:
|
||||
|
||||
gnumake release - Will create Tar file
|
||||
action
|
||||
arch
|
||||
action.arch
|
||||
dir
|
||||
dir.action
|
||||
dir.arch
|
||||
dir.action.arch
|
||||
|
||||
gnumake built_release - Will create Tar file, after generating
|
||||
dependencies, INCLUDING BINARIES.
|
||||
where:
|
||||
action can be clean, inc, install, depends, or build
|
||||
action can also be uninstall or rebuild at top level only
|
||||
dir is the name of a subdirectory.
|
||||
arch can be host, cross, sun4, solaris, mv167, ...
|
||||
|
||||
1.5 "Partial" build commands:
|
||||
Examples are:
|
||||
|
||||
gnumake clean.sun4 - Cleans sun4 binaries in O.sun4 dirs only.
|
||||
gnumake install.sun4 - Builds sun4 only.
|
||||
gnumake install.mv167 - Builds mv167 only (a HOST_ARCH build must
|
||||
be complete before this can be issued).
|
||||
gnumake inc - To install include files
|
||||
gnumake install.host - To build and install EPICS for host arch.
|
||||
gnumake install.cross - To build and install EPICS for Vx archs.
|
||||
gnumake clean.sun4 - Cleans sun4 binaries in O.sun4 dirs only.
|
||||
gnumake install.sun4 - Builds sun4 only.
|
||||
gnumake install.mv167 - Builds mv167 only (a HOST_ARCH build must
|
||||
be complete before this can be issued).
|
||||
|
||||
NOTES:
|
||||
1. base/MakeRelease will create tar files in the directory ABOVE
|
||||
base. These tar files are then meant to be untarred at that level.
|
||||
This release will include the "epics/config" directory.
|
||||
|
||||
2. EPICS binaries and shellscripts are installed into the bin/ARCH and
|
||||
lib/ARCH directories.
|
||||
1. EPICS binaries and shellscripts are installed into the directory
|
||||
$(INSTALL_LOCATION)/bin/ARCH.
|
||||
|
||||
2. EPICS libraries are installed into the $(INSTALL_LOCATION)/lib/ARCH
|
||||
directory.
|
||||
|
||||
3. During a normal build (a "make" or "make install"), the "depends"
|
||||
dependency will NOT be invoked. Only if "make depends" is run
|
||||
@@ -88,7 +104,7 @@ NOTES:
|
||||
mv167 target.
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Part 2 --- Configuration Files in epics/config
|
||||
Part 2 --- Configuration Files in epics/base/config
|
||||
----------------------------------------------------------------------------
|
||||
CONFIG - This file is meant to be included in the low-level EPICS Makefiles.
|
||||
It includes the other EPICS makefiles, and allows individual developers
|
||||
@@ -107,7 +123,7 @@ manager. It specifies:
|
||||
etc.
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
CONFIG_ARCH.ARCH - This file defines a particular architecture. It
|
||||
CONFIG.ARCH - This file defines a particular architecture. It
|
||||
contains the following variables:
|
||||
|
||||
BUILD_TYPE: Unix / Vx
|
||||
@@ -115,23 +131,21 @@ contains the following variables:
|
||||
Architecture dependent build flags. The flag names / contents
|
||||
depend on your architecture class.
|
||||
----------------------------------------------------------------------------
|
||||
CONFIG_SITE.BUILD_TYPE.ARCH_CLASS - Contains definitions of where to
|
||||
find things, like X11 / Motif, etc.
|
||||
----------------------------------------------------------------------------
|
||||
CONFIG.BUILD_TYPE.ARCH_CLASS - Contains definitions pertaining to a
|
||||
particular architecture class. This file's primary usefulness is to
|
||||
define compile and link flags.
|
||||
CONFIG_SITE.ARCH - Contains site specific definitions pertaining to a
|
||||
particular architecture. This file's primary usefulness is to
|
||||
define site specific compile and link flags.
|
||||
----------------------------------------------------------------------------
|
||||
CONFIG_COMMON - Contains definitions describing the layout of base.
|
||||
----------------------------------------------------------------------------
|
||||
CONFIG_BASE
|
||||
CONFIG_EXTENSIONS - Defines what subdirectories get built by default under
|
||||
base and extensions.
|
||||
CONFIG_BASE - Defines what subdirectories get built by default under base.
|
||||
----------------------------------------------------------------------------
|
||||
RULES.Vx - Rules for building with VxWorks makefiles.
|
||||
----------------------------------------------------------------------------
|
||||
RULES.Unix - Rules for building with Unix makefiles.
|
||||
----------------------------------------------------------------------------
|
||||
RULES_TOP - Top level rules for building.
|
||||
----------------------------------------------------------------------------
|
||||
RULES_ARCHS
|
||||
RULES_DIRS - Allows top-level type command syntax in low-level directories.
|
||||
----------------------------------------------------------------------------
|
||||
@@ -143,18 +157,18 @@ Filename SYS_MGR ADD_VX_ARCH ADD_UNIX_ARCH DEVELOPER
|
||||
|
||||
CONFIG m - - m
|
||||
CONFIG_SITE m m m -
|
||||
CONFIG_ARCH.ARCH - c c -
|
||||
CONFIG_SITE.Unix.ARCH_CLASS m - c* -
|
||||
CONFIG_SITE.Vx.ARCH_CLASS m c* - -
|
||||
CONFIG.Unix.ARCH_CLASS - - c* -
|
||||
CONFIG_SITE_ENV m - - -
|
||||
CONFIG.ARCH - c c -
|
||||
CONFIG_SITE.ARCH - c c -
|
||||
CONFIG.Vx.ARCH_CLASS - c* - -
|
||||
RULES.Vx - - - -
|
||||
RULES.Unix - - - -
|
||||
CONFIG_BASE - - - -
|
||||
CONFIG_EXTENSIONS - - - -
|
||||
CONFIG_COMMON - - - -
|
||||
CONFIG_ENV - - - -
|
||||
RULES_ARCHS - - - -
|
||||
RULES_DIRS - - - -
|
||||
RULES_TOP - - - -
|
||||
|
||||
m - Modify an existing file.
|
||||
c - Create a new file.
|
||||
@@ -172,63 +186,57 @@ RULES_DIRS - - - -
|
||||
(files are numbered in the order of their inclusion)
|
||||
|
||||
src/db/Makefile.Vx (An example EPICS makefile)
|
||||
^ ^ ^
|
||||
| | +--- 3. RULES.Vx
|
||||
| | Default rules.
|
||||
| +------- 2. CONFIG
|
||||
| ^ ^ ^ ^ ^
|
||||
| | | | | |
|
||||
| | | | | +- 1. CONFIG_SITE
|
||||
| | | | | HOST_ARCH = sun4
|
||||
| | | | | BUILD_ARCHS = $(HOST_ARCH) mv167 hkv2f
|
||||
| | | | | VX_DIR = /vxworks
|
||||
| | | | | More.
|
||||
| | | | +--- 2. CONFIG_COMMON
|
||||
| | | | General info about base.
|
||||
| | | +----- 3. CONFIG_ARCH.hkv2f
|
||||
| | | BUILD_TYPE = Vx
|
||||
| | | ARCH_CLASS = 68k
|
||||
| | | Arch Specific Compiler Flag Setup
|
||||
| | +------- 4. CONFIG_SITE.Vx.68k
|
||||
| | Directory locations
|
||||
| +--------- 5. CONFIG.Vx.68k
|
||||
| Compiler/utility setup for ARCH_CLASS
|
||||
+---------- 1. Target.include
|
||||
T_A definition (target architecture)
|
||||
^ ^
|
||||
| +--- 3. RULES.Vx
|
||||
| Default rules.
|
||||
+------- 2. CONFIG
|
||||
^ ^ ^ ^
|
||||
| | | |
|
||||
| | | +- 1. CONFIG_SITE
|
||||
| | | HOST_ARCH = sun4
|
||||
| | | BUILD_ARCHS = $(HOST_ARCH) mv167 hkv2f
|
||||
| | | VX_DIR = /vxworks
|
||||
| | | More.
|
||||
| | +--- 2. CONFIG_COMMON
|
||||
| | General info about base.
|
||||
| +----- 3. CONFIG.hkv2f
|
||||
| ^ BUILD_TYPE = Vx
|
||||
| | ARCH_CLASS = 68k
|
||||
| | Arch Specific Compiler Flag Setup
|
||||
| +--- a. CONFIG.Vx.68k
|
||||
| Compiler/utility setup for ARCH_CLASS
|
||||
+------- 4. CONFIG_SITE.hkv2f
|
||||
Site Specific setup
|
||||
|
||||
---------------------------- sun4 example --------------------------------
|
||||
(files are numbered in the order of their inclusion)
|
||||
|
||||
src/db/Makefile.Unix (An example EPICS makefile)
|
||||
^ ^ ^
|
||||
| | +--- 3. RULES.Unix
|
||||
| | Default rules.
|
||||
| +------- 2. CONFIG
|
||||
| ^ ^ ^ ^ ^
|
||||
| | | | | |
|
||||
| | | | | +- 1. CONFIG_SITE
|
||||
| | | | | HOST_ARCH = sun4
|
||||
| | | | | BUILD_ARCHS = $(HOST_ARCH) mv167 hkv2f
|
||||
| | | | | VX_DIR = /vxworks
|
||||
| | | | | More.
|
||||
| | | | +--- 2. CONFIG_COMMON
|
||||
| | | | General info about base.
|
||||
| | | +----- 3. CONFIG_ARCH.sun4
|
||||
| | | BUILD_TYPE = Unix
|
||||
| | | ARCH_CLASS = sun4
|
||||
| | | Arch Specific Compiler Flag Setup
|
||||
| | +------- 4. CONFIG_SITE.Unix.sun4
|
||||
| | Directory locations
|
||||
| +--------- 5. CONFIG.Unix.sun4
|
||||
| Compiler/utility setup for ARCH_CLASS
|
||||
+---------- 1. Target.include
|
||||
T_A definition (target architecture)
|
||||
^ ^
|
||||
| +--- 3. RULES.Unix
|
||||
| Default rules.
|
||||
+------- 2. CONFIG
|
||||
^ ^ ^ ^
|
||||
| | | |
|
||||
| | | +- 1. CONFIG_SITE
|
||||
| | | HOST_ARCH = sun4
|
||||
| | | BUILD_ARCHS = $(HOST_ARCH) mv167 hkv2f
|
||||
| | | VX_DIR = /vxworks
|
||||
| | | More.
|
||||
| | +--- 2. CONFIG_COMMON
|
||||
| | General info about base.
|
||||
| +----- 3. CONFIG.sun4
|
||||
| BUILD_TYPE = Unix
|
||||
| ARCH_CLASS = sun4
|
||||
| Arch Specific Compiler Flag Setup
|
||||
+------- 4. CONFIG_SITE.sun4
|
||||
Directory locations
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
Part 4 --- EPICS dependencies
|
||||
Part 4 --- EPICS makefile rules
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Dependencies supported by lower level Makefiles:
|
||||
Rules supported by lower level Makefiles:
|
||||
|
||||
depends - Generate include dependencies
|
||||
build - Builds objects, using libraries from "build_libs"
|
||||
|
||||
14
README.Linux
14
README.Linux
@@ -1,16 +1,10 @@
|
||||
Special Notes on Linux
|
||||
1) The epics makefiles use GNU make which is the make that comes
|
||||
with Linux. You need to make a link from make to gnumake and
|
||||
have it in your path. After you have defined the EPICS environement
|
||||
variable, you can use:
|
||||
|
||||
ln -s /usr/bin/make $EPICS/base/tools/gnumake
|
||||
At this point, support for Linux only involves channel access
|
||||
clients. Since Vxworks is not available for Linux, you must
|
||||
use other platforms for developing server side code.
|
||||
|
||||
2) At this point, support for Linux only involves channel access
|
||||
clients. Since Vxworks is not available for Linux, you must
|
||||
use other platforms for developing server side code.
|
||||
|
||||
3) You MUST start caRepeater by hand before running a client.
|
||||
You MUST start caRepeater by hand before running a client.
|
||||
Prior to running a client, you must run:
|
||||
|
||||
caRepeater &
|
||||
|
||||
44
README.Perl
Normal file
44
README.Perl
Normal file
@@ -0,0 +1,44 @@
|
||||
Perl
|
||||
====
|
||||
|
||||
A number of shell scripts are now Perl scripts,
|
||||
most important:
|
||||
|
||||
tools/installEpics.pl
|
||||
include/makeEpicsVersion.pl
|
||||
libCom/bldEnvData.pl
|
||||
libCom/makeStatSymTbl.pl
|
||||
sequencer/makeVersion.pl
|
||||
|
||||
WIN32 also uses
|
||||
tools/cp.pl, mv.pl, rm.pl, mkdir.pl
|
||||
which should behave like the UNIX cp, mv, rm, rmdir.
|
||||
All systems could use the Perl versions but that seems
|
||||
to be overkill for UNIX.
|
||||
|
||||
Advantages:
|
||||
* no need for ls, date, basename, grep, awk, sed, ...,
|
||||
which made the make UNIX-specific.
|
||||
* Perl is currently available for Unix, OS/2, WIN32, VMS
|
||||
and the scripts should work on all those systems
|
||||
|
||||
Disadvantage:
|
||||
* You have to get Perl, look e.g. at http://www.perl.com
|
||||
* Perl version 5.003_02 works, we don't know about earlier versions.
|
||||
|
||||
|
||||
Compile Perl:
|
||||
No big deal,
|
||||
* on UNIX say 'configure' and 'gnumake',
|
||||
* on Windows use MX Visual C++,
|
||||
use File/Open Workspace to open the Makefile {PERL}/perl5i.mak,
|
||||
use Build/Batch build to select eiher the Release or Debug targets.
|
||||
|
||||
You can do the same with the Makefile {Perl}/Ext/WIN32/win32.mak
|
||||
- nice tools but not necessary for EPICS.
|
||||
|
||||
Then call {PERL}/bin/perlw32-install.bat
|
||||
|
||||
In any case, read the texts that come with perl!
|
||||
|
||||
|
||||
161
README.WIN32
Normal file
161
README.WIN32
Normal file
@@ -0,0 +1,161 @@
|
||||
Compiling EPICS on WIN32 (Windows95/NT)
|
||||
---------------------------------------
|
||||
|
||||
-kuk- 11/18/96 questions & comments please
|
||||
mailto:kasemir@atdiv.lanl.gov
|
||||
|
||||
0) what you will get
|
||||
--------------------
|
||||
|
||||
Right now this port of EPICS to WIN32 should allow you to
|
||||
|
||||
* compile almost all EPICS base using Tornado, MS Visual C
|
||||
and some additional tools: gnumake, a UNIX-like shell, awk, sed, ...
|
||||
(See below where to get these.)
|
||||
* load EPICS on a PC IOC (486, pentium),
|
||||
load simple databases
|
||||
(no drivers/devices for real I/O available, yet.
|
||||
Some Greenspring IP support [Relay, Dig, ADC, DAC] is in progress)
|
||||
* build and use ca.dll on NT or Win95 to access all IOCs,
|
||||
as well as the Com-library as a DLL.
|
||||
The remaining libraries are statically linked and
|
||||
therefore only accessible from programming languages like C,
|
||||
not general WIN32 apps.
|
||||
* build gdd, cas and a demo of the new portable CA server on WIN32.
|
||||
* missing: the sequencer, makeExampleApp etc. and long term tests
|
||||
|
||||
1) see what you have
|
||||
--------------------
|
||||
|
||||
To compiler EPICS on WIN32, we need
|
||||
|
||||
WindRiver Systems Tornado (used: 1.0)
|
||||
Microsoft Visual C (used: 4.0)
|
||||
|
||||
and some tools:
|
||||
|
||||
a Unix-like shell
|
||||
gnumake
|
||||
basename
|
||||
date
|
||||
mv
|
||||
touch
|
||||
sort
|
||||
|
||||
All the above except. the shell are available 'on the net'
|
||||
as sources which compile with MS Visual C++.
|
||||
If you cannot/don't want to find them, contact me, please!
|
||||
|
||||
I could not find a shell that's fully operational.
|
||||
The best one seems to be the Cygnus bash for WIN32, though it
|
||||
still has errors and doesn't come with sources that compile
|
||||
under MS VC++.
|
||||
I use a small self-written shell called knts,
|
||||
again: Contact me if you need it.
|
||||
|
||||
* The final solution to make the shell, basename, date, ...
|
||||
* obsolete:
|
||||
* Use
|
||||
* 1) no shell scripts
|
||||
* 2) Perl which is available for Unix and WIN32
|
||||
|
||||
In addition we need some binaries that I have no sources
|
||||
for, yet, but that come with Tornado if and only if you
|
||||
INSTALL THE FULL PACKAGE (!)
|
||||
Including the 'WTX Test Suite i386/i486'
|
||||
(under "Select Sub-components" when installing Tornado)
|
||||
|
||||
You should find in your <Tornado>/host/x86-win32/bin dir:
|
||||
|
||||
awk, cat, cp, rm, mkdir
|
||||
|
||||
(There is also a bash and a GNU-make which are really poor,
|
||||
and WindRiver told me that they do not consider to support
|
||||
those in the future, so I no longer use them.)
|
||||
|
||||
2) set environment variables
|
||||
----------------------------
|
||||
|
||||
Your path should include:
|
||||
- The EPICS-binaries that we are about to build in base/bin/WIN32
|
||||
- The NTtools that you've built in step 1
|
||||
- The System (for me it's in NT40...)
|
||||
- The MS Visual C compiler binaries
|
||||
- The Tornado binaries
|
||||
|
||||
Check with e.g.:
|
||||
|
||||
/users/kay/Src/epics/nttools >echo $Path
|
||||
c:\users\kay\src\epics\base\bin\WIN32;c:\users\kay\src\epics\NTtools\bin;C:\NT40
|
||||
\system32;C:\NT40;c:\msdev\bin;C:\users\Tornado\host\x86-win32\bin
|
||||
|
||||
On NT, $Path is defined by the operatin system, on Win95, it's $PATH instead.
|
||||
knts tries to use PATH and falls back on Path,
|
||||
what should wok on both systems.
|
||||
|
||||
MS Visual C and Tornado should be installed properly with
|
||||
these env. variables set:
|
||||
|
||||
WIND_BASE=c:\usersTornado
|
||||
WIND_HOST_TYPE=x86-win32
|
||||
|
||||
This way the EPICS makesystem can locate Tornado
|
||||
without any changes to the files in base/config.
|
||||
So for pc486 the settings in CONFIG_SITE where
|
||||
you specify the location of VxWorks are ignored,
|
||||
this information is taken from WIND_BASE and _HOST_TYPE!!
|
||||
|
||||
MSDevDir=C:\MSDEV
|
||||
include=c:\msdev\include;c:\msdev\mfc\include
|
||||
lib=c:\msdev\lib;c:\msdev\mfc\lib
|
||||
|
||||
(Setting env. vars. is different: for NT, use Settings/System,
|
||||
for Win95 use autoexec.bat)
|
||||
|
||||
For EPICS, set:
|
||||
|
||||
# select host arch to build:
|
||||
HOST_ARCH=WIN32
|
||||
|
||||
EPICS_CA_ADDR_LIST 128.165.32.255 (addr of WIN32 host)
|
||||
EPICS_CA_AUTO_CA_ADDR_LIST NO
|
||||
EPICS_CA_CONN_TMO 30.0
|
||||
EPICS_CA_BEACON_PERIOD 15.0
|
||||
EPICS_CA_REPEATER_PORT 5065
|
||||
EPICS_CA_SERVER_PORT 5064
|
||||
EPICS_TS_MIN_WEST 420 (Germany: -120)
|
||||
|
||||
|
||||
To debug knts, set KNTS to 5:
|
||||
KNTS=5
|
||||
export KNTS
|
||||
|
||||
You should do this, however, only if you really want the debugging info.
|
||||
|
||||
|
||||
3) building EPICS
|
||||
-----------------
|
||||
|
||||
Prepare apx. 2 ltr. Tee and type:
|
||||
|
||||
cd <epics>/base
|
||||
gnumake
|
||||
|
||||
Watch for errors and send them to me.
|
||||
|
||||
There might be loads of compiler warnings.
|
||||
Known errors:
|
||||
* gnumake seems to be faster than WIN32 sometimes
|
||||
which results in warnings/errors like
|
||||
"file has modification date in the future"
|
||||
for newly vreated things.
|
||||
Very seldom this is fatal, so you have to
|
||||
stop gnumake and restart it.
|
||||
* This is strange because Windows95/NT don't care
|
||||
about upper/lower case:
|
||||
WIN32 is WIN32, not win32. Gnumake fails
|
||||
if e.g. base/src/include/os/WIN32 is ...win32.
|
||||
|
||||
Good luck !
|
||||
|
||||
-Kay
|
||||
43
README.cxxTemplates
Normal file
43
README.cxxTemplates
Normal file
@@ -0,0 +1,43 @@
|
||||
|
||||
The templates supplied with EPICS base are in $(EPICS)/base/src/cxxTemplates
|
||||
|
||||
In Stroustrups's "The C++ Programming Language" Appendix A: r.14.9
|
||||
(ANSI/ISO resolutions) a mechanism is described for the explicit
|
||||
instantiation of template member functions (that are not inline).
|
||||
At this time some compilers do not support this mechanism (and use
|
||||
a template database or smart linker instead). Other compilers
|
||||
(such as g++) provide only limited support for other forms of
|
||||
instantiation.
|
||||
|
||||
Since there is no defacto standard mechanism for instatiating
|
||||
templates at this time we are defining the preprocessor flag
|
||||
EXPL_TEMPL in the build system when the compiler supports
|
||||
explicit instantiation.
|
||||
|
||||
EPICS codes that use templates may need to include a code block
|
||||
as follow that instantiates the template only once into each
|
||||
program.
|
||||
|
||||
#include <classXYZ.h>
|
||||
#include <templXXX.h>
|
||||
#include <templXXX.cc>
|
||||
|
||||
//
|
||||
// if the compiler supports explicit instantiation of
|
||||
// template member functions
|
||||
//
|
||||
#if defined(EXPL_TEMPL)
|
||||
//
|
||||
// From Stroustrups's "The C++ Programming Language"
|
||||
// Appendix A: r.14.9
|
||||
//
|
||||
// This explicitly instantiates the template class's member
|
||||
// functions into "templInst.o"
|
||||
//
|
||||
template class templXXX <classXYZ>;
|
||||
#endif
|
||||
|
||||
Jeff Hill 3-6-97
|
||||
johill@lanl.gov
|
||||
|
||||
|
||||
34
README.niCpu030
Normal file
34
README.niCpu030
Normal file
@@ -0,0 +1,34 @@
|
||||
|
||||
The CPU030 may need to have the nivxi path set correctly:
|
||||
From the vxWorks shell type "vxitedit" (you may need to
|
||||
loading the NI vxitedit package first)
|
||||
take option 2
|
||||
take option 3
|
||||
type list
|
||||
type modify 0
|
||||
type in the correct path when promped
|
||||
(the path should end in nivxi
|
||||
and should traverse the niCpu030
|
||||
directories shipped with the 030
|
||||
ie something of the form "???/config/niCPU030/nivxi"
|
||||
type save
|
||||
type exit
|
||||
.
|
||||
.
|
||||
.
|
||||
|
||||
see "Getting Started with Your VXIcpu-030" from NI
|
||||
|
||||
You may may need to setup front panel to backplane trigger
|
||||
routing:
|
||||
|
||||
To take a TTL input and map it to VXI backplane ECL trigger 0
|
||||
type in (to the vxWorks shell):
|
||||
|
||||
epvxiRouteTriggerECL(<logical address>, 1, 0)
|
||||
|
||||
where <logical address> specifies the card with the
|
||||
front panel trigger connection.
|
||||
|
||||
johill@lanl.gov
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
----------------------------------------------------------------------------
|
||||
EPICS R3.12.2 Notes for Solaris
|
||||
EPICS Notes for Solaris
|
||||
- By Andrew Johnson
|
||||
|
||||
updated 12-16-96 by Jeff Hill
|
||||
|
||||
----------------------------------------------------------------------------
|
||||
|
||||
Notes:
|
||||
@@ -8,8 +11,10 @@ Notes:
|
||||
1. In order to build EPICS under Solaris 2, you must ensure that the
|
||||
solaris directory /usr/ccs/bin is in your search path.
|
||||
|
||||
2. It is not possible to compile EPICS under Solaris 2 using only the
|
||||
GNU gcc compiler -- you must have the Sun SPARCworks ANSI C compiler.
|
||||
2. It is now possible to compile EPICS under Solaris 2 using either the
|
||||
GNU gcc compiler or the Sun SPARCworks ANSI C compiler. The g++/
|
||||
Sun SPARCworks ANSI C compiler combination has compiled and linked
|
||||
without errors but has not been extensively tested.
|
||||
|
||||
3. EPICS under Solaris 2 no longer uses the UCB compatability libraries.
|
||||
In order to ensure that the /usr/ucblib files are not inherited, you
|
||||
|
||||
46
config/CONFIG
Normal file
46
config/CONFIG
Normal file
@@ -0,0 +1,46 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# The developer may edit this file.
|
||||
|
||||
# EPICS base definitions
|
||||
#
|
||||
include $(EPICS_BASE)/config/CONFIG_COMMON
|
||||
|
||||
# Site-specific build options
|
||||
#
|
||||
include $(EPICS_BASE)/config/CONFIG_SITE
|
||||
|
||||
# assume T_A is the host arch if not specified
|
||||
ifndef T_A
|
||||
T_A = $(HOST_ARCH)
|
||||
endif
|
||||
|
||||
# Architecture specific definitions
|
||||
#
|
||||
include $(EPICS_BASE)/config/CONFIG.$(T_A)
|
||||
#
|
||||
-include $(EPICS_BASE)/config/CONFIG_SITE.$(T_A)
|
||||
|
||||
# User specific definitions
|
||||
#
|
||||
-include $(HOME)/EPICS_CONFIG
|
||||
-include $(HOME)/EPICS_CONFIG.$(HOST_ARCH)
|
||||
|
||||
# All EPICS options other than BUILD_TYPE
|
||||
# may be overridden here.
|
||||
#
|
||||
# EXAMPLES
|
||||
# --------
|
||||
# Build client objects statically ? must be either YES or NO
|
||||
#STATIC_BUILD=NO
|
||||
# Unix Optimization, must be either YES or NO
|
||||
#UNIX_OPT=YES
|
||||
# VxWorks Optimization, must be either YES or NO
|
||||
#VX_OPT=YES
|
||||
# Generate Verbose Compiler Warnings for Unix, must be either YES or NO
|
||||
#UNIX_WARN=YES
|
||||
# Generate Verbose Compiler Warnings for VxWorks, must be either YES or NO
|
||||
#VX_WARN=YES
|
||||
#etc.
|
||||
#
|
||||
131
config/CONFIG.Linux
Normal file
131
config/CONFIG.Linux
Normal file
@@ -0,0 +1,131 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# This file is maintained by the EPICS community.
|
||||
|
||||
# Compiler and utility invocation (supply path to compiler here)
|
||||
# (with warning flags built in)
|
||||
# Paths to compilers
|
||||
|
||||
# BUILD_TYPE
|
||||
# Currently either Vx or Unix
|
||||
BUILD_TYPE = Unix
|
||||
|
||||
GCC = gcc
|
||||
ACC = acc
|
||||
SUNCC = cc
|
||||
AR = ar
|
||||
ARFLAGS = r
|
||||
ARCMD = $(AR) $(ARFLAGS)
|
||||
RANLIB = ranlib
|
||||
RANLIBFLAGS = -t
|
||||
YACC = $(EYACC)
|
||||
LEX = $(ELEX)
|
||||
G++ = g++
|
||||
CCC = CC
|
||||
MV = mv
|
||||
RMDIR = rm -rf
|
||||
MKDIR = mkdir
|
||||
CHMOD = "/bin/chmod"
|
||||
WHAT = what
|
||||
|
||||
ACC_ANSI_INVOKE_W_NO = $(ACC) -Xa -w
|
||||
ACC_ANSI_INVOKE_W_YES = $(ACC) -Xa
|
||||
ACC_TRAD_INVOKE_W_NO = $(ACC) -Xs -w
|
||||
ACC_TRAD_INVOKE_W_YES = $(ACC) -Xs
|
||||
ACC_STRICT_INVOKE_W_NO = $(ACC) -Xc -w
|
||||
ACC_STRICT_INVOKE_W_YES = $(ACC) -Xc
|
||||
SUNCC_TRAD_INVOKE_W_NO = $(SUNCC) -w
|
||||
SUNCC_TRAD_INVOKE_W_YES = $(SUNCC)
|
||||
GCC_ANSI_INVOKE_W_NO = $(GCC) -ansi -w
|
||||
GCC_ANSI_INVOKE_W_YES = $(GCC) -ansi
|
||||
GCC_STRICT_INVOKE_W_NO = $(GCC) -ansi -pedantic
|
||||
GCC_STRICT_INVOKE_W_YES = $(GCC) -ansi -Wall -pedantic
|
||||
GCC_TRAD_INVOKE_W_NO = $(GCC) -traditional -w
|
||||
GCC_TRAD_INVOKE_W_YES = $(GCC) -traditional
|
||||
|
||||
C_OLD = $($(STANDARD)_TRAD_INVOKE_W_$(UNIX_WARN))
|
||||
C_ANSI = $($(ANSI)_ANSI_INVOKE_W_$(UNIX_WARN))
|
||||
C_STRICT = $($(ANSI)_STRICT_INVOKE_W_YES)
|
||||
CC = $(C_$(CMPLR))
|
||||
|
||||
CCC_NORMAL_INVOKE_W_NO = $(CCC) +p
|
||||
CCC_NORMAL_INVOKE_W_YES = $(CCC) +p +w
|
||||
CCC_STRICT_INVOKE_W_YES = $(CCC) +p +w
|
||||
CCC_LD_FLAGS =
|
||||
CCC_LD_LIBS =
|
||||
CCC_TEMPL_INST_FLAG =
|
||||
G++_NORMAL_INVOKE_W_NO = $(G++) -ansi -pedantic -w
|
||||
G++_NORMAL_INVOKE_W_YES = $(G++) -ansi -pedantic -Wall
|
||||
G++_STRICT_INVOKE_W_YES = $(G++) -ansi -pedantic -Wtraditional -Wall \
|
||||
-Wmissing-prototypes -Woverloaded-virtual \
|
||||
-Wwrite-strings -Wconversion -Wstrict-prototypes\
|
||||
-Wpointer-arith -Winline
|
||||
G++_TEMPL_INST_FLAG = -DEXPL_TEMPL
|
||||
|
||||
CXX_NORMAL = $($(CPLUSPLUS)_NORMAL_INVOKE_W_$(UNIX_WARN))
|
||||
CXX_STRICT = $($(CPLUSPLUS)_STRICT_INVOKE_W_YES)
|
||||
TEMPL_INST_CXXFLAG = $($(CPLUSPLUS)_TEMPL_INST_FLAG)
|
||||
|
||||
# GNU make likes CXX instead of CCC
|
||||
CXX = $(CXX_$(CXXCMPLR))
|
||||
|
||||
# Static Build options
|
||||
ACC_SFLAGS_YES= -Bstatic
|
||||
ACC_SFLAGS_NO=
|
||||
CC_SFLAGS_YES= -Bstatic
|
||||
CC_SFLAGS_NO=
|
||||
GCC_SFLAGS_YES= -static
|
||||
GCC_SFLAGS_NO=
|
||||
|
||||
SF_OLD = $($(STANDARD)_SFLAGS_$(STATIC_BUILD))
|
||||
SF_ANSI = $($(ANSI)_SFLAGS_$(STATIC_BUILD))
|
||||
SF_STRICT = $(SF_ANSI)
|
||||
UNIX_SFLAGS = $(SF_$(CMPLR))
|
||||
|
||||
# Optimization
|
||||
OPTIM_YES = -O
|
||||
OPTIM_NO =
|
||||
UNIX_OPT_FLAGS = $(OPTIM_$(UNIX_OPT))
|
||||
|
||||
# Include files
|
||||
UNIX_INCLUDES = -I. -I.. $(USR_INCLUDES) -I$(INSTALL_INCLUDE) -I$(EPICS_BASE_INCLUDE) \
|
||||
-I$(EPICS_BASE_INCLUDE)/os/$(T_A)
|
||||
|
||||
# Operating system flags
|
||||
OP_SYS_FLAGS = -DUNIX
|
||||
|
||||
UNIX_LDFLAGS = -L$(EPICS_BASE_LIB)
|
||||
UNIX_LDLIBS = -lm
|
||||
|
||||
ARCH_DEP_CFLAGS = -D_X86_ -Dlinux
|
||||
ARCH_DEP_CXXFLAGS = $(ARCH_DEP_CFLAGS)
|
||||
|
||||
UNIX_CFLAGS = $(UNIX_SFLAGS) $(UNIX_INCLUDES) $(OP_SYS_FLAGS)
|
||||
|
||||
UNIX_CXXFLAGS = $(UNIX_CFLAGS)
|
||||
|
||||
# Target specific flags
|
||||
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
|
||||
TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS)
|
||||
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS)
|
||||
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
|
||||
TARGET_LDLIBS = $($(basename $@)_LDLIBS)
|
||||
TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS)
|
||||
|
||||
CFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(UNIX_CFLAGS)
|
||||
CXXFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CXXFLAGS) $(USR_CXXFLAGS) \
|
||||
$(ARCH_DEP_CXXFLAGS) $(UNIX_CXXFLAGS) $(TEMPL_INST_CXXFLAG)
|
||||
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS)
|
||||
|
||||
LDFLAGS = $(SPECIAL_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(UNIX_LDFLAGS)
|
||||
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(ARCH_DEP_LDLIBS) $(UNIX_LDLIBS)
|
||||
|
||||
# Override SUN defaults
|
||||
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
|
||||
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
|
||||
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
|
||||
LINK.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)
|
||||
|
||||
DEPENDS_RULE.c = -$(COMPILE.c) -M $(SRCS.c) > .DEPENDS
|
||||
DEPENDS_RULE.cc = @echo no DEPENDS_RULE.cc defined in CONFIG.Linux
|
||||
121
config/CONFIG.Vx.68k
Normal file
121
config/CONFIG.Vx.68k
Normal file
@@ -0,0 +1,121 @@
|
||||
|
||||
# $Id$
|
||||
#
|
||||
# This file is maintained by the EPICS community.
|
||||
|
||||
AR = $(VX_GNU_BIN)/ar68k
|
||||
RANLIB = $(VX_GNU_BIN)/ranlib68k
|
||||
YACC = $(EYACC)
|
||||
LEX = $(ELEX)
|
||||
CC = $(VX_GNU_BIN)/cc68k -B$(VX_GNU_LIB)/gcc-lib/ -nostdinc
|
||||
CPP = $(VX_GNU_BIN)/cpp68k -nostdinc
|
||||
#CPP = $(CC) -E
|
||||
GCC = $(CC)
|
||||
LD = $(VX_GNU_BIN)/ld68k -r
|
||||
EPICS_LDLIBS =
|
||||
MV=mv
|
||||
RM=rm -f
|
||||
MKDIR = mkdir
|
||||
RMDIR=rm -rf
|
||||
WHAT = what
|
||||
|
||||
#----------------------------
|
||||
# Only G++ currently supported
|
||||
CPLUSPLUS = G++
|
||||
CXXCMPLR = NORMAL
|
||||
VX_OPT = YES
|
||||
BOARD = $(subst mv,MV,$(T_A))
|
||||
CPU = 68000
|
||||
OS = VXWORKS
|
||||
#----------------------------
|
||||
|
||||
CCC = $(VX_GNU_BIN)/cc68k -B$(VX_GNU_LIB)/gcc-lib/ -nostdinc
|
||||
AR_CCC = $(VX_GNU_BIN)/ar68k
|
||||
CPP_CCC = $(VX_GNU_BIN)/cpp68k -nostdinc
|
||||
RANLIB_CCC = $(VX_GNU_BIN)/ranlib68k
|
||||
LD_CCC = $(VX_GNU_BIN)/ld68k
|
||||
CCC_CCFLAGS =
|
||||
CCC_ARCH_DEP_CCFLAGS =
|
||||
CCC_ARCH_DEP_LDFLAGS =
|
||||
|
||||
G++ = $(GNU_BIN)/sun3-g++ -B$(GNU_LIB)/gcc-lib/ -nostdinc -DEXPL_TEMPL
|
||||
AR_G++ = $(GNU_BIN)/sun3-ar
|
||||
CPP_G++ = $(GNU_BIN)/sun3-cpp
|
||||
RANLIB_G++ = $(GNU_BIN)/sun3-ranlib
|
||||
LD_G++ = $(GNU_BIN)/sun3-ld
|
||||
G++_ARCH_DEP_CCFLAGS = --no-builtin -Wa,"-m68040" -DOS_EQ_$(OS) \
|
||||
-DBOARD_EQ_$(BOARD) -DCPU_EQ_$(CPU) -DBOARD=$(BOARD)
|
||||
G++_ARCH_DEP_LDFLAGS = -Ur -N -T$(EPICS_BASE_BIN)/vxldscript.MRI
|
||||
|
||||
CCC_NORMAL = $(CCC)
|
||||
CCC_STRICT = $(CCC) -ansi -pedantic -Wtraditional \
|
||||
-Wmissing-prototypes -Woverloaded-virtual \
|
||||
-Wwrite-strings -Wconversion -Wstrict-prototypes\
|
||||
-Wpointer-arith -Winline
|
||||
G++_NORMAL = $(G++)
|
||||
G++_STRICT = $(G++) -ansi -pedantic -Wtraditional
|
||||
|
||||
CXX = $($(CPLUSPLUS)_$(CXXCMPLR))
|
||||
AR_CXX = $(AR_$(CPLUSPLUS))
|
||||
CPP_CXX = $(CPP_$(CPLUSPLUS))
|
||||
RANLIB_CXX = $(RANLIB_$(CPLUSPLUS))
|
||||
LD_CXX = $(LD_$(CPLUSPLUS))
|
||||
|
||||
ARCH_DEP_CXXFLAGS += $($(CPLUSPLUS)_ARCH_DEP_CCFLAGS) $(ARCH_DEP_CFLAGS)
|
||||
ARCH_DEP_CXXLDFLAGS = $($(CPLUSPLUS)_ARCH_DEP_LDFLAGS) $(ARCH_DEP_LDFLAGS)
|
||||
|
||||
|
||||
# special c library requirements
|
||||
SPECIAL_LANG =
|
||||
|
||||
# Compiler flags, don't mess with this
|
||||
# Optimization flags
|
||||
VX_OPT_YES = -O
|
||||
VX_OPT_NO =
|
||||
VX_OPT_FLAGS = $(VX_OPT_$(VX_OPT))
|
||||
|
||||
# Include files
|
||||
VX_INCLUDES = -I. -I.. $(USR_INCLUDES) -I$(INSTALL_INCLUDE) -I$(EPICS_BASE_INCLUDE) \
|
||||
-I$(EPICS_BASE_INCLUDE)/os/vxWorks -I$(VX_INCLUDE)
|
||||
|
||||
# Warnings
|
||||
#At some time we should turn on pedantic
|
||||
VX_WARN_YES = -Wall -pedantic -ansi
|
||||
#VX_WARN_YES = -Wall
|
||||
VX_WARN_NO =
|
||||
VX_WARN_FLAGS = $(VX_WARN_$(VX_WARN))
|
||||
|
||||
# Operating system flags
|
||||
VX_OP_SYS_FLAGS = -DvxWorks -DV5_vxWorks
|
||||
|
||||
# Arch dependent flags are set in CONFIG_ARCH.*
|
||||
VX_CFLAGS = $(VX_OPT_FLAGS) $(VX_WARN_FLAGS) \
|
||||
$(VX_INCLUDES) $(VX_OP_SYS_FLAGS)
|
||||
VX_CXXFLAGS += $(VX_CFLAGS)
|
||||
|
||||
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
|
||||
TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS)
|
||||
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
|
||||
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS)
|
||||
TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS)
|
||||
|
||||
CFLAGS = $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(VX_CFLAGS)
|
||||
CXXFLAGS = $(TARGET_CXXFLAGS) $(USR_CXXFLAGS) $(ARCH_DEP_CXXFLAGS) $(VX_CXXFLAGS)
|
||||
LDFLAGS = $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(VX_LDFLAGS)
|
||||
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(ARCH_DEP_LDLIBS) $(VX_LDLIBS)
|
||||
CXXLDLIBS = $(TARGET_LDLIBS) $(USR_CXXLDLIBS) $(ARCH_DEP_LDLIBS) $(VX_LDLIBS)
|
||||
CXXLDFLAGS = $(TARGET_LDFLAGS) $(USR_CXXLDFLAGS) $(ARCH_DEP_CXXLDFLAGS) $(VX_LDFLAGS)
|
||||
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS)
|
||||
# Build compile line here
|
||||
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
|
||||
LINK.c = $(LD) $(LDFLAGS) -o
|
||||
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
|
||||
LINK.cc = $(LD_CXX) $(CXXLDFLAGS) -o
|
||||
|
||||
CPPSNCFLAGS = $(VX_INCLUDES)
|
||||
|
||||
DEPENDS_RULE.c = -$(COMPILE.c) -M $(SRCS.c) >> .DEPENDS
|
||||
DEPENDS_RULE.cc = -$(COMPILE.cc) -M $(SRCS.cc) >> .DEPENDS
|
||||
|
||||
# Allow site host architecture specific overrides
|
||||
-include $(EPICS_BASE)/config/CONFIG_SITE.$(BUILD_TYPE).$(ARCH_CLASS).$(HOST_ARCH)
|
||||
92
config/CONFIG.Vx.pc486
Normal file
92
config/CONFIG.Vx.pc486
Normal file
@@ -0,0 +1,92 @@
|
||||
# $Id$
|
||||
#
|
||||
# This file is maintained by the EPICS community.
|
||||
|
||||
# OLDINSTALL def used only for releases prior to R3.12.2.2
|
||||
# Unix Compiler and other Utilities
|
||||
OLDINSTALL = echo CONFIG.Vx.486 OLDINSTALL
|
||||
|
||||
CP =$(PERL) $(EPICS_BASE)/src/tools/cp.pl
|
||||
MV =$(PERL) $(EPICS_BASE)/src/tools/mv.pl
|
||||
RM =$(PERL) $(EPICS_BASE)/src/tools/rm.pl -f
|
||||
MKDIR=$(PERL) $(EPICS_BASE)/src/tools/mkdir.pl
|
||||
RMDIR=$(PERL) $(EPICS_BASE)/src/tools/rm.pl -rf
|
||||
CHMOD=echo
|
||||
|
||||
# overrides defines in CONFIG_SITE that don't fit Tornado
|
||||
#
|
||||
# We are lucky because
|
||||
# this should not really be site specific
|
||||
#
|
||||
# (if Tornado is installed correctly
|
||||
# -> WIND_BASE, WIND_HOST_TYPE set )
|
||||
#
|
||||
# At first we hack a little bit on WIND_BASE
|
||||
# to convert the DOS style into a Unix style path:
|
||||
#
|
||||
# If C: was in WIND_BASE, it's converted into c: (lowercase),
|
||||
# then c: is removed and all '\' are converted into '/'.
|
||||
SANE_WIND_BASE := $(subst \,/,$(subst c:,,$(subst C:,c:,$(WIND_BASE))))
|
||||
VX_DIR := $(SANE_WIND_BASE)/target
|
||||
VX_GNU := $(SANE_WIND_BASE)/host/$(WIND_HOST_TYPE)
|
||||
VX_GNU_BIN := $(VX_GNU)/bin
|
||||
VX_GNU_LIB := $(VX_GNU)/lib
|
||||
VX_IMAGE = $(VX_CONFIG_DIR)/$(T_A)/vxWorks
|
||||
VX_IMAGE_SYM = $(VX_CONFIG_DIR)/$(T_A)/vxWorks.sym
|
||||
|
||||
|
||||
AR = $(VX_GNU_BIN)/ar386
|
||||
RANLIB = $(VX_GNU_BIN)/ranlib386
|
||||
YACC = $(EYACC)
|
||||
LEX = $(ELEX)
|
||||
CC = $(VX_GNU_BIN)/cc386 -B$(VX_GNU_LIB)/gcc-lib/ -nostdinc -fno-builtin -fno-defer-pop
|
||||
CPP = $(VX_GNU_BIN)/cpp386 -nostdinc
|
||||
#CPP = $(CC) -E
|
||||
GCC = $(CC)
|
||||
LD = $(VX_GNU_BIN)/ld386 -r
|
||||
EPICS_LDLIBS =
|
||||
|
||||
# special c library requirements
|
||||
SPECIAL_LANG =
|
||||
|
||||
# Compiler flags, don't mess with this
|
||||
# Optimization flags
|
||||
VX_OPT_YES = -O
|
||||
VX_OPT_NO = -O0
|
||||
VX_OPT_FLAGS = $(VX_OPT_$(VX_OPT))
|
||||
|
||||
# Include files
|
||||
VX_INCLUDES = -I. -I.. $(USR_INCLUDES) -I$(INSTALL_INCLUDE) -I$(EPICS_BASE_INCLUDE) \
|
||||
-I$(EPICS_BASE_INCLUDE)/os/vxWorks -I$(VX_INCLUDE)
|
||||
|
||||
# Warnings
|
||||
#At some time we should turn on pedantic
|
||||
#VX_WARN_YES = -Wall -pedantic
|
||||
VX_WARN_YES = -W
|
||||
VX_WARN_NO =
|
||||
VX_WARN_FLAGS = $(VX_WARN_$(VX_WARN))
|
||||
|
||||
# Operating system flags
|
||||
VX_OP_SYS_FLAGS = -DvxWorks -DV5_vxWorks
|
||||
|
||||
# Arch dependent flags are set in CONFIG_ARCH.*
|
||||
VX_CFLAGS = $(VX_OPT_FLAGS) $(VX_WARN_FLAGS) \
|
||||
$(VX_INCLUDES) $(VX_OP_SYS_FLAGS)
|
||||
|
||||
VX_LDFLAGS = -o
|
||||
|
||||
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
|
||||
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
|
||||
|
||||
CFLAGS = $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(VX_CFLAGS)
|
||||
LDFLAGS = $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(VX_LDFLAGS)
|
||||
|
||||
# Build compile line here
|
||||
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
|
||||
COMPILE.cc = $(CC) -x 'c++' -DEXPL_TEMPL $(CFLAGS) $(CPPFLAGS) -c
|
||||
LINK.c = $(LD) $(LDFLAGS)
|
||||
|
||||
CPPSNCFLAGS = $(USR_INCLUDES) $(VX_INCLUDES)
|
||||
|
||||
DEPENDS_RULE.c = -$(COMPILE.c) -M $(SRCS.c) >> .DEPENDS
|
||||
DEPENDS_RULE.cc = @echo no DEPENDS_RULE.cc defined in CONFIG.68k
|
||||
131
config/CONFIG.WIN32
Normal file
131
config/CONFIG.WIN32
Normal file
@@ -0,0 +1,131 @@
|
||||
# CONFIG.WIN32 -kuk-
|
||||
#
|
||||
# The current make-system for WIN32
|
||||
# needs
|
||||
# * gnumake (OK, sources for WIN32 are available)
|
||||
# * Perl (e.g. from www.perl.com )
|
||||
# * a UNIX-like shell (ouch!)
|
||||
#
|
||||
# I found no fully operational shell and no sources for WIN32 so far,
|
||||
# Cygnus' bash e.g. cannot handle this:
|
||||
# (echo a>a; echo b>>a)
|
||||
# Right now I use the knts that I wrote and simplified scripts.
|
||||
# Jeff eliminated many shell-lines in Makefile.*.
|
||||
#
|
||||
|
||||
|
||||
# Use std path variables from ms
|
||||
HOME = $(HOMEDRIVE)$(HOMEPATH)
|
||||
|
||||
# BUILD_TYPE
|
||||
# Currently either Vx or Host (latter used to be Unix
|
||||
BUILD_TYPE=Host
|
||||
|
||||
#
|
||||
# optimize/debug flags
|
||||
#
|
||||
HOST_OPT = YES
|
||||
CXX_OPT_FLAGS_YES = -Ox
|
||||
# -Zi : included debugging info
|
||||
CXX_OPT_FLAGS_NO = -Zi
|
||||
CXX_OPT_FLAGS = $(CXX_OPT_FLAGS_$(HOST_OPT))
|
||||
LINK_OPT_FLAGS_YES =
|
||||
LINK_OPT_FLAGS_NO = -debug
|
||||
LINK_OPT_FLAGS = $(LINK_OPT_FLAGS_$(HOST_OPT))
|
||||
|
||||
# to identify the general architecture class:
|
||||
# should be BSD, SYSV, WIN32, ...
|
||||
# is: WIN32, sun4, hpux, linux, ...
|
||||
#
|
||||
ARCH_CLASS=WIN32
|
||||
|
||||
# ifdef WIN32 looks better that ifeq ($(ARCH_CLASS),WIN32) ??
|
||||
WIN32=1
|
||||
|
||||
# Compiler and utility invocation (supply path to compiler here)
|
||||
# (with warning flags built in)
|
||||
# Paths to compilers
|
||||
YACC = $(EYACC)
|
||||
LEX = $(ELEX)
|
||||
CC = cl -nologo
|
||||
CP = $(PERL) $(EPICS_BASE)/src/tools/cp.pl
|
||||
MV = $(PERL) $(EPICS_BASE)/src/tools/mv.pl
|
||||
RM = $(PERL) $(EPICS_BASE)/src/tools/rm.pl -f
|
||||
MKDIR = $(PERL) $(EPICS_BASE)/src/tools/mkdir.pl
|
||||
RMDIR = $(PERL) $(EPICS_BASE)/src/tools/rm.pl -rf
|
||||
EXE=.exe
|
||||
OBJ=.obj
|
||||
|
||||
# Include files
|
||||
HOST_INCLUDES = -I. -I.. $(USR_INCLUDES) -I$(INSTALL_INCLUDE) \
|
||||
-I$(EPICS_BASE_INCLUDE) -I$(EPICS_BASE_INCLUDE)/os/$(ARCH_CLASS)
|
||||
|
||||
# Operating system flags (from win32.mak)
|
||||
#
|
||||
# __STDC__=0 is a real great idea of Jeff that gives us both:
|
||||
# 1) define STDC for EPICS code (pretend ANSI conformance)
|
||||
# 2) set it to 0 to use MS C "extensions" (open for _open etc.)
|
||||
# because MS uses: if __STDC__ ... disable many nice things
|
||||
#
|
||||
# -MDd : use MSVCRTD (run-time as DLL, multi-thread support)
|
||||
# this also calls for _DLL
|
||||
#
|
||||
OP_SYS_FLAGS:=-MDd $(CXX_OPT_FLAGS) -VMG -VMV -DWIN32 -D_WIN32 -D_DEBUG -D_WINDOWS \
|
||||
-D_X86_ -D_NTSDK -D_DLL -D__STDC__=0
|
||||
|
||||
|
||||
HOST_LDLIBS:=user32.lib kernel32.lib wsock32.lib advapi32.lib winmm.lib
|
||||
HOST_LDFLAGS:=-nologo -libpath:$(EPICS_BASE_LIB)
|
||||
|
||||
# Files and flags needed to link DLLs (used in RULES.Host)
|
||||
#
|
||||
# Strange but seems to work without: WIN32_DLLFLAGS should contain
|
||||
# an entry point:
|
||||
# '-entry:_DllMainCRTStartup$(DLLENTRY)'
|
||||
DLLENTRY:=@12
|
||||
|
||||
# yes, for MS it's I386 for 386, 486, Pentium!
|
||||
# don't mix this with VxWorks which has different BSPs for [34]86 !
|
||||
WIN32_DLLFLAGS:=$(HOST_LDFLAGS) $(HOST_LDLIBS)\
|
||||
-subsystem:windows -dll -incremental:no $(LINK_OPT_FLAGS) -machine:I386
|
||||
|
||||
|
||||
ARCH_DEP_CFLAGS =
|
||||
ARCH_DEP_CXXFLAGS = $(ARCH_DEP_CFLAGS)
|
||||
HOST_CFLAGS = $(HOST_SFLAGS) $(HOST_INCLUDES) $(OP_SYS_FLAGS)
|
||||
|
||||
HOST_CXXFLAGS = $(HOST_CFLAGS)
|
||||
|
||||
# Target specific flags
|
||||
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
|
||||
TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS)
|
||||
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS)
|
||||
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
|
||||
TARGET_LDLIBS = $($(basename $@)_LDLIBS)
|
||||
TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS)
|
||||
|
||||
CFLAGS = $(HOST_OPT_FLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(HOST_CFLAGS)
|
||||
CXXFLAGS = $(HOST_OPT_FLAGS) $(TARGET_CXXFLAGS) $(USR_CXXFLAGS) $(ARCH_DEP_CXXFLAGS) $(HOST_CXXFLAGS)
|
||||
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS)
|
||||
|
||||
CXX=cl -nologo
|
||||
|
||||
LDFLAGS=$(SPECIAL_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(HOST_LDFLAGS)
|
||||
LDLIBS=$(TARGET_LDLIBS) $(USR_LDLIBS) $(ARCH_DEP_LDLIBS) $(HOST_LDLIBS)
|
||||
|
||||
# Override SUN defaults
|
||||
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
|
||||
|
||||
# Problem: MS Visual C++ does not recognize *.cc as C++ source,
|
||||
# we have to compile xx.cc using the flag -Tp xx.cc,
|
||||
# i.e. -Tp has to be immediately before the source file name
|
||||
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -DEXPL_TEMPL -c -Tp
|
||||
|
||||
LINK.c=link $(LINK_OPT_FLAGS) $(LDFLAGS) -out:$@
|
||||
LINK.cc=$(LINK.c)
|
||||
|
||||
# The DEPENDS_RULE may be a script on other systems,
|
||||
# if you need different rules for .c and .cc,
|
||||
# that script has to figure out what to call.
|
||||
#
|
||||
DEPENDS_RULE = @echo no DEPENDS_RULE defined in CONFIG.WIN32
|
||||
143
config/CONFIG.alpha
Normal file
143
config/CONFIG.alpha
Normal file
@@ -0,0 +1,143 @@
|
||||
# CONFIG.Unix.alpha
|
||||
#
|
||||
# This file is maintained by the EPICS community.
|
||||
|
||||
# BUILD_TYPE
|
||||
# Currently either Vx or Host
|
||||
BUILD_TYPE = Host
|
||||
|
||||
ARCH_CLASS = alpha
|
||||
|
||||
# Compiler and utility invocation (supply path to compiler here)
|
||||
# (with warning flags built in)
|
||||
# Paths to compilers
|
||||
GCC = gcc
|
||||
ACC = cc
|
||||
|
||||
AR = ar -rc
|
||||
_AR = $(AR) $(ARFLAGS)
|
||||
G++_AR = $(_AR)
|
||||
CCC_AR = $(AR)
|
||||
ARCMD = $($(CPLUSPLUS)_AR)
|
||||
|
||||
RANLIB = ranlib
|
||||
YACC = $(EYACC)
|
||||
LEX = $(ELEX)
|
||||
G++ = g++
|
||||
CCC = cc
|
||||
|
||||
CP=cp
|
||||
MV = mv
|
||||
RM=rm -f
|
||||
RMDIR = rm -rf
|
||||
MKDIR = mkdir
|
||||
CHMOD = "/bin/chmod"
|
||||
WHAT = what
|
||||
|
||||
EXE=
|
||||
OBJ=.o
|
||||
|
||||
|
||||
ACC_ANSI_INVOKE_W_NO = $(ACC) -std -w
|
||||
ACC_ANSI_INVOKE_W_YES = $(ACC) -std
|
||||
ACC_STRICT_INVOKE_W_YES = $(ACC) -std1 -w
|
||||
ACC_STRICT_INVOKE_W_NO = $(ACC) -std1
|
||||
ACC_TRAD_INVOKE_W_NO = $(ACC) -std0 -w
|
||||
ACC_TRAD_INVOKE_W_YES = $(ACC) -std0
|
||||
GCC_ANSI_INVOKE_W_NO = $(GCC) -ansi -w
|
||||
GCC_ANSI_INVOKE_W_YES = $(GCC) -ansi
|
||||
GCC_STRICT_INVOKE_W_NO = $(GCC) -ansi -pedantic
|
||||
GCC_STRICT_INVOKE_W_YES = $(GCC) -ansi -Wall -pedantic
|
||||
GCC_TRAD_INVOKE_W_NO = $(GCC) -traditional -w
|
||||
GCC_TRAD_INVOKE_W_YES = $(GCC) -traditional
|
||||
|
||||
C_OLD = $($(STANDARD)_TRAD_INVOKE_W_$(UNIX_WARN))
|
||||
C_ANSI = $($(ANSI)_ANSI_INVOKE_W_$(UNIX_WARN))
|
||||
C_STRICT = $($(ANSI)_STRICT_INVOKE_W_YES)
|
||||
CC = $(C_$(CMPLR))
|
||||
|
||||
CCC_NORMAL_INVOKE_W_NO = $(CCC) +p
|
||||
CCC_NORMAL_INVOKE_W_YES = $(CCC) +p +w
|
||||
CCC_STRICT_INVOKE_W_YES = $(CCC) +p +w
|
||||
CCC_LD_FLAGS =
|
||||
CCC_LD_LIBS =
|
||||
CCC_TEMPL_INST_FLAG =
|
||||
G++_NORMAL_INVOKE_W_NO = $(G++) -ansi -pedantic -w
|
||||
G++_NORMAL_INVOKE_W_YES = $(G++) -ansi -pedantic -Wall
|
||||
G++_STRICT_INVOKE_W_YES = $(G++) -ansi -pedantic -Wtraditional -Wall \
|
||||
-Wmissing-prototypes -Woverloaded-virtual \
|
||||
-Wwrite-strings -Wconversion -Wstrict-prototypes\
|
||||
-Wpointer-arith -Winline
|
||||
G++_TEMPL_INST_FLAG = -DEXPL_TEMPL
|
||||
|
||||
CXX_NORMAL = $($(CPLUSPLUS)_NORMAL_INVOKE_W_$(UNIX_WARN))
|
||||
CXX_STRICT = $($(CPLUSPLUS)_STRICT_INVOKE_W_YES)
|
||||
TEMPL_INST_CXXFLAG = $($(CPLUSPLUS)_TEMPL_INST_FLAG)
|
||||
|
||||
# GNU make likes CXX instead of CCC
|
||||
CXX = $(CXX_$(CXXCMPLR))
|
||||
|
||||
# Static Build options
|
||||
ACC_SFLAGS_YES= -non_shared
|
||||
ACC_SFLAGS_NO= -call_shared
|
||||
CC_SFLAGS_YES= -non_shared
|
||||
CC_SFLAGS_NO= -call_shared
|
||||
GCC_SFLAGS_YES= -static
|
||||
GCC_SFLAGS_NO=
|
||||
|
||||
SF_OLD = $($(STANDARD)_SFLAGS_$(STATIC_BUILD))
|
||||
SF_ANSI = $($(ANSI)_SFLAGS_$(STATIC_BUILD))
|
||||
SF_STRICT = $(SF_ANSI)
|
||||
UNIX_SFLAGS = $(SF_$(CMPLR))
|
||||
|
||||
# Optimization
|
||||
OPTIM_YES = -O
|
||||
OPTIM_NO =
|
||||
UNIX_OPT_FLAGS = $(OPTIM_$(UNIX_OPT))
|
||||
|
||||
# Include files
|
||||
UNIX_INCLUDES = -I. -I.. $(USR_INCLUDES) -I$(INSTALL_INCLUDE) -I$(EPICS_BASE_INCLUDE) \
|
||||
-I$(EPICS_BASE_INCLUDE)/os/$(T_A)
|
||||
|
||||
# Operating system flags
|
||||
OP_SYS_FLAGS = -DUNIX
|
||||
|
||||
SPECIAL_LDFLAGS =
|
||||
UNIX_LDFLAGS = -L$(EPICS_BASE_LIB)
|
||||
UNIX_LDLIBS = -lm
|
||||
|
||||
# Architecture specific build flags
|
||||
ARCH_DEP_CFLAGS = -D_OSF_SOURCE
|
||||
ARCH_DEP_CXXFLAGS = $(ARCH_DEP_CFLAGS)
|
||||
ARCH_DEP_LDLIBS = -lnsl
|
||||
|
||||
UNIX_CFLAGS = $(UNIX_SFLAGS) $(UNIX_INCLUDES) $(OP_SYS_FLAGS)
|
||||
|
||||
UNIX_CXXFLAGS = $(UNIX_CFLAGS)
|
||||
|
||||
# Target specific flags
|
||||
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
|
||||
TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS)
|
||||
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS)
|
||||
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
|
||||
TARGET_LDLIBS = $($(basename $@)_LDLIBS)
|
||||
TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS)
|
||||
|
||||
CFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(UNIX_CFLAGS)
|
||||
CXXFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CXXFLAGS) $(USR_CXXFLAGS) \
|
||||
$(ARCH_DEP_CXXFLAGS) $(UNIX_CXXFLAGS) $(TEMPL_INST_CXXFLAG)
|
||||
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS)
|
||||
|
||||
LDFLAGS = $(SPECIAL_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(UNIX_LDFLAGS)
|
||||
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(ARCH_DEP_LDLIBS) $(UNIX_LDLIBS)
|
||||
|
||||
# Override defaults
|
||||
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
|
||||
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
|
||||
# Unlike the 'Unix' makesystem, output flags -o .. are now part of LINK.c[c]
|
||||
LINK.c = $(CC) -o $@ $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
|
||||
LINK.cc = $(CXX) -o $@ $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)
|
||||
|
||||
DEPEND_RULE.c = @echo no DEPENDS_RULE.c defined in CONFIG.alpha
|
||||
DEPEND_RULE.cc = @echo no DEPENDS_RULE.cc defined in CONFIG.alpha
|
||||
|
||||
138
config/CONFIG.cygwin32
Executable file
138
config/CONFIG.cygwin32
Executable file
@@ -0,0 +1,138 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# This file is maintained by the EPICS community.
|
||||
|
||||
BUILD_TYPE = Host
|
||||
|
||||
ARCH_CLASS = cygwin32
|
||||
|
||||
GCC = gcc
|
||||
G++ = g++
|
||||
|
||||
#==========================
|
||||
# Fix for cygwin32 beta17.1 includes
|
||||
CXX_INCLUDES = /usr/local/include/g++
|
||||
#==========================
|
||||
|
||||
# Override values in CONFIG_SITE
|
||||
ANSI=GCC
|
||||
STANDARD=GCC
|
||||
CPLUSPLUS=G++
|
||||
|
||||
EXE=.exe
|
||||
|
||||
OBJ=.o
|
||||
|
||||
AR = ar
|
||||
_AR = $(AR) $(ARFLAGS)
|
||||
G++_AR = $(_AR)
|
||||
ARCMD = $($(CPLUSPLUS)_AR)
|
||||
|
||||
RANLIB = ranlib
|
||||
YACC = $(EYACC)
|
||||
LEX = $(ELEX)
|
||||
RMDIR = rm -rf
|
||||
MKDIR = mkdir
|
||||
CP=cp
|
||||
MV=mv
|
||||
RM=rm -f
|
||||
CHMOD = xxxx
|
||||
WHAT = echo
|
||||
|
||||
GCC_ANSI_INVOKE_W_NO = $(GCC) -ansi -w
|
||||
GCC_ANSI_INVOKE_W_YES = $(GCC) -ansi
|
||||
GCC_STRICT_INVOKE_W_YES = $(GCC) -ansi -Wall -pedantic
|
||||
GCC_TRAD_INVOKE_W_NO = $(GCC) -traditional -w
|
||||
GCC_TRAD_INVOKE_W_YES = $(GCC) -traditional
|
||||
GCC_LD_LIBS =
|
||||
GCC_LD_FLAGS =
|
||||
|
||||
C_OLD = $($(STANDARD)_TRAD_INVOKE_W_$(UNIX_WARN))
|
||||
C_ANSI = $($(ANSI)_ANSI_INVOKE_W_$(UNIX_WARN))
|
||||
C_STRICT = $($(ANSI)_STRICT_INVOKE_W_YES)
|
||||
CC = $(C_$(CMPLR))
|
||||
|
||||
LD_LIBS_OLD = $($(STANDARD)_LD_LIBS)
|
||||
LD_LIBS_ANSI = $($(ANSI)_LD_LIBS)
|
||||
LD_LIBS_STRICT = $($(ANSI)_LD_LIBS)
|
||||
CCOMPILER_LDLIBS = $(LD_LIBS_$(CMPLR))
|
||||
LD_FLAGS_OLD = $($(STANDARD)_LD_FLAGS)
|
||||
LD_FLAGS_ANSI = $($(ANSI)_LD_FLAGS)
|
||||
LD_FLAGS_STRICT = $($(ANSI)_LD_FLAGS)
|
||||
CCOMPILER_LDFLAGS = $(LD_FLAGS_$(CMPLR))
|
||||
|
||||
G++_NORMAL_INVOKE_W_NO = $(G++) -ansi -pedantic -w
|
||||
G++_NORMAL_INVOKE_W_YES = $(G++) -ansi -pedantic -Wall
|
||||
G++_STRICT_INVOKE_W_YES = $(G++) -ansi -pedantic -Wtraditional -Wall \
|
||||
-Wmissing-prototypes -Woverloaded-virtual \
|
||||
-Wwrite-strings -Wconversion -Wstrict-prototypes\
|
||||
-Wpointer-arith -Winline
|
||||
|
||||
CXX_NORMAL = $($(CPLUSPLUS)_NORMAL_INVOKE_W_$(UNIX_WARN))
|
||||
CXX_STRICT = $($(CPLUSPLUS)_STRICT_INVOKE_W_YES)
|
||||
|
||||
# GNU make likes CXX
|
||||
CXX = $(CXX_$(CXXCMPLR))
|
||||
|
||||
# Static Build options
|
||||
GCC_SFLAGS_YES= -static
|
||||
GCC_SFLAGS_NO=
|
||||
|
||||
SF_OLD = $($(STANDARD)_SFLAGS_$(STATIC_BUILD))
|
||||
SF_ANSI = $($(ANSI)_SFLAGS_$(STATIC_BUILD))
|
||||
SF_STRICT = $(SF_ANSI)
|
||||
UNIX_SFLAGS = $(SF_$(CMPLR))
|
||||
|
||||
SL_OLD = $($(STANDARD)_SLIBS_$(STATIC_BUILD))
|
||||
SL_ANSI = $($(ANSI)_SLIBS_$(STATIC_BUILD))
|
||||
SL_STRICT = $(SL_ANSI)
|
||||
UNIX_SLIBS = $(SL_$(CMPLR))
|
||||
|
||||
# Optimization
|
||||
OPTIM_YES = -O
|
||||
OPTIM_NO =
|
||||
UNIX_OPT_FLAGS = $(OPTIM_$(UNIX_OPT))
|
||||
|
||||
# Include files
|
||||
UNIX_INCLUDES = -I. -I.. $(USR_INCLUDES) -I$(INSTALL_INCLUDE) -I$(EPICS_BASE_INCLUDE) \
|
||||
-I$(EPICS_BASE_INCLUDE)/os/$(T_A)
|
||||
|
||||
# Operating system flags
|
||||
OP_SYS_FLAGS = -DUNIX
|
||||
|
||||
UNIX_LDFLAGS = -L$(EPICS_BASE_LIB) $(CCOMPILER_LDFLAGS)
|
||||
UNIX_LDLIBS = $(UNIX_SLIBS) -lm $(CCOMPILER_LDLIBS)
|
||||
|
||||
# Architecture specific build flags
|
||||
ARCH_DEP_CFLAGS = -DCYGWIN32
|
||||
ARCH_DEP_CXXFLAGS = $(ARCH_DEP_CFLAGS) -I$(CXX_INCLUDES)
|
||||
#ARCH_DEP_LDLIBS = -lsocket -lnsl
|
||||
# -lsocket needed by libca.a
|
||||
# -lnsl needed by libca.a
|
||||
|
||||
UNIX_CFLAGS = $(UNIX_SFLAGS) $(UNIX_INCLUDES) $(OP_SYS_FLAGS)
|
||||
|
||||
UNIX_CXXFLAGS = $(UNIX_CFLAGS)
|
||||
|
||||
# Target specific flags
|
||||
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
|
||||
TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS)
|
||||
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS)
|
||||
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
|
||||
TARGET_LDLIBS = $($(basename $@)_LDLIBS)
|
||||
TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS)
|
||||
|
||||
CFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(UNIX_CFLAGS)
|
||||
CXXFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CXXFLAGS) $(USR_CXXFLAGS) $(ARCH_DEP_CXXFLAGS) $(UNIX_CXXFLAGS)
|
||||
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS)
|
||||
|
||||
LDFLAGS = $(SPECIAL_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(UNIX_LDFLAGS)
|
||||
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(ARCH_DEP_LDLIBS) $(UNIX_LDLIBS)
|
||||
|
||||
LINK.c = $(CC) -o $@ $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
|
||||
LINK.cc = $(CXX) -o $@ $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)
|
||||
|
||||
#DEPENDS_RULE.c = -$(COMPILE.c) -xM $(SRCS.c) > .DEPENDS
|
||||
#DEPENDS_RULE.cc = @echo no DEPENDS_RULE.cc defined in CONFIG.cygwin32
|
||||
DEPENDS_RULE = -$(COMPILE.c) -MM $(SRCS.c) $(SRCS.cc) > .DEPENDS
|
||||
17
config/CONFIG.hkv2f
Normal file
17
config/CONFIG.hkv2f
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
# $Id$
|
||||
#
|
||||
# This file is maintained by the EPICS community.
|
||||
|
||||
# BUILD_TYPE
|
||||
BUILD_TYPE = Vx
|
||||
|
||||
# For Vx directories of form:
|
||||
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
|
||||
ARCH_CLASS = 68k
|
||||
|
||||
include $(EPICS_BASE)/config/CONFIG.$(BUILD_TYPE).$(ARCH_CLASS)
|
||||
|
||||
# Architecture specific build flags
|
||||
ARCH_DEP_CFLAGS = -DCPU=MC68020 -m68020 -DCPU_FAMILY=MC680X0
|
||||
|
||||
144
config/CONFIG.hp700
Normal file
144
config/CONFIG.hp700
Normal file
@@ -0,0 +1,144 @@
|
||||
# CONFIG.Unix.hp700
|
||||
#
|
||||
# This file is maintained by the EPICS community.
|
||||
|
||||
# BUILD_TYPE
|
||||
# Currently either Vx or Unix
|
||||
BUILD_TYPE = Unix
|
||||
|
||||
ARCH_CLASS = hp700
|
||||
|
||||
# Compiler and utility invocation (supply path to compiler here)
|
||||
# (with warning flags built in)
|
||||
# Paths to compilers
|
||||
GCC = gcc
|
||||
ACC = cc -Aa
|
||||
HPACC = cc -Aa
|
||||
HPCC = cc -Ac
|
||||
TRADCC = cc
|
||||
AR = ar
|
||||
ARCMD = $(AR) $(ARFLAGS)
|
||||
|
||||
RANLIB = ranlib
|
||||
YACC = $(EYACC)
|
||||
LEX = $(ELEX)
|
||||
G++ = g++
|
||||
CCC = CC
|
||||
|
||||
CP=cp
|
||||
MV = mv
|
||||
RM=rm -f
|
||||
RMDIR = rm -rf
|
||||
MKDIR = mkdir
|
||||
CHMOD = "/bin/chmod"
|
||||
WHAT = what
|
||||
|
||||
EXE=
|
||||
OBJ=.o
|
||||
|
||||
ACC_ANSI_INVOKE_W_NO = $(ACC) -w
|
||||
ACC_ANSI_INVOKE_W_YES = $(ACC)
|
||||
ACC_TRAD_INVOKE_W_NO = $(TRADCC) -w
|
||||
ACC_TRAD_INVOKE_W_YES = $(TRADCC)
|
||||
ACC_STRICT_INVOKE_W_NO = $(ACC) -w
|
||||
ACC_STRICT_INVOKE_W_YES = $(ACC)
|
||||
HPACC_ANSI_INVOKE_W_NO = $(HPACC) -w
|
||||
HPACC_ANSI_INVOKE_W_YES = $(HPACC)
|
||||
HPCC_TRAD_INVOKE_W_NO = $(HPCC) -w
|
||||
HPCC_TRAD_INVOKE_W_YES = $(HPCC)
|
||||
HPACC_STRICT_INVOKE_W_NO = $(HPACC) -w
|
||||
HPACC_STRICT_INVOKE_W_YES = $(HPACC)
|
||||
|
||||
GCC_ANSI_INVOKE_W_NO = $(GCC) -ansi -w
|
||||
GCC_ANSI_INVOKE_W_YES = $(GCC) -ansi
|
||||
GCC_STRICT_INVOKE_W_YES = $(GCC) -ansi -Wall -pedantic
|
||||
GCC_TRAD_INVOKE_W_NO = $(GCC) -traditional -w
|
||||
GCC_TRAD_INVOKE_W_YES = $(GCC) -traditional
|
||||
|
||||
CCC_NORMAL_INVOKE_W_NO = $(CCC) +p
|
||||
CCC_NORMAL_INVOKE_W_YES = $(CCC) +p +w
|
||||
CCC_STRICT_INVOKE_W_YES = $(CCC) +p +w
|
||||
CCC_LD_FLAGS =
|
||||
CCC_LD_LIBS =
|
||||
CCC_TEMPL_INST_FLAG =
|
||||
G++_NORMAL_INVOKE_W_NO = $(G++) -ansi -pedantic -w
|
||||
G++_NORMAL_INVOKE_W_YES = $(G++) -ansi -pedantic -Wall
|
||||
G++_STRICT_INVOKE_W_YES = $(G++) -ansi -pedantic -Wtraditional -Wall \
|
||||
-Wmissing-prototypes -Woverloaded-virtual \
|
||||
-Wwrite-strings -Wconversion -Wstrict-prototypes\
|
||||
-Wpointer-arith -Winline
|
||||
G++_TEMPL_INST_FLAG = -DEXPL_TEMPL
|
||||
|
||||
CXX_NORMAL = $($(CPLUSPLUS)_NORMAL_INVOKE_W_$(UNIX_WARN))
|
||||
CXX_STRICT = $($(CPLUSPLUS)_STRICT_INVOKE_W_YES)
|
||||
TEMPL_INST_CXXFLAG = $($(CPLUSPLUS)_TEMPL_INST_FLAG)
|
||||
|
||||
# GNU make likes CXX instead of CCC
|
||||
CXX = $(CXX_$(CXXCMPLR))
|
||||
|
||||
C_OLD = $($(STANDARD)_TRAD_INVOKE_W_$(UNIX_WARN))
|
||||
C_ANSI = $($(ANSI)_ANSI_INVOKE_W_$(UNIX_WARN))
|
||||
C_STRICT = $($(ANSI)_STRICT_INVOKE_W_YES)
|
||||
CC = $(C_$(CMPLR))
|
||||
|
||||
# Static Build options
|
||||
ACC_SFLAGS_YES= -Wl,-a,archive
|
||||
ACC_SFLAGS_NO=
|
||||
CC_SFLAGS_YES= -Wl,-a,archive
|
||||
CC_SFLAGS_NO=
|
||||
GCC_SFLAGS_YES= -static
|
||||
GCC_SFLAGS_NO=
|
||||
|
||||
SF_OLD = $($(STANDARD)_SFLAGS_$(STATIC_BUILD))
|
||||
SF_ANSI = $($(ANSI)_SFLAGS_$(STATIC_BUILD))
|
||||
SF_STRICT = $(SF_ANSI)
|
||||
UNIX_SFLAGS = $(SF_$(CMPLR))
|
||||
|
||||
# Optimization
|
||||
OPTIM_YES = -O
|
||||
OPTIM_NO =
|
||||
UNIX_OPT_FLAGS = $(OPTIM_$(UNIX_OPT))
|
||||
|
||||
# Include files
|
||||
UNIX_INCLUDES = -I. -I.. $(USR_INCLUDES) -I$(INSTALL_INCLUDE) -I$(EPICS_BASE_INCLUDE) \
|
||||
-I$(EPICS_BASE_INCLUDE)/os/$(T_A)
|
||||
|
||||
# Operating system flags
|
||||
OP_SYS_FLAGS = -DUNIX
|
||||
|
||||
SPECIAL_LDFLAGS =
|
||||
UNIX_LDFLAGS = -L$(EPICS_BASE_LIB)
|
||||
UNIX_LDLIBS = -lm
|
||||
|
||||
ARCH_DEP_CFLAGS = -D_HPUX_SOURCE -DHP_UX
|
||||
ARCH_DEP_CXXFLAGS = $(ARCH_DEP_CFLAGS)
|
||||
|
||||
UNIX_CFLAGS = $(UNIX_SFLAGS) $(UNIX_INCLUDES) $(OP_SYS_FLAGS)
|
||||
UNIX_CXXFLAGS = $(UNIX_CFLAGS)
|
||||
|
||||
# Target specific flags
|
||||
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
|
||||
TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS)
|
||||
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS)
|
||||
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
|
||||
TARGET_LDLIBS = $($(basename $@)_LDLIBS)
|
||||
TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS)
|
||||
|
||||
CFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(UNIX_CFLAGS)
|
||||
CXXFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CXXFLAGS) $(USR_CXXFLAGS) \
|
||||
$(ARCH_DEP_CXXFLAGS) $(UNIX_CXXFLAGS) $(TEMPL_INST_CXXFLAG)
|
||||
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS)
|
||||
|
||||
ARFLAGS = rv
|
||||
|
||||
LDFLAGS = $(SPECIAL_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(UNIX_LDFLAGS)
|
||||
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(ARCH_DEP_LDLIBS) $(UNIX_LDLIBS)
|
||||
|
||||
# Override defaults
|
||||
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
|
||||
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
|
||||
LINK.c = $(CC) $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
|
||||
LINK.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)
|
||||
DEPENDS_RULE.c = @echo no DEPENDS_RULE.c defined in CONFIG.hp700
|
||||
DEPENDS_RULE.cc = @echo no DEPENDS_RULE.cc defined in CONFIG.hp700
|
||||
|
||||
16
config/CONFIG.mv147
Normal file
16
config/CONFIG.mv147
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
# $Id$
|
||||
#
|
||||
# This file is maintained by the EPICS community.
|
||||
|
||||
BUILD_TYPE = Vx
|
||||
|
||||
# For Vx directories of form:
|
||||
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
|
||||
ARCH_CLASS = 68k
|
||||
|
||||
include $(EPICS_BASE)/config/CONFIG.$(BUILD_TYPE).$(ARCH_CLASS)
|
||||
|
||||
# Architecture specific build flags
|
||||
ARCH_DEP_CFLAGS = -DCPU=MC68030 -m68030 -DCPU_FAMILY=MC680X0
|
||||
|
||||
17
config/CONFIG.mv162
Normal file
17
config/CONFIG.mv162
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
# $Id$
|
||||
#
|
||||
# This file is maintained by the EPICS community.
|
||||
|
||||
# BUILD_TYPE
|
||||
BUILD_TYPE = Vx
|
||||
|
||||
# For Vx directories of form:
|
||||
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
|
||||
ARCH_CLASS = 68k
|
||||
|
||||
include $(EPICS_BASE)/config/CONFIG.$(BUILD_TYPE).$(ARCH_CLASS)
|
||||
|
||||
# Architecture specific build flags
|
||||
ARCH_DEP_CFLAGS = -DCPU=MC68040 -m68040 -DCPU_FAMILY=MC680X0
|
||||
|
||||
16
config/CONFIG.mv162lc
Normal file
16
config/CONFIG.mv162lc
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
# $Id$
|
||||
#
|
||||
# This file is maintained by the EPICS community.
|
||||
|
||||
# BUILD_TYPE
|
||||
BUILD_TYPE = Vx
|
||||
|
||||
# For Vx directories of form:
|
||||
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
|
||||
ARCH_CLASS = 68k
|
||||
|
||||
include $(EPICS_BASE)/config/CONFIG.$(BUILD_TYPE).$(ARCH_CLASS)
|
||||
|
||||
# Architecture specific build flags
|
||||
ARCH_DEP_CFLAGS = -DCPU=MC68040 -msoft-float -DCPU_FAMILY=MC680X0
|
||||
16
config/CONFIG.mv167
Normal file
16
config/CONFIG.mv167
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
# $Id$
|
||||
#
|
||||
# This file is maintained by the EPICS community.
|
||||
|
||||
BUILD_TYPE = Vx
|
||||
|
||||
# For Vx directories of form:
|
||||
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
|
||||
ARCH_CLASS = 68k
|
||||
|
||||
include $(EPICS_BASE)/config/CONFIG.$(BUILD_TYPE).$(ARCH_CLASS)
|
||||
|
||||
# Architecture specific build flags
|
||||
ARCH_DEP_CFLAGS = -DCPU=MC68040 -m68040 -DCPU_FAMILY=MC680X0
|
||||
|
||||
16
config/CONFIG.mv177
Normal file
16
config/CONFIG.mv177
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
# $Id$
|
||||
#
|
||||
# This file is maintained by the EPICS community.
|
||||
|
||||
BUILD_TYPE = Vx
|
||||
|
||||
# For Vx directories of form:
|
||||
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
|
||||
ARCH_CLASS = 68k
|
||||
|
||||
include $(EPICS_BASE)/config/CONFIG.$(BUILD_TYPE).$(ARCH_CLASS)
|
||||
|
||||
# Architecture specific build flags
|
||||
ARCH_DEP_CFLAGS = -DCPU=MC68060 -m68040 -DCPU_FAMILY=MC680X0
|
||||
|
||||
16
config/CONFIG.niCpu030
Normal file
16
config/CONFIG.niCpu030
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
# BUILD_TYPE
|
||||
# Currently either Vx or Unix
|
||||
BUILD_TYPE = Vx
|
||||
|
||||
# For Vx directories of form:
|
||||
#
|
||||
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
|
||||
#
|
||||
ARCH_CLASS = 68k
|
||||
|
||||
include $(EPICS_BASE)/config/CONFIG.$(BUILD_TYPE).$(ARCH_CLASS)
|
||||
|
||||
# Architecture specific build flags
|
||||
ARCH_DEP_CFLAGS = -DCPU=MC68030 -m68030 -DCPU_FAMILY=MC680X0
|
||||
|
||||
26
config/CONFIG.pc486
Normal file
26
config/CONFIG.pc486
Normal file
@@ -0,0 +1,26 @@
|
||||
|
||||
# BUILD_TYPE
|
||||
# Currently either Vx or Unix
|
||||
BUILD_TYPE = Vx
|
||||
|
||||
# For Vx directories of form:
|
||||
#
|
||||
# $(VX_DIR)/$(HOST_ARCH).$(ARCH_CLASS)/bin
|
||||
#
|
||||
# And configuration files:
|
||||
#
|
||||
# CONFIG_SITE.Vx.68k -or- CONFIG_SITE.Unix.sun4
|
||||
#
|
||||
ARCH_CLASS = pc486
|
||||
|
||||
include $(EPICS_BASE)/config/CONFIG.$(BUILD_TYPE).$(ARCH_CLASS)
|
||||
|
||||
# Architecture specific build flags
|
||||
# Defines:
|
||||
# CPU, CPU_FAMILY is used by VxWorks header files,
|
||||
# _X86_ is used in base/src/ca
|
||||
#
|
||||
# -g is for debugging information, I didn't know where elso to put it
|
||||
#
|
||||
ARCH_DEP_CFLAGS = -DCPU=I80486 -m486 -DCPU_FAMILY=I80x86 -D_X86_ -g
|
||||
|
||||
138
config/CONFIG.sgi
Normal file
138
config/CONFIG.sgi
Normal file
@@ -0,0 +1,138 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# This file is maintained by the EPICS community.
|
||||
|
||||
# BUILD_TYPE
|
||||
# Currently either Vx or Host
|
||||
BUILD_TYPE = Host
|
||||
|
||||
ARCH_CLASS = sgi
|
||||
|
||||
# Compiler and utility invocation (supply path to compiler here)
|
||||
# (with warning flags built in)
|
||||
# Paths to compilers
|
||||
GCC = cc
|
||||
ACC = cc
|
||||
|
||||
AR = ar
|
||||
ARCMD = $(AR) $(ARFLAGS)
|
||||
ARFLAGS = r
|
||||
|
||||
RANLIB =
|
||||
YACC = $(EYACC)
|
||||
LEX = $(ELEX)
|
||||
G++ = g++
|
||||
CCC = CC
|
||||
|
||||
CP=cp
|
||||
MV = mv
|
||||
RM=rm -f
|
||||
RMDIR = rm -rf
|
||||
MKDIR = mkdir
|
||||
CHMOD = "/bin/chmod"
|
||||
WHAT = what
|
||||
|
||||
EXE=
|
||||
OBJ=.o
|
||||
|
||||
ACC_ANSI_INVOKE_W_NO = $(ACC) -xansi -w
|
||||
ACC_ANSI_INVOKE_W_YES = $(ACC) -xansi
|
||||
ACC_STRICT_INVOKE_W_NO = $(ACC) -xansi -w
|
||||
ACC_STRICT_INVOKE_W_YES = $(ACC) -xansi
|
||||
ACC_TRAD_INVOKE_W_NO = $(ACC) -cckr -Xs -w
|
||||
ACC_TRAD_INVOKE_W_YES = $(ACC) -cckr -Xs
|
||||
GCC_ANSI_INVOKE_W_NO = $(GCC) -ansi -w
|
||||
GCC_ANSI_INVOKE_W_YES = $(GCC) -ansi
|
||||
GCC_STRICT_INVOKE_W_NO = $(GCC) -ansi -pedantic
|
||||
GCC_STRICT_INVOKE_W_YES = $(GCC) -ansi -Wall -pedantic
|
||||
GCC_TRAD_INVOKE_W_NO = $(GCC) -traditional -w
|
||||
GCC_TRAD_INVOKE_W_YES = $(GCC) -traditional
|
||||
|
||||
C_OLD = $(KRCC_TRAD_INVOKE_W_$(UNIX_WARN))
|
||||
C_ANSI = $($(ANSI)_ANSI_INVOKE_W_$(UNIX_WARN))
|
||||
C_STRICT = $($(ANSI)_STRICT_INVOKE_W_YES)
|
||||
CC = $(C_$(CMPLR))
|
||||
|
||||
CCC_NORMAL_INVOKE_W_NO = $(CCC) +p
|
||||
CCC_NORMAL_INVOKE_W_YES = $(CCC) +p +w
|
||||
CCC_STRICT_INVOKE_W_YES = $(CCC) +p +w
|
||||
CCC_LD_FLAGS =
|
||||
CCC_LD_LIBS =
|
||||
CCC_TEMPL_INST_FLAG =
|
||||
G++_NORMAL_INVOKE_W_NO = $(G++) -ansi -pedantic -w
|
||||
G++_NORMAL_INVOKE_W_YES = $(G++) -ansi -pedantic -Wall
|
||||
G++_STRICT_INVOKE_W_YES = $(G++) -ansi -pedantic -Wtraditional -Wall \
|
||||
-Wmissing-prototypes -Woverloaded-virtual \
|
||||
-Wwrite-strings -Wconversion -Wstrict-prototypes\
|
||||
-Wpointer-arith -Winline
|
||||
G++_TEMPL_INST_FLAG = -DEXPL_TEMPL
|
||||
|
||||
CXX_NORMAL = $($(CPLUSPLUS)_NORMAL_INVOKE_W_$(UNIX_WARN))
|
||||
CXX_STRICT = $($(CPLUSPLUS)_STRICT_INVOKE_W_YES)
|
||||
TEMPL_INST_CXXFLAG = $($(CPLUSPLUS)_TEMPL_INST_FLAG)
|
||||
|
||||
# GNU make likes CXX instead of CCC
|
||||
CXX = $(CXX_$(CXXCMPLR))
|
||||
|
||||
|
||||
# Static Build options
|
||||
ACC_SFLAGS_YES= -Bstatic
|
||||
ACC_SFLAGS_NO=
|
||||
CC_SFLAGS_YES= -Bstatic
|
||||
CC_SFLAGS_NO=
|
||||
GCC_SFLAGS_YES= -static
|
||||
GCC_SFLAGS_NO=
|
||||
|
||||
SF_OLD = $($(STANDARD)_SFLAGS_$(STATIC_BUILD))
|
||||
SF_ANSI = $($(ANSI)_SFLAGS_$(STATIC_BUILD))
|
||||
SF_STRICT = $(SF_ANSI)
|
||||
UNIX_SFLAGS = $(SF_$(CMPLR))
|
||||
|
||||
# Optimization
|
||||
OPTIM_YES = -O
|
||||
OPTIM_NO =
|
||||
UNIX_OPT_FLAGS = $(OPTIM_$(UNIX_OPT))
|
||||
|
||||
# Include files
|
||||
UNIX_INCLUDES = -I. -I.. $(USR_INCLUDES) -I$(INSTALL_INCLUDE) -I$(EPICS_BASE_INCLUDE) \
|
||||
-I$(EPICS_BASE_INCLUDE)/os/$(T_A)
|
||||
|
||||
# Operating system flags
|
||||
OP_SYS_FLAGS = -DUNIX
|
||||
|
||||
UNIX_LDFLAGS = -L$(EPICS_BASE_LIB)
|
||||
UNIX_LDLIBS = -lm
|
||||
|
||||
ARCH_DEP_CFLAGS = -DSGI
|
||||
ARCH_DEP_CXXFLAGS = $(ARCH_DEP_CFLAGS)
|
||||
|
||||
UNIX_CFLAGS = $(UNIX_SFLAGS) $(UNIX_INCLUDES) $(OP_SYS_FLAGS)
|
||||
|
||||
UNIX_CXXFLAGS = $(UNIX_CFLAGS)
|
||||
|
||||
# Target specific flags
|
||||
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
|
||||
TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS)
|
||||
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS)
|
||||
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
|
||||
TARGET_LDLIBS = $($(basename $@)_LDLIBS)
|
||||
TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS)
|
||||
|
||||
CFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(UNIX_CFLAGS)
|
||||
CXXFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CXXFLAGS) $(USR_CXXFLAGS) \
|
||||
$(ARCH_DEP_CXXFLAGS) $(UNIX_CXXFLAGS) $(TEMPL_INST_CXXFLAG)
|
||||
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS)
|
||||
|
||||
LDFLAGS = $(SPECIAL_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(UNIX_LDFLAGS)
|
||||
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(ARCH_DEP_LDLIBS) $(UNIX_LDLIBS)
|
||||
|
||||
# Override defaults
|
||||
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
|
||||
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
|
||||
# Unlike the 'Unix' makesystem, output flags -o .. are now part of LINK.c[c]
|
||||
LINK.c = $(CC) -o $@ $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
|
||||
LINK.cc = $(CXX) -o $@ $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)
|
||||
|
||||
DEPENDS_RULE.c = -$(COMPILE.c) -M $(SRCS.c) > .DEPENDS
|
||||
DEPENDS_RULE.cc = @echo no DEPENDS_RULE.cc defined in CONFIG.sgi
|
||||
168
config/CONFIG.solaris
Normal file
168
config/CONFIG.solaris
Normal file
@@ -0,0 +1,168 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# This file is maintained by the EPICS community.
|
||||
|
||||
# BUILD_TYPE
|
||||
# Currently either Vx or Host
|
||||
BUILD_TYPE = Host
|
||||
|
||||
ARCH_CLASS = solaris
|
||||
|
||||
# Compiler and utility invocation (supply path to compiler here)
|
||||
# (with warning flags built in)
|
||||
# Paths to compilers
|
||||
GCC = /opt/gnu/bin/gcc
|
||||
ACC = $(SPARCWORKS)/bin/cc
|
||||
# SUNCC doesn't exist under Solaris
|
||||
|
||||
#
|
||||
# required by sun's C++ compiler
|
||||
#
|
||||
AR = ar
|
||||
_AR = $(AR) $(ARFLAGS)
|
||||
G++_AR = $(_AR)
|
||||
CCC_AR = $(CCC) -xar -o
|
||||
ARCMD = $($(CPLUSPLUS)_AR)
|
||||
|
||||
RANLIB =
|
||||
YACC = $(EYACC)
|
||||
LEX = $(ELEX)
|
||||
G++ = /opt/gnu/bin/g++
|
||||
CCC = /opt/SUNWspro/bin/CC
|
||||
|
||||
CP=cp
|
||||
MV=mv
|
||||
RM=rm -f
|
||||
MKDIR=mkdir
|
||||
RMDIR=rm -rf
|
||||
CHMOD = "/bin/chmod"
|
||||
WHAT = what
|
||||
|
||||
EXE=
|
||||
OBJ=.o
|
||||
|
||||
ACC_ANSI_INVOKE_W_NO = $(ACC) -Xa -w
|
||||
ACC_ANSI_INVOKE_W_YES = $(ACC) -Xa
|
||||
ACC_STRICT_INVOKE_W_YES = $(ACC) -Xc -v
|
||||
ACC_TRAD_INVOKE_W_NO = $(ACC) -Xs -w
|
||||
ACC_TRAD_INVOKE_W_YES = $(ACC) -Xs
|
||||
ACC_LD_FLAGS =
|
||||
ACC_LD_LIBS =
|
||||
SUNCC_TRAD_INVOKE_W_NO = $(ACC_TRAD_INVOKE_W_NO)
|
||||
SUNCC_TRAD_INVOKE_W_YES = $(ACC_TRAD_INVOKE_W_YES)
|
||||
GCC_ANSI_INVOKE_W_NO = $(GCC) -ansi -w
|
||||
GCC_ANSI_INVOKE_W_YES = $(GCC) -ansi
|
||||
GCC_STRICT_INVOKE_W_YES = $(GCC) -ansi -Wall -pedantic
|
||||
GCC_TRAD_INVOKE_W_NO = $(GCC) -traditional -w
|
||||
GCC_TRAD_INVOKE_W_YES = $(GCC) -traditional
|
||||
GCC_LD_LIBS =
|
||||
GCC_LD_FLAGS =
|
||||
|
||||
C_OLD = $($(STANDARD)_TRAD_INVOKE_W_$(UNIX_WARN))
|
||||
C_ANSI = $($(ANSI)_ANSI_INVOKE_W_$(UNIX_WARN))
|
||||
C_STRICT = $($(ANSI)_STRICT_INVOKE_W_YES)
|
||||
CC = $(C_$(CMPLR))
|
||||
|
||||
LD_LIBS_OLD = $($(STANDARD)_LD_LIBS)
|
||||
LD_LIBS_ANSI = $($(ANSI)_LD_LIBS)
|
||||
LD_LIBS_STRICT = $($(ANSI)_LD_LIBS)
|
||||
CCOMPILER_LDLIBS = $(LD_LIBS_$(CMPLR))
|
||||
LD_FLAGS_OLD = $($(STANDARD)_LD_FLAGS)
|
||||
LD_FLAGS_ANSI = $($(ANSI)_LD_FLAGS)
|
||||
LD_FLAGS_STRICT = $($(ANSI)_LD_FLAGS)
|
||||
CCOMPILER_LDFLAGS = $(LD_FLAGS_$(CMPLR))
|
||||
|
||||
CCC_NORMAL_INVOKE_W_NO = $(CCC) +p
|
||||
CCC_NORMAL_INVOKE_W_YES = $(CCC) +p +w
|
||||
CCC_STRICT_INVOKE_W_YES = $(CCC) +p +w
|
||||
CCC_LD_FLAGS = -L$(SPECIAL_LANG)
|
||||
CCC_LD_LIBS =
|
||||
CCC_TEMPL_INST_FLAG =
|
||||
G++_NORMAL_INVOKE_W_NO = $(G++) -ansi -pedantic -w
|
||||
G++_NORMAL_INVOKE_W_YES = $(G++) -ansi -pedantic -Wall
|
||||
G++_STRICT_INVOKE_W_YES = $(G++) -ansi -pedantic -Wtraditional -Wall \
|
||||
-Wmissing-prototypes -Woverloaded-virtual \
|
||||
-Wwrite-strings -Wconversion -Wstrict-prototypes\
|
||||
-Wpointer-arith -Winline
|
||||
G++_TEMPL_INST_FLAG = -DEXPL_TEMPL
|
||||
|
||||
CXX_NORMAL = $($(CPLUSPLUS)_NORMAL_INVOKE_W_$(UNIX_WARN))
|
||||
CXX_STRICT = $($(CPLUSPLUS)_STRICT_INVOKE_W_YES)
|
||||
TEMPL_INST_CXXFLAG = $($(CPLUSPLUS)_TEMPL_INST_FLAG)
|
||||
|
||||
# GNU make likes CXX instead of CCC
|
||||
CXX = $(CXX_$(CXXCMPLR))
|
||||
|
||||
# Static Build options
|
||||
#ACC_SFLAGS_YES= -dn
|
||||
ACC_SFLAGS_YES= -Bstatic
|
||||
ACC_SLIBS_YES= -lw -lintl -Bdynamic -ldl -Bstatic -lXext -lX
|
||||
ACC_SLIBS_NO=
|
||||
ACC_SFLAGS_NO=
|
||||
CC_SFLAGS_YES= -dn
|
||||
CC_SFLAGS_NO=
|
||||
GCC_SFLAGS_YES= -static
|
||||
GCC_SFLAGS_NO=
|
||||
|
||||
SF_OLD = $($(STANDARD)_SFLAGS_$(STATIC_BUILD))
|
||||
SF_ANSI = $($(ANSI)_SFLAGS_$(STATIC_BUILD))
|
||||
SF_STRICT = $(SF_ANSI)
|
||||
UNIX_SFLAGS = $(SF_$(CMPLR))
|
||||
|
||||
SL_OLD = $($(STANDARD)_SLIBS_$(STATIC_BUILD))
|
||||
SL_ANSI = $($(ANSI)_SLIBS_$(STATIC_BUILD))
|
||||
SL_STRICT = $(SL_ANSI)
|
||||
UNIX_SLIBS = $(SL_$(CMPLR))
|
||||
|
||||
# Optimization
|
||||
OPTIM_YES = -O
|
||||
OPTIM_NO =
|
||||
UNIX_OPT_FLAGS = $(OPTIM_$(UNIX_OPT))
|
||||
|
||||
# Include files
|
||||
UNIX_INCLUDES = -I. -I.. $(USR_INCLUDES) -I$(INSTALL_INCLUDE) -I$(EPICS_BASE_INCLUDE) \
|
||||
-I$(EPICS_BASE_INCLUDE)/os/$(T_A)
|
||||
|
||||
# Operating system flags
|
||||
OP_SYS_FLAGS = -DUNIX
|
||||
|
||||
UNIX_LDFLAGS = -L$(EPICS_BASE_LIB) $(CCOMPILER_LDFLAGS)
|
||||
UNIX_LDLIBS = $(UNIX_SLIBS) -lm $(CCOMPILER_LDLIBS)
|
||||
|
||||
# Architecture specific build flags
|
||||
ARCH_DEP_CFLAGS = -DSOLARIS
|
||||
ARCH_DEP_CXXFLAGS = $(ARCH_DEP_CFLAGS)
|
||||
ARCH_DEP_LDLIBS = -lsocket -lnsl
|
||||
# -lsocket needed by libca.a
|
||||
# -lnsl needed by libca.a
|
||||
|
||||
UNIX_CFLAGS = $(UNIX_SFLAGS) $(UNIX_INCLUDES) $(OP_SYS_FLAGS)
|
||||
|
||||
UNIX_CXXFLAGS = $(UNIX_CFLAGS)
|
||||
|
||||
# Target specific flags
|
||||
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
|
||||
TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS)
|
||||
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS)
|
||||
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
|
||||
TARGET_LDLIBS = $($(basename $@)_LDLIBS)
|
||||
TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS)
|
||||
|
||||
CFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(UNIX_CFLAGS)
|
||||
CXXFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CXXFLAGS) $(USR_CXXFLAGS) \
|
||||
$(ARCH_DEP_CXXFLAGS) $(UNIX_CXXFLAGS) $(TEMPL_INST_CXXFLAG)
|
||||
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS)
|
||||
|
||||
LDFLAGS = $(SPECIAL_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(UNIX_LDFLAGS)
|
||||
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(ARCH_DEP_LDLIBS) $(UNIX_LDLIBS)
|
||||
|
||||
# Override SUN defaults
|
||||
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
|
||||
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
|
||||
# Unlike the 'Unix' makesystem, output flags -o .. are now part of LINK.c[c]
|
||||
LINK.c = $(CC) -o $@ $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
|
||||
LINK.cc = $(CXX) -o $@ $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)
|
||||
|
||||
DEPENDS_RULE.c = -$(COMPILE.c) -xM $(SRCS.c) > .DEPENDS
|
||||
DEPENDS_RULE.cc = -$(COMPILE.cc) -xM $(SRCS.cc) >> .DEPENDS
|
||||
167
config/CONFIG.sun4
Normal file
167
config/CONFIG.sun4
Normal file
@@ -0,0 +1,167 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# This file is maintained by the EPICS community.
|
||||
|
||||
# BUILD_TYPE
|
||||
# Currently either Vx or Host
|
||||
|
||||
BUILD_TYPE = Host
|
||||
|
||||
ARCH_CLASS=sun4
|
||||
|
||||
# Compiler and utility invocation (supply path to compiler here)
|
||||
# (with warning flags built in)
|
||||
# Paths to compilers
|
||||
GCC = gcc
|
||||
ACC = /usr/lang/acc
|
||||
SUNCC = cc
|
||||
RANLIB = ranlib
|
||||
RANLIBFLAGS = -t
|
||||
YACC = $(EYACC)
|
||||
LEX = $(ELEX)
|
||||
G++ = g++
|
||||
CCC = /usr/lang/CC
|
||||
|
||||
RMDIR = rm -rf
|
||||
MKDIR = mkdir
|
||||
CHMOD = "/bin/chmod"
|
||||
CP=cp
|
||||
MV=mv
|
||||
RM=rm -f
|
||||
WHAT = what
|
||||
|
||||
EXE=
|
||||
OBJ=.o
|
||||
|
||||
#
|
||||
# original before use of sun C++
|
||||
#
|
||||
|
||||
#
|
||||
# required by sun's C++ compiler
|
||||
#
|
||||
ARFLAGS = r
|
||||
AR = ar
|
||||
_AR = $(AR) $(ARFLAGS)
|
||||
G++_AR = $(_AR)
|
||||
CCC_AR = $(CCC) -xar -o
|
||||
ARCMD = $($(CPLUSPLUS)_AR)
|
||||
|
||||
ACC_ANSI_INVOKE_W_NO = $(ACC) -Xa -w
|
||||
ACC_ANSI_INVOKE_W_YES = $(ACC) -Xa
|
||||
ACC_TRAD_INVOKE_W_NO = $(ACC) -Xs -w
|
||||
ACC_TRAD_INVOKE_W_YES = $(ACC) -Xs
|
||||
ACC_STRICT_INVOKE_W_NO = $(ACC) -Xc -w
|
||||
ACC_STRICT_INVOKE_W_YES = $(ACC) -Xc -vc
|
||||
ACC_LD_FLAGS = -L$(SPECIAL_LANG)
|
||||
ACC_LD_LIBS =
|
||||
SUNCC_TRAD_INVOKE_W_NO = $(SUNCC) -w
|
||||
SUNCC_TRAD_INVOKE_W_YES = $(SUNCC)
|
||||
GCC_ANSI_INVOKE_W_NO = $(GCC) -ansi -w -D__USE_FIXED_PROTOTYPES__
|
||||
GCC_ANSI_INVOKE_W_YES = $(GCC) -ansi -D__USE_FIXED_PROTOTYPES__
|
||||
GCC_STRICT_INVOKE_W_NO = $(GCC) -ansi -pedantic -D__USE_FIXED_PROTOTYPES__
|
||||
GCC_STRICT_INVOKE_W_YES = $(GCC) -ansi -Wall -pedantic -D__USE_FIXED_PROTOTYPES__
|
||||
GCC_TRAD_INVOKE_W_NO = $(GCC) -traditional -w
|
||||
GCC_TRAD_INVOKE_W_YES = $(GCC) -traditional
|
||||
GCC_LD_LIBS = -liberty
|
||||
GCC_LD_FLAGS =
|
||||
|
||||
C_OLD = $($(STANDARD)_TRAD_INVOKE_W_$(UNIX_WARN))
|
||||
C_ANSI = $($(ANSI)_ANSI_INVOKE_W_$(UNIX_WARN))
|
||||
C_STRICT = $($(ANSI)_STRICT_INVOKE_W_YES)
|
||||
CC = $(C_$(CMPLR))
|
||||
|
||||
LD_LIBS_OLD = $($(STANDARD)_LD_LIBS)
|
||||
LD_LIBS_ANSI = $($(ANSI)_LD_LIBS)
|
||||
LD_LIBS_STRICT = $($(ANSI)_LD_LIBS)
|
||||
CCOMPILER_LDLIBS = $(LD_LIBS_$(CMPLR))
|
||||
LD_FLAGS_OLD = $($(STANDARD)_LD_FLAGS)
|
||||
LD_FLAGS_ANSI = $($(ANSI)_LD_FLAGS)
|
||||
LD_FLAGS_STRICT = $($(ANSI)_LD_FLAGS)
|
||||
CCOMPILER_LDFLAGS = $(LD_FLAGS_$(CMPLR))
|
||||
|
||||
CCC_NORMAL_INVOKE_W_NO = $(CCC) +p
|
||||
CCC_NORMAL_INVOKE_W_YES = $(CCC) +p +w
|
||||
CCC_STRICT_INVOKE_W_YES = $(CCC) +p +w
|
||||
CCC_LD_FLAGS = -L$(SPECIAL_LANG)
|
||||
CCC_LD_LIBS =
|
||||
CCC_TEMPL_INST_FLAG =
|
||||
G++_NORMAL_INVOKE_W_NO = $(G++) -ansi -pedantic -w
|
||||
G++_NORMAL_INVOKE_W_YES = $(G++) -ansi -pedantic -Wall
|
||||
G++_STRICT_INVOKE_W_YES = $(G++) -ansi -pedantic -Wtraditional -Wall \
|
||||
-Wmissing-prototypes -Woverloaded-virtual \
|
||||
-Wwrite-strings -Wconversion -Wstrict-prototypes\
|
||||
-Wpointer-arith -Winline
|
||||
G++_TEMPL_INST_FLAG = -DEXPL_TEMPL
|
||||
|
||||
CXX_NORMAL = $($(CPLUSPLUS)_NORMAL_INVOKE_W_$(UNIX_WARN))
|
||||
CXX_STRICT = $($(CPLUSPLUS)_STRICT_INVOKE_W_YES)
|
||||
TEMPL_INST_CXXFLAG = $($(CPLUSPLUS)_TEMPL_INST_FLAG)
|
||||
|
||||
# GNU make likes CXX instead of CCC
|
||||
CXX = $(CXX_$(CXXCMPLR))
|
||||
|
||||
# Static Build options
|
||||
ACC_SFLAGS_YES= -Bstatic
|
||||
ACC_SFLAGS_NO=
|
||||
CC_SFLAGS_YES= -Bstatic
|
||||
CC_SFLAGS_NO=
|
||||
GCC_SFLAGS_YES= -static
|
||||
GCC_SFLAGS_NO=
|
||||
|
||||
SF_OLD = $($(STANDARD)_SFLAGS_$(STATIC_BUILD))
|
||||
SF_ANSI = $($(ANSI)_SFLAGS_$(STATIC_BUILD))
|
||||
SF_STRICT = $(SF_ANSI)
|
||||
UNIX_SFLAGS = $(SF_$(CMPLR))
|
||||
|
||||
# Optimization
|
||||
OPTIM_YES = -O
|
||||
OPTIM_NO =
|
||||
UNIX_OPT_FLAGS = $(OPTIM_$(UNIX_OPT))
|
||||
|
||||
# Include files
|
||||
UNIX_INCLUDES = -I. -I.. $(USR_INCLUDES) -I$(INSTALL_INCLUDE) -I$(EPICS_BASE_INCLUDE) \
|
||||
-I$(EPICS_BASE_INCLUDE)/os/$(T_A)
|
||||
|
||||
# Operating system flags
|
||||
OP_SYS_FLAGS = -DUNIX
|
||||
|
||||
|
||||
UNIX_LDFLAGS = -L$(EPICS_BASE_LIB) $(CCOMPILER_LDFLAGS)
|
||||
|
||||
UNIX_LDLIBS = -lm $(CCOMPILER_LDLIBS)
|
||||
|
||||
ARCH_DEP_CFLAGS = -DSUNOS4
|
||||
ARCH_DEP_CXXFLAGS = $(ARCH_DEP_CFLAGS)
|
||||
UNIX_CFLAGS = $(UNIX_SFLAGS) $(UNIX_INCLUDES) $(OP_SYS_FLAGS)
|
||||
|
||||
UNIX_CXXFLAGS = $(UNIX_CFLAGS)
|
||||
|
||||
# Target specific flags
|
||||
TARGET_CFLAGS = $($(basename $@)_CFLAGS)
|
||||
TARGET_CXXFLAGS = $($(basename $@)_CXXFLAGS)
|
||||
TARGET_CPPFLAGS = $($(basename $@)_CPPFLAGS)
|
||||
TARGET_LDFLAGS = $($(basename $@)_LDFLAGS)
|
||||
TARGET_LDLIBS = $($(basename $@)_LDLIBS)
|
||||
TARGET_SNCFLAGS = $($(basename $@)_SNCFLAGS)
|
||||
|
||||
CFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CFLAGS) $(USR_CFLAGS) $(ARCH_DEP_CFLAGS) $(UNIX_CFLAGS)
|
||||
CXXFLAGS = $(UNIX_OPT_FLAGS) $(TARGET_CXXFLAGS) $(USR_CXXFLAGS) $(ARCH_DEP_CXXFLAGS) \
|
||||
$(UNIX_CXXFLAGS) $(TEMPL_INST_CXXFLAG)
|
||||
CPPFLAGS += $(TARGET_CPPFLAGS) $(USR_CPPFLAGS)
|
||||
|
||||
LDFLAGS = $(SPECIAL_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(UNIX_LDFLAGS)
|
||||
LDLIBS = $(TARGET_LDLIBS) $(USR_LDLIBS) $(ARCH_DEP_LDLIBS) $(UNIX_LDLIBS)
|
||||
|
||||
# Override SUN defaults
|
||||
COMPILE.c = $(CC) $(CFLAGS) $(CPPFLAGS) -c
|
||||
COMPILE.cc = $(CXX) $(CXXFLAGS) $(CPPFLAGS) -c
|
||||
|
||||
# changed from 'Unix' makesystem:
|
||||
# link command now contains the output flag '-o $@'
|
||||
LINK.c = $(CC) -o $@ $(CFLAGS) $(CPPFLAGS) $(LDFLAGS)
|
||||
LINK.cc = $(CXX) -o $@ $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS)
|
||||
|
||||
DEPENDS_RULE.c = -$(COMPILE.c) -M $(SRCS.c) > .DEPENDS
|
||||
DEPENDS_RULE.cc = @echo no DEPENDS_RULE.cc defined in CONFIG.sun4
|
||||
55
config/CONFIG_BASE
Normal file
55
config/CONFIG_BASE
Normal file
@@ -0,0 +1,55 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
# the order of following list is important
|
||||
|
||||
#
|
||||
# for c++ build add the dirs gdd and cas after ca
|
||||
# (and uncomment the c++ files in src/lbCom/Makefile.Unix)
|
||||
#
|
||||
DIRS = tools
|
||||
DIRS += include
|
||||
DIRS += cxxTemplates
|
||||
DIRS += toolsComm
|
||||
DIRS += libCom
|
||||
DIRS += libvxWorks
|
||||
DIRS += cvtDctsdr
|
||||
DIRS += dbStatic
|
||||
DIRS += db
|
||||
DIRS += bpt
|
||||
DIRS += ca
|
||||
DIRS += util
|
||||
DIRS += misc
|
||||
DIRS += sequencer
|
||||
DIRS += dbtools
|
||||
DIRS += rsrv
|
||||
DIRS += rec
|
||||
DIRS += as
|
||||
DIRS += drv
|
||||
DIRS += dev
|
||||
DIRS += devOpt
|
||||
DIRS += iocCore
|
||||
|
||||
#
|
||||
# if CPLUSPLUS isnt empty then include C++ src codes
|
||||
#
|
||||
DIRS += $(patsubst %,gdd,$(strip $(CPLUSPLUS)))
|
||||
DIRS += $(patsubst %,cas,$(strip $(CPLUSPLUS)))
|
||||
|
||||
EPICS_BASE = $(TOP)
|
||||
|
||||
# EPICS include config file
|
||||
include $(EPICS_BASE)/config/CONFIG
|
||||
|
||||
EPICS_BASE = $(INSTALL_LOCATION)
|
||||
|
||||
#
|
||||
# this speeds up the build by turning off implicit rules search
|
||||
#
|
||||
.PHONY:: $(EPICS_BASE)/config/CONFIG
|
||||
.PHONY:: $(EPICS_BASE)/config/CONFIG.* $(EPICS_BASE)/config/CONFIG_*
|
||||
.PHONY:: $(EPICS_BASE)/config/RULES.* $(EPICS_BASE)/config/RULES_* .DEPENDS
|
||||
.PHONY:: $(HOME)/.EPICS_CONFIG $(HOME)/.EPICS_CONFIG.$(HOST_ARCH)
|
||||
.PHONY:: ../Makefile.Vx ../Makefile.Unix ../Makefile.Host Makefile
|
||||
|
||||
19
config/CONFIG_BASE_VERSION
Normal file
19
config/CONFIG_BASE_VERSION
Normal file
@@ -0,0 +1,19 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# EPICS Version information
|
||||
#
|
||||
# This file is interpreted by the Bourne Shell (MakeRelease), so spaces are
|
||||
# not allowed around the '=' signs or in unquoted values.
|
||||
#
|
||||
|
||||
EPICS_VERSION=3
|
||||
EPICS_REVISION=13
|
||||
EPICS_MODIFICATION=0
|
||||
EPICS_UPDATE_NAME=beta
|
||||
EPICS_UPDATE_LEVEL=9
|
||||
|
||||
EPICS_VERSION_STRING="EPICS Version ${EPICS_VERSION}.${EPICS_REVISION}.${EPICS_MODIFICATION}.${EPICS_UPDATE_NAME}${EPICS_UPDATE_LEVEL}"
|
||||
|
||||
CVS_DATE="\$$Date$$"
|
||||
|
||||
84
config/CONFIG_COMMON
Normal file
84
config/CONFIG_COMMON
Normal file
@@ -0,0 +1,84 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# CONFIG_COMMON - Another EPICS BASE config file
|
||||
# by Matthew Needes and Mike Bordua
|
||||
#
|
||||
# This file is to be maintained by the EPICS community.
|
||||
#
|
||||
|
||||
# Common Configuration Information
|
||||
|
||||
# CROSS1 will be defined only when CROSS_COMPILER_HOST_ARCHS is NOT defined
|
||||
CROSS1 = $(CROSS_COMPILER_TARGET_ARCHS$(word 1,$(CROSS_COMPILER_HOST_ARCHS)))
|
||||
|
||||
# CROSS2 will be defined only when CROSS_COMPILER_HOST_ARCHS is defined
|
||||
# and HOST_ARCH is one of it's words
|
||||
CROSS2 = $(CROSS_COMPILER_TARGET_ARCHS$(filter-out 1,$(words $(filter $(HOST_ARCH),$(CROSS_COMPILER_HOST_ARCHS)))))
|
||||
|
||||
BUILD_ARCHS = $(HOST_ARCH) $(CROSS1) $(CROSS2)
|
||||
|
||||
INSTALL_LOCATION = $(TOP)
|
||||
|
||||
INSTALL_LOCATION_LIB = $(INSTALL_LOCATION)/lib
|
||||
INSTALL_LOCATION_BIN = $(INSTALL_LOCATION)/bin
|
||||
|
||||
INSTALL_INCLUDE = $(INSTALL_LOCATION)/include
|
||||
INSTALL_DOC = $(INSTALL_LOCATION)/doc
|
||||
INSTALL_MAN = $(INSTALL_LOCATION)/man
|
||||
INSTALL_TEMPLATES = $(INSTALL_LOCATION)/templates
|
||||
INSTALL_DBD = $(INSTALL_LOCATION)/dbd
|
||||
INSTALL_CONFIG = $(INSTALL_LOCATION)/config
|
||||
|
||||
EPICS_BASE_INCLUDE = $(EPICS_BASE)/include
|
||||
EPICS_BASE_DBD = $(EPICS_BASE)/dbd
|
||||
|
||||
EPICS_EXTENSIONS_INCLUDE = $(EPICS_EXTENSIONS)/include
|
||||
EPICS_EXTENSIONS_TEMPLATES = $(EPICS_EXTENSIONS)/templates
|
||||
|
||||
DIVIDER = .
|
||||
|
||||
# private versions of lex/yacc from EPICS
|
||||
EYACC = $(EPICS_BASE)/bin/$(HOST_ARCH)/antelope$(EXE)
|
||||
ELEX = $(EPICS_BASE)/bin/$(HOST_ARCH)/e_flex$(EXE) -S$(EPICS_BASE_INCLUDE)/flex.skel.static
|
||||
|
||||
# Default for perl if it's on the PATH,
|
||||
# otherwise override this in e.g. CONFIG_SITE
|
||||
PERL=perl
|
||||
|
||||
# install from EPICS
|
||||
INSTALL = $(PERL) $(EPICS_BASE)/bin/$(HOST_ARCH)/installEpics.pl
|
||||
INSTALL_PRODUCT = $(INSTALL)
|
||||
|
||||
# dbtools from EPICS
|
||||
|
||||
# state notation language compiler (installed from base/src/sequencer)
|
||||
SNC = $(EPICS_BASE)/bin/$(HOST_ARCH)/snc
|
||||
|
||||
# vxWorks definitions
|
||||
VX_CONFIG_DIR = $(VX_DIR)/config
|
||||
VX_INCLUDE = $(VX_DIR)/h
|
||||
VX_GNU_BIN = $(VX_GNU)/$(HOST_ARCH).$(ARCH_CLASS)/bin
|
||||
VX_GNU_LIB = $(VX_GNU)/$(HOST_ARCH).$(ARCH_CLASS)/lib
|
||||
|
||||
ifdef T_A
|
||||
|
||||
INSTALL_LIB = $(INSTALL_LOCATION_LIB)/$(T_A)
|
||||
INSTALL_TCLLIB = $(INSTALL_LOCATION_LIB)/$(T_A)
|
||||
INSTALL_BIN = $(INSTALL_LOCATION_BIN)/$(T_A)
|
||||
|
||||
EPICS_BASE_LIB = $(EPICS_BASE)/lib/$(T_A)
|
||||
EPICS_BASE_BIN = $(EPICS_BASE)/bin/$(T_A)
|
||||
|
||||
EPICS_EXTENSIONS_LIB = $(EPICS_EXTENSIONS)/lib/$(T_A)
|
||||
EPICS_EXTENSIONS_BIN = $(EPICS_EXTENSIONS)/bin/$(T_A)
|
||||
|
||||
VX_IMAGE = $(VX_CONFIG_DIR)/$(T_A)/vxWorks
|
||||
VX_IMAGE_SYM = $(VX_CONFIG_DIR)/$(T_A)/vxWorks.sym
|
||||
|
||||
# location of installed vxWorks image
|
||||
EPICS_VX_IMAGE = $(EPICS_BASE_BIN)/vxWorks
|
||||
EPICS_VX_IMAGE_SYM = $(EPICS_BASE_BIN)/vxWorks.sym
|
||||
|
||||
endif
|
||||
|
||||
75
config/CONFIG_ENV
Normal file
75
config/CONFIG_ENV
Normal file
@@ -0,0 +1,75 @@
|
||||
# $Id$
|
||||
# Author: Andrew Johnson
|
||||
# Date: 20 April 1995
|
||||
#
|
||||
# Experimental Physics and Industrial Control System (EPICS)
|
||||
#
|
||||
# CONFIG_ENV - EPICS Environment Parameter configuration file
|
||||
#
|
||||
# This file is interpreted by the Bourne Shell, so spaces are
|
||||
# not allowed around the '=' signs or in unquoted values.
|
||||
# Makefile variables are not defined here.
|
||||
#
|
||||
# Note: This file is read by base/src/libCom/bldEnvdata.pl,
|
||||
# so the variable definitions in here should be kept 'simple':
|
||||
# VAR=VALUE
|
||||
# each one on a single line.
|
||||
#
|
||||
|
||||
|
||||
# Default environment settings
|
||||
|
||||
# Channel Access:
|
||||
# EPICS_CA_ADDR_LIST augment beacon/search dest ip addr list
|
||||
# from white space separated ip addresses in this
|
||||
# environment variable. "Quote" if more than one addr.
|
||||
# EPICS_CA_AUTO_ADDR_LIST YES = augment beacon/search dest ip
|
||||
# addr list from network interfaces found; NO = only use
|
||||
# EPICS_CA_ADDR_LIST to create this list.
|
||||
# EPICS_CA_CONN_TMO sec before sending echo request from client.
|
||||
# EPICS_CA_REPEATER_PORT CA repeater port number.
|
||||
# EPICS_CA_SERVER_PORT CA server port number.
|
||||
|
||||
EPICS_CA_ADDR_LIST=""
|
||||
EPICS_CA_AUTO_ADDR_LIST=YES
|
||||
EPICS_CA_CONN_TMO=30.0
|
||||
EPICS_CA_REPEATER_PORT=5065
|
||||
EPICS_CA_SERVER_PORT=5064
|
||||
|
||||
#
|
||||
# These parameters are only used by the CA server library
|
||||
#
|
||||
# EPICS_CA_BEACON_PERIOD quiescent sec between server beacons.
|
||||
# EPICS_CAS_INTF_ADDR_LIST - list of IP addresses identifying
|
||||
# a limited set of interfaces that the server should bind to.
|
||||
# If this parameter is empty then connections are accepted
|
||||
# from any interface. Beacons are sent only to the broadcast
|
||||
# address of each interface in this list (or the destination
|
||||
# address of point to point interfaces) if EPICS_CA_AUTO_ADDR_LIST
|
||||
# is YES. Type "ifconfig -a" in order to determine which
|
||||
# interfaces are available.
|
||||
# EPICS_CAS_BEACON_ADDR_LIST - If this parameter is specified
|
||||
# or if EPICS_CAS_INTF_ADDR_LIST isnt empty then this parameter
|
||||
# is used instead of EPICS_CA_ADDR_LIST by the server library
|
||||
# to augment the list of addresses to send beacons to.
|
||||
# EPICS_CAS_SERVER_PORT - If this parameter is specified then it
|
||||
# and not EPICS_CA_SERVER_PORT is used to determine the server's
|
||||
# port number.
|
||||
#
|
||||
EPICS_CA_BEACON_PERIOD=15.0
|
||||
EPICS_CAS_INTF_ADDR_LIST=""
|
||||
EPICS_CAS_BEACON_ADDR_LIST=""
|
||||
EPICS_CAS_SERVER_PORT=
|
||||
|
||||
|
||||
# Log Server:
|
||||
# EPICS_IOC_LOG_PORT Log server port number.
|
||||
|
||||
EPICS_IOC_LOG_PORT=7004
|
||||
|
||||
|
||||
# Other services:
|
||||
|
||||
EPICS_CMD_PROTO_PORT=
|
||||
EPICS_AR_PORT=7002
|
||||
|
||||
117
config/CONFIG_SITE
Normal file
117
config/CONFIG_SITE
Normal file
@@ -0,0 +1,117 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# CONFIG_SITE - EPICS BASE config file
|
||||
# by Matthew Needes and Mike Bordua
|
||||
#
|
||||
# This file is to be modified by the EPICS system manager
|
||||
# only.
|
||||
#
|
||||
|
||||
|
||||
# The host architecture performing the build,
|
||||
# i.e.: the arch running DCT/getrel/etc.
|
||||
#
|
||||
# Currently Supporting:
|
||||
# sun4
|
||||
# hp700
|
||||
# alpha
|
||||
# solaris
|
||||
# sgi
|
||||
# Linux
|
||||
# WIN32
|
||||
#
|
||||
# HOST_ARCH now an environment variable
|
||||
# HOST_ARCH=$(shell /usr/local/epics/startup/HostArch)
|
||||
ifndef HOST_ARCH
|
||||
HOST_ARCH=unsupported
|
||||
endif
|
||||
|
||||
# The architectures to build EPICS for
|
||||
#
|
||||
# Currently Supporting:
|
||||
# mv167
|
||||
# mv162
|
||||
# mv162lc
|
||||
# mv147
|
||||
# hkv2f
|
||||
# niCpu030
|
||||
# pc486
|
||||
#
|
||||
CROSS_COMPILER_TARGET_ARCHS=mv167
|
||||
|
||||
# If only a subset of the host architectures perform
|
||||
# the build for the CROSS_COMPILER_TARGET_ARCHS
|
||||
# uncomment the following line and specify them.
|
||||
#
|
||||
#CROSS_COMPILER_HOST_ARCHS=sun4
|
||||
|
||||
# VxWorks directory
|
||||
#VX_DIR=/usr/csite/vw/5.1.1/vw
|
||||
#VX_DIR=/usr/local/vw/vxV51.mm
|
||||
#VX_DIR=/usr/local/vw/vxV52/vw
|
||||
VX_DIR=/usr/local/vw/vxV52p1/vw
|
||||
|
||||
# Gnu directory for gcc
|
||||
#VX_GNU = $(VX_DIR)
|
||||
VX_GNU = $(VX_DIR)/../vxgccV2.2.3.1
|
||||
|
||||
# Gnu directory for g++
|
||||
GNU_DIR = /usr/local/hideos/gnu_install-2.7.2
|
||||
GNU_BIN = $(GNU_DIR)/bin
|
||||
GNU_LIB = $(GNU_DIR)/lib
|
||||
|
||||
# Client ANSI Compiler
|
||||
# GCC (gcc -ansi)
|
||||
# ACC (acc)
|
||||
# HPACC (cc -Aa)
|
||||
#ANSI=HPACC
|
||||
ANSI=ACC
|
||||
|
||||
# Client Standard C Compiler choice
|
||||
# GCC (gcc -traditional)
|
||||
# ACC (acc -Xs)
|
||||
# SUNCC (cc)
|
||||
# HPCC (cc -Ac)
|
||||
#STANDARD=HPCC
|
||||
STANDARD=ACC
|
||||
|
||||
# C++ Compiler
|
||||
# G++ (g++) GNU C++
|
||||
# CCC (CC) OS VENDOR C++
|
||||
#CPLUSPLUS=G++
|
||||
#CPLUSPLUS= # use this if site does not have C++ compiler
|
||||
CPLUSPLUS=CCC
|
||||
|
||||
# Build client objects statically ?
|
||||
# must be either YES or NO
|
||||
STATIC_BUILD=NO
|
||||
|
||||
# Unix Optimization
|
||||
# must be either YES or NO
|
||||
UNIX_OPT=YES
|
||||
|
||||
# VxWorks Optimization
|
||||
# must be either YES or NO
|
||||
VX_OPT=YES
|
||||
|
||||
# Generate Verbose Compiler Warnings for Unix
|
||||
# must be either YES or NO
|
||||
UNIX_WARN=YES
|
||||
|
||||
# Generate Verbose Compiler Warnings for VxWorks
|
||||
# must be either YES or NO
|
||||
VX_WARN=YES
|
||||
|
||||
# sch2edif compiler and flags
|
||||
SCH2EDIF = sch2edif
|
||||
SCH2EDIF_PATH =
|
||||
SCH2EDIF_SYSFLAGS = -n -ap -p.+..+$(SCH2EDIF_PATH)+$(EPICS_EXTENSIONS)/templates/capfast/sym+
|
||||
SCH2EDIF_FLAGS =
|
||||
|
||||
# e2db and flags
|
||||
# - again there is an assumption where edb.def is installed.
|
||||
E2DB = $(EPICS_EXTENSIONS)/bin/$(HOST_ARCH)/e2db
|
||||
E2DB_SYSFLAGS = -ate -d $(EPICS_EXTENSIONS)/templates/capfast/edb.def
|
||||
E2DB_FLAGS =
|
||||
|
||||
20
config/CONFIG_SITE.Linux
Normal file
20
config/CONFIG_SITE.Linux
Normal file
@@ -0,0 +1,20 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# Default SUN compiler, individual Makefiles will override
|
||||
# if they cannot support ANSI compilation.
|
||||
# STRICT - ANSI C - force warning flags
|
||||
# ANSI - ANSI C
|
||||
# OLD - Standard C - Not appropriate here.
|
||||
CMPLR=ANSI
|
||||
|
||||
# Default SUN C++ compiler, individual Makefiles will override
|
||||
# if they are coded to a higher standard.
|
||||
# STRICT - ANSI C++ force strict warning flags
|
||||
# NORMAL - ANSI C++ optional warning flags
|
||||
CXXCMPLR=NORMAL
|
||||
#CXXCMPLR=STRICT
|
||||
|
||||
29
config/CONFIG_SITE.Vx.68k.cygwin32
Normal file
29
config/CONFIG_SITE.Vx.68k.cygwin32
Normal file
@@ -0,0 +1,29 @@
|
||||
# $Id$
|
||||
#
|
||||
# This file is maintained by the EPICS community.
|
||||
|
||||
|
||||
# Site host architecture specific overrides for Vx.68k
|
||||
#
|
||||
|
||||
ANSI=GCC
|
||||
STANDARD=GCC
|
||||
CPLUSPLUS=G++
|
||||
|
||||
VX_DIR=/vw/vxV52p1/vw
|
||||
VX_GNU=/usr/local
|
||||
|
||||
VX_GNU_BIN = $(VX_GNU)/bin
|
||||
VX_GNU_LIB = $(VX_GNU)/lib
|
||||
|
||||
AR=$(VX_GNU_BIN)/m68k-wrs-vxworks-ar.exe
|
||||
RANLIB=$(VX_GNU_BIN)/m68k-wrs-vxworks-ranlib.exe
|
||||
CC=$(VX_GNU_BIN)/m68k-wrs-vxworks-gcc.exe -B$(VX_GNU_LIB)/gcc-lib/ -nostdinc
|
||||
G++=$(VX_GNU_BIN)/m68k-wrs-vxworks-g++.exe -B$(VX_GNU_LIB)/gcc-lib/ -nostdinc
|
||||
CPP=$(VX_GNU_BIN)/m68k-wrs-vxworks-cpp.exe -nostdinc
|
||||
LD=$(VX_GNU_BIN)/m68k-wrs-vxworks-ld.exe -r
|
||||
|
||||
# Not in cygwin32
|
||||
WHAT = echo
|
||||
|
||||
|
||||
7
config/CONFIG_SITE.WIN32
Normal file
7
config/CONFIG_SITE.WIN32
Normal file
@@ -0,0 +1,7 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
|
||||
21
config/CONFIG_SITE.alpha
Normal file
21
config/CONFIG_SITE.alpha
Normal file
@@ -0,0 +1,21 @@
|
||||
#
|
||||
# CONFIG_SITE.Unix.alpha
|
||||
#
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# Default compiler, individual Makefiles will override
|
||||
# if they cannot support ANSI compilation.
|
||||
# STRICT - ANSI C - force warning flags
|
||||
# ANSI - ANSI C
|
||||
# OLD - Standard C - Not appropriate here.
|
||||
CMPLR=ANSI
|
||||
|
||||
# Default SUN C++ compiler, individual Makefiles will override
|
||||
# if they are coded to a higher standard.
|
||||
# STRICT - ANSI C++ force strict warning flags
|
||||
# NORMAL - ANSI C++ optional warning flags
|
||||
CXXCMPLR=NORMAL
|
||||
#CXXCMPLR=STRICT
|
||||
|
||||
21
config/CONFIG_SITE.cygwin32
Executable file
21
config/CONFIG_SITE.cygwin32
Executable file
@@ -0,0 +1,21 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
|
||||
# Default compiler, individual Makefiles will override
|
||||
# if they cannot support ANSI compilation.
|
||||
# STRICT - ANSI C - force warning flags
|
||||
# ANSI - ANSI C
|
||||
# OLD - Standard C - Not appropriate here.
|
||||
CMPLR=ANSI
|
||||
|
||||
# Default C++ compiler, individual Makefiles will override
|
||||
# if they are coded to a higher standard.
|
||||
# STRICT - ANSI C++ force strict warning flags
|
||||
# NORMAL - ANSI C++ optional warning flags
|
||||
CXXCMPLR=NORMAL
|
||||
|
||||
SPECIAL_LANG = .
|
||||
9
config/CONFIG_SITE.hkv2f
Normal file
9
config/CONFIG_SITE.hkv2f
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
# $Id$
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# Epics defs
|
||||
|
||||
|
||||
21
config/CONFIG_SITE.hp700
Normal file
21
config/CONFIG_SITE.hp700
Normal file
@@ -0,0 +1,21 @@
|
||||
#
|
||||
# CONFIG_SITE.Unix.hp700
|
||||
#
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# Default compiler, individual Makefiles will override
|
||||
# if they cannot support ANSI compilation.
|
||||
# STRICT - ANSI C - force warning flags
|
||||
# ANSI - ANSI C
|
||||
# OLD - Standard C - Not appropriate here.
|
||||
CMPLR=ANSI
|
||||
|
||||
# Default SUN C++ compiler, individual Makefiles will override
|
||||
# if they are coded to a higher standard.
|
||||
# STRICT - ANSI C++ force strict warning flags
|
||||
# NORMAL - ANSI C++ optional warning flags
|
||||
CXXCMPLR=NORMAL
|
||||
#CXXCMPLR=STRICT
|
||||
|
||||
9
config/CONFIG_SITE.mv147
Normal file
9
config/CONFIG_SITE.mv147
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
# $Id$
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# Epics defs
|
||||
|
||||
|
||||
9
config/CONFIG_SITE.mv162
Normal file
9
config/CONFIG_SITE.mv162
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
# $Id$
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# Epics defs
|
||||
|
||||
|
||||
9
config/CONFIG_SITE.mv162lc
Normal file
9
config/CONFIG_SITE.mv162lc
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
# $Id$
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# Epics defs
|
||||
|
||||
|
||||
9
config/CONFIG_SITE.mv167
Normal file
9
config/CONFIG_SITE.mv167
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
# $Id$
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# Epics defs
|
||||
|
||||
|
||||
9
config/CONFIG_SITE.mv177
Normal file
9
config/CONFIG_SITE.mv177
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
# $Id$
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# Epics defs
|
||||
|
||||
|
||||
9
config/CONFIG_SITE.niCpu030
Normal file
9
config/CONFIG_SITE.niCpu030
Normal file
@@ -0,0 +1,9 @@
|
||||
|
||||
# $Id$
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# Epics defs
|
||||
|
||||
|
||||
6
config/CONFIG_SITE.pc486
Normal file
6
config/CONFIG_SITE.pc486
Normal file
@@ -0,0 +1,6 @@
|
||||
# $Log$
|
||||
# Revision 1.1.2.1 1996/11/25 20:20:22 jhill
|
||||
# installed
|
||||
#
|
||||
# -kuk-
|
||||
|
||||
27
config/CONFIG_SITE.sgi
Normal file
27
config/CONFIG_SITE.sgi
Normal file
@@ -0,0 +1,27 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Revision 1.2 1994/06/28 00:02:32 bordua
|
||||
# First cut at the RULES and CONFIGS.
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# Default SUN compiler, individual Makefiles will override
|
||||
# if they cannot support ANSI compilation.
|
||||
# STRICT - ANSI C - force warning flags
|
||||
# ANSI - ANSI C
|
||||
# OLD - Standard C - Not appropriate here.
|
||||
CMPLR=ANSI
|
||||
|
||||
# Default SUN C++ compiler, individual Makefiles will override
|
||||
# if they are coded to a higher standard.
|
||||
# STRICT - ANSI C++ force strict warning flags
|
||||
# NORMAL - ANSI C++ optional warning flags
|
||||
CXXCMPLR=NORMAL
|
||||
#CXXCMPLR=STRICT
|
||||
|
||||
# Special C library requirements
|
||||
SPECIAL_LANG =
|
||||
|
||||
|
||||
26
config/CONFIG_SITE.solaris
Normal file
26
config/CONFIG_SITE.solaris
Normal file
@@ -0,0 +1,26 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# Default SUN compiler, individual Makefiles will override
|
||||
# if they cannot support ANSI compilation.
|
||||
# STRICT - ANSI C - force warning flags
|
||||
# ANSI - ANSI C
|
||||
# OLD - Standard C - Not appropriate here.
|
||||
CMPLR=ANSI
|
||||
|
||||
# Default SUN C++ compiler, individual Makefiles will override
|
||||
# if they are coded to a higher standard.
|
||||
# STRICT - ANSI C++ force strict warning flags
|
||||
# NORMAL - ANSI C++ optional warning flags
|
||||
CXXCMPLR=NORMAL
|
||||
#CXXCMPLR=STRICT
|
||||
|
||||
# Unbundled C compiler stuff
|
||||
SPARCWORKS = /opt/SUNWspro
|
||||
#SPECIAL_LANG = $(SPARCWORKS)/lib
|
||||
SPECIAL_LANG = .
|
||||
|
||||
|
||||
31
config/CONFIG_SITE.sun4
Normal file
31
config/CONFIG_SITE.sun4
Normal file
@@ -0,0 +1,31 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Site Specific Configuration Information
|
||||
# Only the local epics system manager should modify this file
|
||||
|
||||
# Default SUN compiler, individual Makefiles will override
|
||||
# if they cannot support ANSI compilation.
|
||||
# STRICT - ANSI C - force warning flags
|
||||
# ANSI - ANSI C
|
||||
# OLD - Standard C - Not appropriate here.
|
||||
|
||||
CMPLR=ANSI
|
||||
|
||||
# Default SUN C++ compiler, individual Makefiles will override
|
||||
# if they are coded to a higher standard.
|
||||
# STRICT - ANSI C++ force strict warning flags
|
||||
# NORMAL - ANSI C++ optional warning flags
|
||||
CXXCMPLR=NORMAL
|
||||
#CXXCMPLR=STRICT
|
||||
|
||||
#CMPLR=STRICT
|
||||
#ANSI=GCC
|
||||
#STANDARD=GCC
|
||||
#CPLUSPLUS=G++
|
||||
|
||||
# Special C library requirements
|
||||
#SPECIAL_LANG = /usr/lang/SC3.0.1
|
||||
#SPECIAL_LANG = /usr/lang/lib
|
||||
SPECIAL_LANG = .
|
||||
|
||||
45
config/CONFIG_SITE_ENV
Normal file
45
config/CONFIG_SITE_ENV
Normal file
@@ -0,0 +1,45 @@
|
||||
# $Id$
|
||||
# Author: Andrew Johnson
|
||||
# Date: 1 May 1995
|
||||
#
|
||||
# Experimental Physics and Industrial Control System (EPICS)
|
||||
#
|
||||
# CONFIG_SITE_ENV - EPICS Environment Parameter Site configuration file
|
||||
#
|
||||
# This file is interpreted by the Bourne Shell, so spaces are
|
||||
# not allowed around the '=' signs or in unquoted values.
|
||||
# Makefile variables are not defined here.
|
||||
#
|
||||
# Note: This file is read by base/src/libCom/bldEnvdata.pl,
|
||||
# so the variable definitions in here should be kept 'simple':
|
||||
# VAR=VALUE
|
||||
# each one on a single line.
|
||||
#
|
||||
|
||||
# Site-specific environment settings
|
||||
|
||||
# Time service:
|
||||
# EPICS_TS_MIN_WEST the local time difference from GMT.
|
||||
# EPICS_TS_NTP_INET ntp or Unix time server ip addr.
|
||||
|
||||
EPICS_TS_MIN_WEST=360
|
||||
EPICS_TS_NTP_INET=
|
||||
|
||||
|
||||
# Log Server:
|
||||
# EPICS_IOC_LOG_INET
|
||||
# Log server ip addr.
|
||||
# EPICS_IOC_LOG_FILE_NAME
|
||||
# pathname to the log file.
|
||||
# EPICS_IOC_LOG_FILE_LIMIT
|
||||
# maximum log file size.
|
||||
# EPICS_IOC_LOG_FILE_COMMAND
|
||||
# A shell command string used to obtain a new
|
||||
# path name in response to SIGHUP - the new path name will
|
||||
# replace any path name supplied in EPICS_IOC_LOG_FILE_NAME
|
||||
|
||||
EPICS_IOC_LOG_INET=164.54.8.167
|
||||
EPICS_IOC_LOG_FILE_NAME=/home/phebos1/epics/apple/log/iocLog.text
|
||||
EPICS_IOC_LOG_FILE_COMMAND=
|
||||
EPICS_IOC_LOG_FILE_LIMIT=1000000
|
||||
|
||||
105
config/HostSys.txt
Normal file
105
config/HostSys.txt
Normal file
@@ -0,0 +1,105 @@
|
||||
Short Description of the "Host" (vs. "Unix") Build System
|
||||
---------------------------------------------------------
|
||||
|
||||
7-30-96 -kuk-
|
||||
questions/comments please mailto:kasemir@atdiv.lanl.gov
|
||||
|
||||
|
||||
To build EPICS on the WIN32 architecture
|
||||
the "old" make-system using Makefile.Unix in each
|
||||
subdir and RULES.Host was not suitable because
|
||||
it is too much Unix-dependent.
|
||||
|
||||
A "new" system using Makefile.Host and RULES.Host
|
||||
was used instead. This "host" system should work
|
||||
on all other architectures as well.
|
||||
The idea is that ALL architectures should be able to use
|
||||
the "host" system in future because.
|
||||
|
||||
The syntax of the 'Host' Makefiles is described
|
||||
in 'Sample.Makefile.Host'. Any suggestions for a
|
||||
better syntax (in connection whith ideas how to
|
||||
implement this in RULES.Host!) are very welcome!
|
||||
|
||||
To use it, only a few changes should be necessary:
|
||||
|
||||
A) In CONFIG.<WIN32, sun4, hp700, ... whatever you are using>:
|
||||
|
||||
1) Set
|
||||
BUILD_TYPE=Host
|
||||
instead of 'Unix'. This switches you over to using
|
||||
Makefile.Host instead of Makefile.Unix.
|
||||
|
||||
2) Set ARCH_CLASS to the correct architecture class.
|
||||
(ARCH_CLASS used to be defined in the past, right now
|
||||
it seems it's only set for VxWorks targets, not hosts).
|
||||
|
||||
ARCH_CLASS is used to define system-dependent
|
||||
CFLAGS, library contents etc. in Makefile.Host,
|
||||
so it should describe the general architecture,
|
||||
maybe
|
||||
WIN32 : this is the only one really supported in Makefile.Host by now
|
||||
BSD for sun4,
|
||||
SYSV for ??,
|
||||
|
||||
Maybe this "general arch" is not sufficient, so we will
|
||||
end up using
|
||||
ARCH_CLASS=WIN32, sun4, hp700, ....
|
||||
as it used to be.
|
||||
|
||||
3) Make sure that the following (new) macros are defined:
|
||||
|
||||
CP =$(PERL) $(EPICS_BASE)/src/tools/cp.pl
|
||||
MV =$(PERL) $(EPICS_BASE)/src/tools/mv.pl
|
||||
RM =$(PERL) $(EPICS_BASE)/src/tools/rm.pl -f
|
||||
MKDIR=$(PERL) $(EPICS_BASE)/src/tools/mkdir.pl
|
||||
RMDIR=$(PERL) $(EPICS_BASE)/src/tools/rm.pl -rf
|
||||
or
|
||||
CP=cp
|
||||
MV=mv
|
||||
RM=rm -f
|
||||
MKDIR=mkdir
|
||||
RMDIR=rm -rf
|
||||
|
||||
EXE=
|
||||
OBJ=.o
|
||||
|
||||
4) LINK.c and LINK.cc must now include the target-flag, e.g.:
|
||||
LINK.c = $(CC) $(LDFLAGS) -o $@
|
||||
|
||||
because the "-o $@" is also system dependent (it's -Fe$@ for WIN32)
|
||||
|
||||
5) The bin directory for the host based epics tools
|
||||
$(EPICS)/base/bin/$(HOST_ARCH)
|
||||
must be in your PATH.
|
||||
|
||||
|
||||
B) Adjust Makefile.Host
|
||||
|
||||
If you are trying to build EPICS now, there might be errors
|
||||
because the Makefile.Host files are only tested on WIN32, yet.
|
||||
|
||||
If changes are necessare in some base/src/???/Makefile.Host,
|
||||
refer to Sample.Makefile.Host in the base/config dir.
|
||||
|
||||
|
||||
|
||||
|
||||
The current make-system for WIN32
|
||||
needs
|
||||
* gnumake (OK, sources for WIN32 are available)
|
||||
* several UNIX tools: sed, grep, ... (dito)
|
||||
* a UNIX-like shell (ouch!)
|
||||
|
||||
I found no fully operational shell and no sources for WIN32 so far,
|
||||
Cygnus' bash e.g. cannot handle this:
|
||||
(echo a>a; echo b>>a)
|
||||
Right now I use the knts that I wrote and simplified scripts.
|
||||
Jeff eliminated many shell-lines in Makefile.*,
|
||||
the final solution could be:
|
||||
1) replace shell, awk, grep, sed, ... by Perl!
|
||||
2) use C code
|
||||
|
||||
Perl looks like a real option because it's available
|
||||
for many platforms and maybe the best idea for
|
||||
'portable scripts'.
|
||||
10
config/Makefile
Normal file
10
config/Makefile
Normal file
@@ -0,0 +1,10 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
TOP=..
|
||||
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
|
||||
include $(TOP)/config/RULES_ARCHS
|
||||
|
||||
57
config/Makefile.Host
Normal file
57
config/Makefile.Host
Normal file
@@ -0,0 +1,57 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
TOP = ../..
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
|
||||
CONFIGS += CONFIG
|
||||
CONFIGS += CONFIG_BASE
|
||||
CONFIGS += CONFIG_BASE_VERSION
|
||||
CONFIGS += CONFIG_COMMON
|
||||
CONFIGS += CONFIG_ENV
|
||||
|
||||
CONFIGS += CONFIG.WIN32
|
||||
CONFIGS += CONFIG.pc486
|
||||
CONFIGS += CONFIG.Linux
|
||||
CONFIGS += CONFIG.alpha
|
||||
CONFIGS += CONFIG.hp700
|
||||
CONFIGS += CONFIG.sgi
|
||||
CONFIGS += CONFIG.solaris
|
||||
CONFIGS += CONFIG.sun4
|
||||
CONFIGS += CONFIG.hkv2f
|
||||
CONFIGS += CONFIG.mv147
|
||||
CONFIGS += CONFIG.mv162
|
||||
CONFIGS += CONFIG.mv162lc
|
||||
CONFIGS += CONFIG.mv167
|
||||
CONFIGS += CONFIG.niCpu030
|
||||
|
||||
CONFIGS += CONFIG.Vx.68k
|
||||
|
||||
CONFIGS += CONFIG_SITE
|
||||
CONFIGS += CONFIG_SITE_ENV
|
||||
|
||||
CONFIGS += CONFIG_SITE.WIN32
|
||||
CONFIGS += CONFIG_SITE.pc486
|
||||
CONFIGS += CONFIG_SITE.Linux
|
||||
CONFIGS += CONFIG_SITE.alpha
|
||||
CONFIGS += CONFIG_SITE.hp700
|
||||
CONFIGS += CONFIG_SITE.sgi
|
||||
CONFIGS += CONFIG_SITE.solaris
|
||||
CONFIGS += CONFIG_SITE.sun4
|
||||
CONFIGS += CONFIG_SITE.hkv2f
|
||||
CONFIGS += CONFIG_SITE.mv147
|
||||
CONFIGS += CONFIG_SITE.mv162lc
|
||||
CONFIGS += CONFIG_SITE.mv162
|
||||
CONFIGS += CONFIG_SITE.mv167
|
||||
CONFIGS += CONFIG_SITE.niCpu030
|
||||
|
||||
CONFIGS += RULES.Host
|
||||
CONFIGS += RULES.Vx
|
||||
CONFIGS += RULES_ARCHS
|
||||
CONFIGS += RULES_DIRS
|
||||
CONFIGS += RULES_TOP
|
||||
CONFIGS += RULES.Db
|
||||
CONFIGS += RULES.ioc
|
||||
|
||||
include $(TOP)/config/RULES.Host
|
||||
30
config/Makefile.Unix
Normal file
30
config/Makefile.Unix
Normal file
@@ -0,0 +1,30 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
TOP = ../..
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
|
||||
CONFIGS += CONFIG
|
||||
CONFIGS += CONFIG_BASE
|
||||
CONFIGS += CONFIG_COMMON
|
||||
CONFIGS += CONFIG_ENV
|
||||
|
||||
CONFIGS += CONFIG.Vx.68k
|
||||
|
||||
CONFIGS += CONFIG_SITE
|
||||
CONFIGS += CONFIG_SITE_ENV
|
||||
|
||||
CONFIGS += $(HOST_ARCH:%=CONFIG.%)
|
||||
CONFIGS += $(CROSS_COMPILER_TARGET_ARCHS:%=CONFIG.%)
|
||||
CONFIGS += $(HOST_ARCH:%=CONFIG_SITE.%)
|
||||
CONFIGS += $(CROSS_COMPILER_TARGET_ARCHS:%=CONFIG_SITE.%)
|
||||
|
||||
CONFIGS += RULES.Unix
|
||||
CONFIGS += RULES.Vx
|
||||
CONFIGS += RULES_ARCHS
|
||||
CONFIGS += RULES_DIRS
|
||||
CONFIGS += RULES_TOP
|
||||
|
||||
include $(TOP)/config/RULES.Unix
|
||||
|
||||
59
config/RULES.Db
Normal file
59
config/RULES.Db
Normal file
@@ -0,0 +1,59 @@
|
||||
#RULES.Db
|
||||
SUBTOOL = $(EPICS_BASE_BIN)/subtool
|
||||
PREFIX=$(shell echo $* | sed -e 's-[0-9]--g' | sed -e 's-\.db--g')
|
||||
ARCHS += $(BUILD_ARCHS) host cross
|
||||
ACTIONS += clean inc depends buildInstall build
|
||||
actionArchTargets = $(foreach action, $(ACTIONS) install,\
|
||||
$(foreach arch, $(ARCHS), \
|
||||
$(action)$(DIVIDER)$(arch)))
|
||||
|
||||
all install :: inc buildInstall
|
||||
|
||||
buildInstall: .DEPENDS dbd $(DBFROMTEMPLATE) $(INDDBFROMTEMPLATE) $(PROD)
|
||||
|
||||
inc build depends:
|
||||
|
||||
$(TOP)/dbd:
|
||||
$(MKDIR) $(TOP)/dbd
|
||||
|
||||
dbd: $(TOP)/dbd
|
||||
ifndef WIN32
|
||||
ln -s $(TOP)/dbd dbd
|
||||
endif
|
||||
|
||||
|
||||
$(DBFROMTEMPLATE):%.db: %.template %.substitutions
|
||||
$(RM) $@
|
||||
$(SUBTOOL) $*.template $*.substitutions > $@
|
||||
|
||||
|
||||
$(INDDBFROMTEMPLATE):%.db: %.substitutions
|
||||
$(RM) $@
|
||||
ifndef WIN32
|
||||
$(SUBTOOL) $(PREFIX).template $*.substitutions > $@
|
||||
endif
|
||||
|
||||
.DEPENDS: Makefile
|
||||
@$(RM) $@
|
||||
ifndef WIN32
|
||||
@for NAME in $(INDDBFROMTEMPLATE) garbage_marty ; do \
|
||||
if [ $$NAME != garbage_marty ] ; then \
|
||||
PREFIX="`echo $$NAME | sed -e 's-[0-9]--g' | sed -e 's-\.db--g'`";\
|
||||
echo "$$NAME: $$PREFIX.template" >> $@;\
|
||||
fi ; \
|
||||
done
|
||||
endif
|
||||
|
||||
clean::
|
||||
@$(RM) dbd $(DBFROMTEMPLATE) $(INDDBFROMTEMPLATE) .DEPENDS $(PROD)
|
||||
|
||||
$(actionArchTargets) :%:
|
||||
$(MAKE) $(word 1, $(subst $(DIVIDER), ,$@))
|
||||
|
||||
$(ARCHS):%: install
|
||||
|
||||
.PHONY :: $(ARCHS) $(ACTIONS)
|
||||
.PHONY :: $(actionArchTargets)
|
||||
|
||||
-include .DEPENDS
|
||||
|
||||
601
config/RULES.Host
Normal file
601
config/RULES.Host
Normal file
@@ -0,0 +1,601 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Rules for making things specified in Makefile.Host
|
||||
#
|
||||
# Some rules for filename-massage are system specific
|
||||
# and have "ifdefs" here instead of using definitions
|
||||
# from CONFIG.Host.$(ARCH_CLASS) - sorry about this,
|
||||
# but so far the rules are quite similar on all systems
|
||||
# except WIN32 has some specials.
|
||||
#
|
||||
# Maybe there is a way to use indentation to make it
|
||||
# easier to read this file?
|
||||
#
|
||||
# Most things may also work if you say e.g.
|
||||
# VAR+=ADD
|
||||
# even if ADD is not there, but this way "VAR" would
|
||||
# be defined in any case, that's why I try to use
|
||||
# ifdef ADD
|
||||
# VAR+=ADD
|
||||
# endif
|
||||
#
|
||||
# -kuk-
|
||||
|
||||
# we are in O.$(ARCH_CLASS), but most sources are one dir above:
|
||||
#
|
||||
# The use of VPATH (no suffix specification) caused everything
|
||||
# to break several times.
|
||||
# vpath, of course, has the disadvantage that we need explicit rules
|
||||
# for scripts or similar os-specific filed which have _no_ suffix...
|
||||
vpath %.c $(USER_VPATH) ../os/$(ARCH_CLASS) ../os/generic ..
|
||||
vpath %.cc $(USER_VPATH) ../os/$(ARCH_CLASS) ../os/generic ..
|
||||
# This prevents base/src/include/*.h from being installed. Why??
|
||||
#vpath %.h ../os/$(ARCH_CLASS) ../os/generic ..
|
||||
vpath %.h $(USER_VPATH)
|
||||
|
||||
# check for add-on CFLAGS and CXXFLAGS
|
||||
#
|
||||
# Rules:
|
||||
# 1) USR_CFLAGS is used
|
||||
# 2) if there is a special USR_CFLAGS_$(ARCH_CLASS), it's
|
||||
# appended to 1)
|
||||
# 3) if there is no special defined, but a generic USR_CFLAGS_DEFAULT,
|
||||
# this one is appended
|
||||
# 4) if you have the special case that your USR_CFLAGS_$(ARCH_CLASS) is
|
||||
# empty but you don't want 3), you have to define it as '-nil-', e.g.:
|
||||
# USR_CFLAGS := <defines for all systems>
|
||||
# USR_CFLAGS_sun4 := -nil-
|
||||
# USR_CFLAGS_DEFAULT := <defines for most systems, not sun4>
|
||||
#
|
||||
# These rules apply to these Makefile-variables:
|
||||
# USR_CFLAGS C flags
|
||||
# USR_CXXFLAGS C++ flags
|
||||
# INC include-files to install
|
||||
# LIBSRCS source files for building library
|
||||
# PROD_LIBS EPICS libs needed by PROD and TESTPROD
|
||||
# SYS_PROD_LIBS system libs needed by PROD and TESTPROD
|
||||
# PROD products to build and install
|
||||
# SCRIPTS scripts to install
|
||||
#
|
||||
# Remark:
|
||||
# If you define a special INC, e.g. INC_WIN32 := getopt.h,
|
||||
# the source (getopt.h) has to be in os/WIN32 (or os/<your ARCH_CLASS>)
|
||||
#
|
||||
# This makes INC_$(ARCH_CLASS) slightly different from OSINC:
|
||||
# OSINC := a_file.h
|
||||
# means that you have a special os/$(ARCH_CLASS)/a_file.h
|
||||
# for _every_ ARCH_CLASS.
|
||||
# If you use INC_$(ARCH_CLASS), you need the special include
|
||||
# only for the specified ARCH_CLASS!
|
||||
#
|
||||
ifneq (x$(USR_CFLAGS_$(ARCH_CLASS)),x)
|
||||
USR_CFLAGS+=$(subst -nil-,,$(USR_CFLAGS_$(ARCH_CLASS)))
|
||||
else
|
||||
ifdef USR_CFLAGS_DEFAULT
|
||||
USR_CFLAGS+=$(USR_CFLAGS_DEFAULT)
|
||||
endif
|
||||
endif
|
||||
|
||||
ifneq (x$(USR_CXXFLAGS_$(ARCH_CLASS)),x)
|
||||
USR_CXXFLAGS+=$(subst -nil-,,$(USR_CXXFLAGS_$(ARCH_CLASS)))
|
||||
else
|
||||
ifdef USR_CXXFLAGS_DEFAULT
|
||||
USR_CXXFLAGS+=$(USR_CXXFLAGS_DEFAULT)
|
||||
endif
|
||||
endif
|
||||
|
||||
# check for special includes:
|
||||
#
|
||||
ifneq (x$(INC_$(ARCH_CLASS)),x)
|
||||
# os-specific includes go to the include/os-directory:
|
||||
OSINC += $(subst -nil-,,$(INC_$(ARCH_CLASS)))
|
||||
else
|
||||
ifdef INC_DEFAULT
|
||||
INC += $(INC_DEFAULT)
|
||||
endif
|
||||
endif
|
||||
|
||||
# concat specific library contents (if defined) to LIBCONTENS
|
||||
#
|
||||
ifneq (x$(LIBSRCS_$(ARCH_CLASS)),x)
|
||||
LIBSRCS += $(subst -nil-,,$(LIBSRCS_$(ARCH_CLASS)))
|
||||
else
|
||||
|
||||
ifdef LIBSRCS_DEFAULT
|
||||
LIBSRCS+=$(LIBSRCS_DEFAULT)
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
# adjust object names for library contents
|
||||
#
|
||||
ifdef LIBSRCS
|
||||
LIBOBJS=$(addsuffix $(OBJ), $(basename $(LIBSRCS)))
|
||||
endif
|
||||
|
||||
#
|
||||
# concat specific library contents (if defined) to PROD_LIBS
|
||||
#
|
||||
ifneq (x$(PROD_LIBS_$(ARCH_CLASS)),x)
|
||||
PROD_LIBS += $(subst -nil-,,$(PROD_LIBS_$(ARCH_CLASS)))
|
||||
|
||||
else
|
||||
|
||||
ifdef PROD_LIBS_DEFAULT
|
||||
PROD_LIBS += $(PROD_LIBS_DEFAULT)
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
#
|
||||
# concat specific library contents (if defined) to SYS_PROD_LIBS
|
||||
#
|
||||
ifneq (x$(SYS_PROD_LIBS_$(ARCH_CLASS)),x)
|
||||
SYS_PROD_LIBS += $(subst -nil-,,$(SYS_PROD_LIBS_$(ARCH_CLASS)))
|
||||
|
||||
else
|
||||
|
||||
ifdef SYS_PROD_LIBS_DEFAULT
|
||||
SYS_PROD_LIBS += $(SYS_PROD_LIBS_DEFAULT)
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
#
|
||||
# concat specific products
|
||||
#
|
||||
ifneq (x$(PROD_$(ARCH_CLASS)),x)
|
||||
PROD += $(subst -nil-,,$(PROD_$(ARCH_CLASS)))
|
||||
|
||||
else
|
||||
|
||||
ifdef PROD_DEFAULT
|
||||
PROD += $(PROD_DEFAULT)
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
#
|
||||
# concat specific scripts
|
||||
#
|
||||
ifneq (x$(SCRIPTS_$(ARCH_CLASS)),x)
|
||||
SCRIPTS += $(subst -nil-,,$(SCRIPTS_$(ARCH_CLASS)))
|
||||
|
||||
else
|
||||
|
||||
ifdef SCRIPTS_DEFAULT
|
||||
SCRIPTS += $(SCRIPTS_DEFAULT)
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
# -------------------------------------------------------------------
|
||||
# adjust names to platform specific pre-/postfixes,
|
||||
# this is ugly (ifdef XXX...) but hopefully get's you there...
|
||||
# -------------------------------------------------------------------
|
||||
|
||||
# adjust names of libraries to build
|
||||
#
|
||||
# But: if there are no objects LIBOBJS to include
|
||||
# in this library (may be for e.g. base/src/libCompat
|
||||
# on some archs), don't define (and build) any library!
|
||||
ifdef LIBRARY
|
||||
ifdef LIBOBJS
|
||||
|
||||
ifndef WIN32
|
||||
# handle plain Unix first because it's easy: <lib> -> lib<lib>.a
|
||||
LIBNAME:=$(LIBRARY:%=lib%.a)
|
||||
|
||||
else
|
||||
# WIN32 library name:
|
||||
LIBNAME:=$(LIBRARY).lib
|
||||
# check if DLL or plain lib requested:
|
||||
ifeq ($(LIBTYPE),SHARED)
|
||||
# create name for dll, import file
|
||||
DLLNAME:=$(LIBRARY).dll
|
||||
# libs defined that we need to link the DLL with?
|
||||
DLL_DEP_LIBS:=$(DLL_LIBS:%=%.lib)
|
||||
endif # LIBTYPE=SHARED
|
||||
endif # WIN32
|
||||
|
||||
endif
|
||||
endif # LIBRARY and LIBOBJS
|
||||
|
||||
# dito for libraries used by PROD
|
||||
#
|
||||
ifdef PROD_LIBS
|
||||
# add to USR_LDLIBS so that the libs are linked
|
||||
|
||||
ifdef WIN32
|
||||
PRODDEPLIBS:=$(PROD_LIBS:%=$(INSTALL_LIB)/%.lib)
|
||||
USR_LDLIBS += -libpath:$(INSTALL_LIB) $(PROD_LIBS:%=%.lib)
|
||||
else
|
||||
# On Unix: library "ca" is linked with "-lca" etc.
|
||||
PRODDEPLIBS=$(PROD_LIBS:%=$(INSTALL_LIB)/lib%.a)
|
||||
USR_LDLIBS += -L$(INSTALL_LIB) $(PROD_LIBS:%=-l%)
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
|
||||
# dito for system libraries used by PROD
|
||||
#
|
||||
ifdef SYS_PROD_LIBS
|
||||
|
||||
ifdef WIN32
|
||||
# add to USR_LDLIBS so that the libs are linked
|
||||
# we need the full path because there is no "-L" option on WIN32....
|
||||
USR_LDLIBS += $(SYSPRODDEPLIBS)
|
||||
else
|
||||
# On Unix: it is difficult to determine where the
|
||||
# system lib is (because of add on compilere).
|
||||
# Therefore no additions to PRODDEPLIBS for
|
||||
# system libraries.
|
||||
#
|
||||
USR_LDLIBS += $(SYS_PROD_LIBS:%=-l%)
|
||||
endif
|
||||
|
||||
endif
|
||||
|
||||
# adjust executables
|
||||
ifdef PROD
|
||||
PROD := $(addsuffix $(EXE), $(PROD))
|
||||
endif
|
||||
|
||||
ifdef TESTPROD
|
||||
TESTPROD := $(addsuffix $(EXE), $(TESTPROD))
|
||||
endif
|
||||
|
||||
# ----------------------------------------------------
|
||||
# create names (lists) for installed things
|
||||
# ----------------------------------------------------
|
||||
|
||||
# each list starts with the destination directory name(s)
|
||||
# to make sure it's there
|
||||
|
||||
INSTALL_PROD= $(PROD:%= $(INSTALL_BIN)/%)
|
||||
|
||||
# DLLs (only defined on WIN32) are like executables:
|
||||
ifdef DLLNAME
|
||||
INSTALL_DLLS=$(DLLNAME:%=$(INSTALL_BIN)/%)
|
||||
endif
|
||||
|
||||
INSTALL_LIBS= $(LIBNAME:%=$(INSTALL_LIB)/%)
|
||||
INSTALL_INC= $(INC:%=$(INSTALL_INCLUDE)/%)
|
||||
INSTALL_OSINCLUDE=$(INSTALL_INCLUDE)/os/$(ARCH_CLASS)
|
||||
INSTALL_OSINC= $(OSINC:%= $(INSTALL_OSINCLUDE)/%)
|
||||
MANLIST = 1 2 3 4 5 6 7 8 9
|
||||
INSTALL_MANS = $(foreach n, \
|
||||
$(MANLIST),$(INSTALL_MAN)/man$(n) $(MAN$(n):%= $(INSTALL_MAN)/man$(n)/%))
|
||||
INSTALL_DOCS = $(DOCS:%= $(INSTALL_DOC)/%)
|
||||
INSTALL_SCRIPTS = $(SCRIPTS:%= $(INSTALL_BIN)/%)
|
||||
ifdef TEMPLATES_DIR
|
||||
INSTALL_TEMPLATES_SUBDIR = $(INSTALL_TEMPLATES)/$(TEMPLATES_DIR)
|
||||
else
|
||||
INSTALL_TEMPLATES_SUBDIR = $(INSTALL_TEMPLATES)
|
||||
endif
|
||||
INSTALL_TEMPLATE = $(TEMPLATES:%= $(INSTALL_TEMPLATES_SUBDIR)/%)
|
||||
INSTALL_CONFIGS = $(CONFIGS:%= $(INSTALL_CONFIG)/%)
|
||||
|
||||
MAN_DIRECTORY_TARGETS = $(foreach n, $(MANLIST),$(INSTALL_MAN)/man$(n))
|
||||
|
||||
DIRECTORY_TARGETS = $(INSTALL_INCLUDE) $(INSTALL_INCLUDE)/os \
|
||||
$(INSTALL_OSINCLUDE) $(INSTALL_DOC) \
|
||||
$(INSTALL_LOCATION_BIN) $(INSTALL_BIN) $(INSTALL_LIB) \
|
||||
$(INSTALL_LOCATION_LIB) $(INSTALL_CONFIG) \
|
||||
$(MAN_DIRECTORY_TARGETS) $(INSTALL_MAN) \
|
||||
$(INSTALL_TEMPLATES)
|
||||
|
||||
ifdef TEMPLATES_DIR
|
||||
DIRECTORY_TARGETS += $(INSTALL_TEMPLATES)/$(TEMPLATES_DIR)
|
||||
endif
|
||||
|
||||
|
||||
# Main target
|
||||
#
|
||||
all:: install
|
||||
|
||||
build:: $(LIBNAME) $(DLLNAME) \
|
||||
$(INSTALL_LOCATION_LIB) $(INSTALL_LIB)\
|
||||
$(INSTALL_LIBS) $(INSTALL_DLLS) $(PROD) $(TESTPROD)
|
||||
|
||||
|
||||
inc:: $(INSTALL_INCLUDE) $(INSTALL_INC) \
|
||||
$(INSTALL_INCLUDE)/os $(INSTALL_OSINCLUDE) $(INSTALL_OSINC)
|
||||
|
||||
rebuild:: clean install
|
||||
|
||||
install:: inc buildInstall
|
||||
|
||||
buildInstall :: build $(TARGETS) $(INSTALL_LOCATION_BIN) \
|
||||
$(INSTALL_BIN) $(INSTALL_SCRIPTS) $(INSTALL_PROD) \
|
||||
$(INSTALL_MAN) $(INSTALL_MANS) \
|
||||
$(INSTALL_DOC) $(INSTALL_DOCS) \
|
||||
$(INSTALL_TEMPLATES) $(INSTALL_TEMPLATES_SUBDIR) $(INSTALL_TEMPLATE) \
|
||||
$(INSTALL_CONFIG) $(INSTALL_CONFIGS)
|
||||
|
||||
depends:: $(LIBSRCS) $(SRCS)
|
||||
$(RM) .DEPENDS
|
||||
touch .DEPENDS
|
||||
ifdef $(SRCS.c)
|
||||
$(DEPENDS_RULE.c)
|
||||
endif
|
||||
ifdef $(SRCS.cc)
|
||||
$(DEPENDS_RULE.cc)
|
||||
endif
|
||||
|
||||
|
||||
clean::
|
||||
@echo "Cleaning"
|
||||
@$(RM) *.i *$(OBJ) *.a $(PROD) $(TESTPROD) $(LIBNAME) $(INC)
|
||||
|
||||
$(DIRECTORY_TARGETS) :
|
||||
$(MKDIR) $@
|
||||
|
||||
# The order of the following dependencies is
|
||||
# VERY IMPORTANT !!!!
|
||||
|
||||
# If you want to break this on WIN32, please forget
|
||||
# that $(COMPILE.cc) is like $(COMPILE.c) for WIN32
|
||||
# except the first one ends in -Tp to select 'C++'.
|
||||
#
|
||||
# EPICS uses .cc for C++, which is not recognized
|
||||
# by MS Visual C++, so -Tp has to be directly in front of
|
||||
# the source file.
|
||||
# -> put the source file directly after $(COMPILE.cc),
|
||||
|
||||
# explicit list of source files given for PROD ?
|
||||
# (otherwise implicit rules .c -> $(EXE), .cc -> $(EXE)
|
||||
ifdef SRCS
|
||||
|
||||
ifeq ($(findstring cc,$(suffix $(SRCS))),cc)
|
||||
PROD_LINKER = $(LINK.cc)
|
||||
else
|
||||
PROD_LINKER = $(LINK.c)
|
||||
endif
|
||||
|
||||
PROD_OBJS=$(addsuffix $(OBJ), $(basename $(SRCS)))
|
||||
|
||||
$(PROD): $(PROD_OBJS) $(PRODDEPLIBS)
|
||||
@$(RM) $@
|
||||
$(PROD_LINKER) $(PROD_OBJS) $(LDLIBS)
|
||||
endif
|
||||
|
||||
# explicit list of source files given for TESTPROD ?
|
||||
# (otherwise implicit rule .c -> $(OBJ) -> $(EXE)
|
||||
ifdef TESTPROD_SRCS
|
||||
|
||||
ifeq ($(findstring cc,$(suffix $(TESTPROD_SRCS))),cc)
|
||||
TESTPROD_LINKER = $(LINK.cc)
|
||||
else
|
||||
TESTPROD_LINKER = $(LINK.c)
|
||||
endif
|
||||
|
||||
TESTPROD_OBJS=$(addsuffix $(OBJ), $(basename $(TESTPROD_SRCS)))
|
||||
|
||||
$(TESTPROD): $(TESTPROD_OBJS) $(PRODDEPLIBS)
|
||||
@$(RM) $@
|
||||
$(TESTPROD_LINKER) $(TESTPROD_OBJS) $(LDLIBS)
|
||||
endif
|
||||
|
||||
# Generic Rules for 'simple' targets that
|
||||
# can be generated from a single source with same basename.
|
||||
#
|
||||
# The usual two rules .c* -> $(OBJ) and then $(OBJ) -> $(EXE)
|
||||
# do not work because the $(OBJ)->$(EXE) rule wouldn't
|
||||
# know if the original source was C or C++.
|
||||
#
|
||||
# Hint: The $(subst...) construct removes the .c or .cc
|
||||
# as well as the '../' from the filename and adds $(OBJ):
|
||||
# e.g. $< = '../abc.c' -> 'abc.o'
|
||||
%$(EXE): %.c $(PRODDEPLIBS)
|
||||
@$(RM) $@
|
||||
$(COMPILE.c) $<
|
||||
$(LINK.c) $(subst ../,,$(basename $<))$(OBJ) $(LDLIBS)
|
||||
|
||||
%$(EXE): %.cc $(PRODDEPLIBS)
|
||||
@$(RM) $@
|
||||
$(COMPILE.cc) $<
|
||||
$(LINK.cc) $(subst ../,,$(basename $<))$(OBJ) $(LDLIBS)
|
||||
|
||||
%$(OBJ): %.c
|
||||
@$(RM) $@
|
||||
$(COMPILE.c) $<
|
||||
|
||||
%$(OBJ): %.cc
|
||||
@$(RM) $@
|
||||
$(COMPILE.cc) $<
|
||||
|
||||
%.c %.h: ../%.y
|
||||
@$(RM) y.tab.c y.tab.h
|
||||
$(YACC) $(YACCOPT) $<
|
||||
@if [ -f y.tab.c ]; \
|
||||
then \
|
||||
echo "$(MV) y.tab.c $*.c"; \
|
||||
$(RM) $*.c; \
|
||||
$(MV) y.tab.c $*.c; \
|
||||
fi
|
||||
@if [ -f y.tab.h ]; \
|
||||
then \
|
||||
echo "$(MV) y.tab.h $*.h"; \
|
||||
$(RM) $*.h; \
|
||||
$(MV) y.tab.h $*.h; \
|
||||
fi
|
||||
|
||||
%.c: ../%.l
|
||||
@$(RM) lex.yy.c
|
||||
$(LEX) $(LEXOPT) $<
|
||||
@$(RM) $@
|
||||
$(MV) lex.yy.c $@
|
||||
|
||||
#state notation language rule
|
||||
%.c: ../%.st
|
||||
@echo "preprocessing $*.st"
|
||||
@$(RM) $*.i
|
||||
$(CPP) $(CPPFLAGS) $< $*.i
|
||||
@echo "converting $*.i"
|
||||
@$(RM) $@
|
||||
$(SNC) $(TARGET_SNCFLAGS) $(SNCFLAGS) $*.i
|
||||
|
||||
%.c: %.stt
|
||||
@echo "converting $<"
|
||||
@$(RM) $@
|
||||
$(SNC) $(TARGET_SNCFLAGS) $(SNCFLAGS) $<
|
||||
|
||||
# Capfast Rules:
|
||||
%.db: %.edf
|
||||
$(E2DB) $(E2SR_SYSFLAGS) $(E2SR_FLAGS) $<
|
||||
|
||||
%.db: ../%.edf
|
||||
$(E2DB) $(E2SR_SYSFLAGS) $(E2SR_FLAGS) $<
|
||||
|
||||
%.edf: ../%.sch $(DEPSCHS)
|
||||
@if [ ! -f cad.rc -a -r ../cad.rc ] ; then ln -s ../cad.rc ; fi
|
||||
$(SCH2EDIF) $(SCH2EDIF_SYSFLAGS) $(SCH2EDIF_FLAGS) $<
|
||||
|
||||
# Mangen Rule:
|
||||
%.1:%
|
||||
$(RM) $(<F)
|
||||
$(RM) $(<F).nr
|
||||
ln -s $<
|
||||
$(MANGEN) -s $(<F)
|
||||
$(MV) $(<F).nr $(<F).1
|
||||
|
||||
# Mangen Rule:
|
||||
%.1:../%
|
||||
$(RM) $(<F)
|
||||
$(RM) $(<F).nr
|
||||
ln -s $<
|
||||
$(MANGEN) -s $(<F)
|
||||
$(MV) $(<F).nr $(<F).1
|
||||
|
||||
# Rules for building LIBRARY with LIBSRCS
|
||||
# (which are now LIBNAME, LIBOBJS)
|
||||
#
|
||||
ifdef WIN32
|
||||
|
||||
ifeq ($(LIBTYPE),SHARED)
|
||||
# A WIN32 dll has tree parts:
|
||||
# x.dll: the real dll (DLLNAME)
|
||||
# x.lib: what you link to progs that use the dll (LIBNAME)
|
||||
# x.exp: what you need to build the dll (in no variable)
|
||||
#
|
||||
# the latter two are created automatically when building the dll:
|
||||
$(LIBNAME): $(DLLNAME)
|
||||
|
||||
# test if there is a def file for this dll:
|
||||
#
|
||||
DLL_DEF_FILE := ../$(LIBRARY).def
|
||||
|
||||
ifeq ($(DLL_DEF_FILE), $(wildcard $(DLL_DEF_FILE)))
|
||||
DLL_DEF := -def:$(DLL_DEF_FILE)
|
||||
endif
|
||||
|
||||
# HOST_OPT_FLAGS is part of CFLAGS/CXXFLAGS,
|
||||
# which in turn are used in COMPILE.c[c]
|
||||
#
|
||||
# If we compile a .c, .cc into an $(OBJ),
|
||||
# we test if this object is part of the
|
||||
# library objects LIBOBJS.
|
||||
# If so, we define _WINDLL so that
|
||||
# e.g. include/shareLib.h works correctly.
|
||||
#
|
||||
HOST_OPT_FLAGS += $(subst $@, -D_WINDLL, $(findstring $@,$(LIBOBJS)))
|
||||
|
||||
$(DLLNAME): $(LIBOBJS)
|
||||
link $(WIN32_DLLFLAGS)\
|
||||
-implib:$(LIBNAME) -out:$(DLLNAME) $(DLL_DEF)\
|
||||
$(DLL_DEP_LIBS) $(ARCH_DEP_LDLIBS) $(HOST_LDLIBS) $(LIBOBJS)
|
||||
else
|
||||
# still on WIN32, this time no DLL but plain lib requested:
|
||||
$(LIBNAME): $(LIBOBJS)
|
||||
lib -nologo -verbose -out:$(LIBNAME) $(LIBOBJS)
|
||||
lib -nologo -list $(LIBNAME)
|
||||
|
||||
endif # LIBTYPE is SHARED ?
|
||||
|
||||
else # not WIN32
|
||||
|
||||
# usual Unix rule for lib creation
|
||||
$(LIBNAME): $(LIBOBJS)
|
||||
$(RM) $@
|
||||
$(ARCMD) $@ $(LIBOBJS)
|
||||
@if [ ! -z "$(RANLIB)" ] ; then\
|
||||
echo $(RANLIB) $@; \
|
||||
$(RANLIB) $@; \
|
||||
fi
|
||||
endif # ifdef WIN32
|
||||
# end of library creation rules
|
||||
|
||||
|
||||
$(INSTALL_BIN)/%: ../os/$(ARCH_CLASS)/%
|
||||
@echo "Installing os-specific script $@"
|
||||
@$(INSTALL_PRODUCT) -m 555 $< $(INSTALL_BIN)
|
||||
|
||||
$(INSTALL_BIN)/%: %
|
||||
@echo "Installing binary $@"
|
||||
@$(INSTALL_PRODUCT) -m 555 $< $(INSTALL_BIN)
|
||||
|
||||
$(INSTALL_BIN)/%: ../%
|
||||
@echo "Installing script $@"
|
||||
@$(INSTALL_PRODUCT) -m 555 $< $(INSTALL_BIN)
|
||||
|
||||
$(INSTALL_LIB)/%.a: %.a
|
||||
@echo "Installing library $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_LIB)
|
||||
@if [ ! -z "$(RANLIB)" ] ; then\
|
||||
$(RANLIB) $(RANLIBFLAGS) $@; \
|
||||
fi
|
||||
|
||||
$(INSTALL_LIB)/%.lib: %.lib
|
||||
@echo "Installing library $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_LIB)
|
||||
|
||||
$(INSTALL_CONFIG)/%: %
|
||||
@echo "Installing config file $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_CONFIG)
|
||||
|
||||
$(INSTALL_CONFIG)/%: ../%
|
||||
@echo "Installing config file $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_CONFIG)
|
||||
|
||||
$(addsuffix /%,$(MAN_DIRECTORY_TARGETS)) : %
|
||||
@echo "Installing man file $@"
|
||||
@$(INSTALL) -m 644 $< $(@D)
|
||||
|
||||
$(addsuffix /%,$(MAN_DIRECTORY_TARGETS)) : ../%
|
||||
@echo "Installing man file $@"
|
||||
@$(INSTALL) -m 644 $< $(@D)
|
||||
|
||||
$(INSTALL_INCLUDE)/%: %
|
||||
@echo "Installing include file $@"
|
||||
@$(INSTALL) -m 644 $< $(@D)
|
||||
|
||||
$(INSTALL_INCLUDE)/%: ../%
|
||||
@echo "Installing include file $@"
|
||||
@$(INSTALL) -m 644 $< $(@D)
|
||||
|
||||
$(INSTALL_DOC)/%: %
|
||||
@echo "Installing doc $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_DOC)
|
||||
|
||||
$(INSTALL_DOC)/%: ../%
|
||||
@echo "Installing doc $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_DOC)
|
||||
|
||||
$(INSTALL_TEMPLATES)/$(TEMPLATES_DIR)/%: ../%
|
||||
@echo "Installing $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_TEMPLATES)/$(TEMPLATES_DIR)
|
||||
|
||||
$(INSTALL_TEMPLATES)/$(TEMPLATES_DIR)/%: %
|
||||
@echo "Installing $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_TEMPLATES)/$(TEMPLATES_DIR)
|
||||
|
||||
.PRECIOUS: %.o %.c
|
||||
|
||||
-include .DEPENDS
|
||||
|
||||
.PHONY:: all inc depends build install clean rebuild buildInstall
|
||||
|
||||
# EOF RULES.Host
|
||||
227
config/RULES.Unix
Normal file
227
config/RULES.Unix
Normal file
@@ -0,0 +1,227 @@
|
||||
# $Id$
|
||||
|
||||
INSTALL_PROD = $(PROD:%= $(INSTALL_BIN)/%)
|
||||
INSTALL_LIBS = $(LIBNAME:%= $(INSTALL_LIB)/%)
|
||||
INSTALL_INC = $(INC:%= $(INSTALL_INCLUDE)/%)
|
||||
INSTALL_OSINCLUDE = $(INSTALL_INCLUDE)/os/$(T_A)
|
||||
INSTALL_OSINC = $(OSINC:%= $(INSTALL_OSINCLUDE)/%)
|
||||
MANLIST = 1 2 3 4 5 6 7 8 9
|
||||
INSTALL_MANS = $(foreach n, \
|
||||
$(MANLIST),$(INSTALL_MAN)/man$(n) $(MAN$(n):%= $(INSTALL_MAN)/man$(n)/%))
|
||||
INSTALL_DOCS = $(DOCS:%= $(INSTALL_DOC)/%)
|
||||
INSTALL_SCRIPTS = $(SCRIPTS:%= $(INSTALL_BIN)/%)
|
||||
INSTALL_TEMPLATES_SUBDIR = $(INSTALL_TEMPLATES)/$(TEMPLATES_DIR)
|
||||
INSTALL_TEMPLATE = $(TEMPLATES:%= $(INSTALL_TEMPLATES_SUBDIR)/%)
|
||||
INSTALL_CONFIGS = $(CONFIGS:%= $(INSTALL_CONFIG)/%)
|
||||
|
||||
MAN_DIRECTORY_TARGETS = $(foreach n, $(MANLIST),$(INSTALL_MAN)/man$(n))
|
||||
|
||||
DIRECTORY_TARGETS = $(INSTALL_INCLUDE) $(INSTALL_INCLUDE)/os \
|
||||
$(INSTALL_OSINCLUDE) $(INSTALL_DOC) \
|
||||
$(INSTALL_TEMPLATES)/$(TEMPLATES_DIR) $(INSTALL_TEMPLATES) \
|
||||
$(INSTALL_LOCATION_BIN) $(INSTALL_BIN) $(INSTALL_LIB) \
|
||||
$(INSTALL_LOCATION_LIB) $(INSTALL_CONFIG) \
|
||||
$(MAN_DIRECTORY_TARGETS) $(INSTALL_MAN)
|
||||
|
||||
all:: install
|
||||
|
||||
pre_build::
|
||||
|
||||
rebuild:: clean install
|
||||
|
||||
build:: pre_build $(LIBNAME) $(TARGETS) $(PROD)
|
||||
|
||||
inc:: $(INSTALL_INCLUDE) $(INSTALL_INC) $(INSTALL_INCLUDE)/os \
|
||||
$(INSTALL_OSINCLUDE) $(INSTALL_OSINC)
|
||||
|
||||
install:: inc buildInstall
|
||||
|
||||
buildInstall :: build \
|
||||
$(INSTALL_LOCATION_LIB) $(INSTALL_LIB) $(INSTALL_LIBS) \
|
||||
$(TARGETS) \
|
||||
$(INSTALL_LOCATION_BIN) $(INSTALL_BIN) \
|
||||
$(INSTALL_SCRIPTS) $(INSTALL_PROD) \
|
||||
$(INSTALL_MAN) $(INSTALL_MANS) \
|
||||
$(INSTALL_DOC) $(INSTALL_DOCS) $(INSTALL_TEMPLATES) \
|
||||
$(INSTALL_TEMPLATES)/$(TEMPLATES_DIR) $(INSTALL_TEMPLATE) \
|
||||
$(INSTALL_CONFIG) $(INSTALL_CONFIGS)
|
||||
|
||||
depends:: $(SRCS.c) $(SRCS.cc)
|
||||
ifdef SRCS
|
||||
echo you have a SRCS in your Makefile
|
||||
exit 2
|
||||
endif
|
||||
ifdef SRCS.c
|
||||
$(DEPENDS_RULE.c)
|
||||
endif
|
||||
ifdef SRCS.cc
|
||||
$(DEPENDS_RULE.cc)
|
||||
endif
|
||||
|
||||
clean::
|
||||
@echo "Cleaning"
|
||||
@$(RM) *.i *.o *.a $(TARGETS) $(PROD) $(LIBNAME) $(INC)
|
||||
|
||||
$(DIRECTORY_TARGETS) :
|
||||
@$(MKDIR) $@
|
||||
|
||||
$(TARGETS) $(PROD): $(DEPLIBS)
|
||||
|
||||
# The order of the following dependencies is
|
||||
# VERY IMPORTANT !!!!
|
||||
|
||||
%: %.o
|
||||
$(RM) $@
|
||||
$(LINK.c) -o $@ $< $(LDLIBS)
|
||||
|
||||
#$(PROD): $(OBJS)
|
||||
# $(RM) $@
|
||||
# $(LINK.c) -o $@ ${OBJS} $(LDLIBS)
|
||||
|
||||
%.o: %.c
|
||||
$(RM) $@
|
||||
$(COMPILE.c) $<
|
||||
|
||||
%.o: ../%.c
|
||||
$(RM) $@
|
||||
$(COMPILE.c) $<
|
||||
|
||||
%.o: %.cc
|
||||
$(RM) $@
|
||||
$(COMPILE.cc) $<
|
||||
|
||||
%.o: ../%.cc
|
||||
$(RM) $@
|
||||
$(COMPILE.cc) $<
|
||||
|
||||
%.c: ../%.y
|
||||
$(RM) y.tab.c y.tab.h
|
||||
$(YACC) $(YACCOPT) $<
|
||||
@if [ -f y.tab.c ]; \
|
||||
then \
|
||||
echo "$(MV) y.tab.c $*.c"; \
|
||||
$(MV) y.tab.c $*.c; \
|
||||
fi
|
||||
@if [ -f y.tab.h ]; \
|
||||
then \
|
||||
echo "$(MV) y.tab.h $*.h"; \
|
||||
$(MV) y.tab.h $*.h; \
|
||||
fi
|
||||
|
||||
%.c: ../%.l
|
||||
$(RM) lex.yy.c
|
||||
$(LEX) $(LEXOPT) $<
|
||||
$(RM) $@
|
||||
$(MV) lex.yy.c $@
|
||||
|
||||
#state notation language rule
|
||||
%.c: ../%.st
|
||||
@echo "preprocessing $*.st"
|
||||
@$(RM) $*.i
|
||||
$(CPP) $(CPPFLAGS) $< $*.i
|
||||
@echo "converting $*.i"
|
||||
@$(RM) $@
|
||||
$(SNC) $(TARGET_SNCFLAGS) $(SNCFLAGS) $*.i
|
||||
|
||||
%.c: %.stt
|
||||
@echo "converting $<
|
||||
@$(RM) $@
|
||||
$(SNC) $(TARGET_SNCFLAGS) $(SNCFLAGS) $<
|
||||
|
||||
# Capfast Rules:
|
||||
%.db: %.edf
|
||||
$(E2DB) $(E2SR_SYSFLAGS) $(E2SR_FLAGS) $<
|
||||
|
||||
%.db: ../%.edf
|
||||
$(E2DB) $(E2SR_SYSFLAGS) $(E2SR_FLAGS) $<
|
||||
|
||||
%.edf: ../%.sch $(DEPSCHS)
|
||||
@if [ ! -f cad.rc -a -r ../cad.rc ] ; then ln -s ../cad.rc ; fi
|
||||
$(SCH2EDIF) $(SCH2EDIF_SYSFLAGS) $(SCH2EDIF_FLAGS) $<
|
||||
|
||||
# Mangen Rule:
|
||||
%.1:%
|
||||
$(RM) $(<F)
|
||||
$(RM) $(<F).nr
|
||||
ln -s $<
|
||||
$(MANGEN) -s $(<F)
|
||||
$(MV) $(<F).nr $(<F).1
|
||||
|
||||
# Mangen Rule:
|
||||
%.1:../%
|
||||
$(RM) $(<F)
|
||||
$(RM) $(<F).nr
|
||||
ln -s $<
|
||||
$(MANGEN) -s $(<F)
|
||||
$(MV) $(<F).nr $(<F).1
|
||||
|
||||
$(LIBNAME): $(LIBOBJS)
|
||||
@echo Building library $@
|
||||
$(RM) $@
|
||||
$(ARCMD) $@ $(LIBOBJS)
|
||||
@if [ ! -z "$(RANLIB)" ] ; then\
|
||||
echo $(RANLIB) $@; \
|
||||
$(RANLIB) $@; \
|
||||
fi
|
||||
|
||||
$(INSTALL_BIN)/%: %
|
||||
@echo "Installing Binary $@"
|
||||
@$(INSTALL_PRODUCT) -m 555 $< $(INSTALL_BIN)
|
||||
|
||||
$(INSTALL_BIN)/%: ../%
|
||||
@echo "Installing Binary $@"
|
||||
@$(INSTALL_PRODUCT) -m 555 $< $(INSTALL_BIN)
|
||||
|
||||
$(INSTALL_LIB)/%.a: %.a
|
||||
@echo "Installing library $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_LIB)
|
||||
@if [ ! -z "$(RANLIB)" ] ; then\
|
||||
$(RANLIB) $(RANLIBFLAGS) $@; \
|
||||
fi
|
||||
|
||||
$(INSTALL_CONFIG)/%: %
|
||||
@echo "Installing Config File $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_CONFIG)
|
||||
|
||||
$(INSTALL_CONFIG)/%: ../%
|
||||
@echo "Installing Config File $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_CONFIG)
|
||||
|
||||
$(addsuffix /%,$(MAN_DIRECTORY_TARGETS)) : %
|
||||
@echo "Installing man file $@"
|
||||
@$(INSTALL) -m 644 $< $(@D)
|
||||
|
||||
$(addsuffix /%,$(MAN_DIRECTORY_TARGETS)) : ../%
|
||||
@echo "Installing man file $@"
|
||||
@$(INSTALL) -m 644 $< $(@D)
|
||||
|
||||
$(INSTALL_INCLUDE)/%: %
|
||||
@echo "Installing Include File $@"
|
||||
@$(INSTALL) -m 644 $< $(@D)
|
||||
|
||||
$(INSTALL_INCLUDE)/%: ../%
|
||||
@echo "Installing Include File $@"
|
||||
@$(INSTALL) -m 644 $< $(@D)
|
||||
|
||||
$(INSTALL_DOC)/%: %
|
||||
@echo "Installing doc $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_DOC)
|
||||
|
||||
$(INSTALL_DOC)/%: ../%
|
||||
@echo "Installing doc $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_DOC)
|
||||
|
||||
$(INSTALL_TEMPLATES)/$(TEMPLATES_DIR)/%: ../%
|
||||
@echo "Installing template $@"
|
||||
@$(INSTALL) -d -m 644 $< $(INSTALL_TEMPLATES)/$(TEMPLATES_DIR)
|
||||
|
||||
$(INSTALL_TEMPLATES)/$(TEMPLATES_DIR)/%: %
|
||||
@echo "Installing template $@"
|
||||
@$(INSTALL) -d -m 644 $< $(INSTALL_TEMPLATES)/$(TEMPLATES_DIR)
|
||||
|
||||
.PRECIOUS: %.o %.c
|
||||
|
||||
.PHONY:: all inc depends build install pre-build clean rebuild
|
||||
|
||||
-include .DEPENDS
|
||||
|
||||
266
config/RULES.Vx
Normal file
266
config/RULES.Vx
Normal file
@@ -0,0 +1,266 @@
|
||||
# $Id$
|
||||
|
||||
INCREC +=$(RECTYPES) $(MENUS)
|
||||
INSTALL_PROD = $(PROD:%= $(INSTALL_BIN)/%)
|
||||
INSTALL_LIBS = $(LIBNAME:%= $(INSTALL_BIN)/%)
|
||||
INSTALL_LIBS_CXX = $(LIBNAME_CXX:%= $(INSTALL_BIN)/%)
|
||||
INSTALL_INC = $(INC:%= $(INSTALL_INCLUDE)/%)
|
||||
INSTALL_OSINCLUDE = $(INSTALL_INCLUDE)/os/vxWorks
|
||||
INSTALL_OSINC = $(OSINC:%= $(INSTALL_OSINCLUDE)/%)
|
||||
INSTALL_INCREC = $(INCREC:%= $(INSTALL_INCLUDE)/%)
|
||||
MANLIST = 1 2 3 4 5 6 7 8 9
|
||||
INSTALL_MANS = $(foreach n, \
|
||||
$(MANLIST),$(INSTALL_MAN)/man$(n) $(MAN$(n):%= $(INSTALL_MAN)/man$(n)/%))
|
||||
INSTALL_DOCS = $(DOCS:%= $(INSTALL_DOC)/%)
|
||||
INSTALL_SCRIPTS = $(SCRIPTS:%= $(INSTALL_BIN)/%)
|
||||
INSTALL_INSTALLS = $(INSTALLS:%= $(INSTALL_BIN)/%)
|
||||
|
||||
INSTALL_BPTS = $(BPTS:%= $(INSTALL_DBD)/%)
|
||||
INSTALL_DBS = $(DBDINSTALL:%= $(INSTALL_DBD)/%)\
|
||||
$(RECTYPES:%.h= $(INSTALL_DBD)/%.dbd)\
|
||||
$(MENUS:%.h= $(INSTALL_DBD)/%.dbd)
|
||||
|
||||
INSTALL_DBDNAME = $(DBDNAME:%= $(INSTALL_DBD)/%)
|
||||
|
||||
MAN_DIRECTORY_TARGETS = $(foreach n, $(MANLIST),$(INSTALL_MAN)/man$(n))
|
||||
|
||||
DIRECTORY_TARGETS = $(INSTALL_INCLUDE) $(INSTALL_DOC) $(INSTALL_DBD) \
|
||||
$(INSTALL_OSINCLUDE) $(INSTALL_INCLUDE)/os \
|
||||
$(INSTALL_LOCATION_BIN) $(INSTALL_BIN) \
|
||||
$(MAN_DIRECTORY_TARGETS) $(INSTALL_MAN)
|
||||
|
||||
all:: install
|
||||
|
||||
rebuild:: clean install
|
||||
|
||||
pre_build::
|
||||
|
||||
build:: pre_build $(MENUS) $(RECTYPES) $(BPTS)\
|
||||
$(LIBNAME) $(LIBNAME_CXX) $(TARGETS) $(PROD) $(DBDNAME)
|
||||
|
||||
inc:: $(INSTALL_INCLUDE) $(INSTALL_INC) $(INSTALL_INCLUDE)/os \
|
||||
$(INSTALL_OSINCLUDE) $(INSTALL_OSINC)
|
||||
|
||||
install:: inc buildInstall
|
||||
|
||||
buildInstall :: build $(INSTALL_INCREC)\
|
||||
$(INSTALL_LOCATION_BIN) \
|
||||
$(INSTALL_BIN) $(INSTALL_LIBS) $(INSTALL_LIBS_CXX) \
|
||||
$(TARGETS) $(INSTALL_PROD) \
|
||||
$(INSTALL_MAN) $(INSTALL_MANS)\
|
||||
$(INSTALL_DOC) $(INSTALL_DOCS) \
|
||||
$(INSTALL_SCRIPTS) $(INSTALL_INSTALLS)\
|
||||
$(INSTALL_DBD) $(INSTALL_DBS) $(INSTALL_BPTS) \
|
||||
$(INSTALL_DBDNAME)
|
||||
|
||||
ifdef BIN_INSTALLS
|
||||
buildInstall :: binInstalls
|
||||
endif
|
||||
|
||||
depends:: $(SRCS.c) $(SRCS.cc)
|
||||
ifdef SRCS
|
||||
echo you have a SRCS in your Makefile
|
||||
exit 2
|
||||
endif
|
||||
ifdef SRCS.c
|
||||
$(DEPENDS_RULE.c)
|
||||
endif
|
||||
ifdef SRCS.cc
|
||||
$(DEPENDS_RULE.cc)
|
||||
endif
|
||||
|
||||
clean::
|
||||
@echo "Cleaning"
|
||||
@$(RM) *.i *.o *.a $(TARGETS) $(PROD) $(LIBNAME) $(INC) \
|
||||
$(DBDINSTALL) $(MENUS) $(RECTYPES) $(BPTS) $(DBDNAME)
|
||||
|
||||
$(DIRECTORY_TARGETS) :
|
||||
@$(MKDIR) $@
|
||||
|
||||
# The order of the following dependencies is
|
||||
# VERY IMPORTANT !!!!
|
||||
|
||||
%: %.o
|
||||
$(RM) $@
|
||||
$(LINK.c) $@ $< $(LDLIBS)
|
||||
|
||||
#$(PROD): $(OBJS)
|
||||
# $(RM) $@
|
||||
# $(LINK.c) $@ $(OBJS)
|
||||
|
||||
%.o: %.c
|
||||
$(RM) $@
|
||||
$(COMPILE.c) $<
|
||||
|
||||
%.o: ../%.c
|
||||
$(RM) $@
|
||||
$(COMPILE.c) $<
|
||||
|
||||
%.o: %.cc
|
||||
$(RM) $@
|
||||
$(COMPILE.cc) $<
|
||||
|
||||
%.o: ../%.cc
|
||||
$(RM) $@
|
||||
$(COMPILE.cc) $<
|
||||
|
||||
%.c: ../%.y
|
||||
$(RM) y.tab.c y.tab.h
|
||||
$(YACC) $(YACCOPT) $<
|
||||
@if [ -f y.tab.c ]; \
|
||||
then \
|
||||
echo "$(MV) y.tab.c $*.c"; \
|
||||
$(MV) y.tab.c $*.c; \
|
||||
fi
|
||||
@if [ -f y.tab.h ]; \
|
||||
then \
|
||||
echo "$(MV) y.tab.h $*.h"; \
|
||||
$(MV) y.tab.h $*.h; \
|
||||
fi
|
||||
|
||||
%.c: ../%.l
|
||||
$(RM) lex.yy.c
|
||||
$(LEX) $(LEXOPT) $<
|
||||
$(RM) $@
|
||||
$(MV) lex.yy.c $@
|
||||
|
||||
#state notation language rules
|
||||
%.c: ../%.st
|
||||
@echo "preprocessing $*.st"
|
||||
@$(RM) $*.i
|
||||
$(CPP) $(CPPFLAGS) $< $*.i
|
||||
@echo "converting $*.i"
|
||||
@$(RM) $@
|
||||
$(SNC) $(TARGET_SNCFLAGS) $(SNCFLAGS) $*.i
|
||||
|
||||
%.c: %.stt
|
||||
@echo "converting $<
|
||||
@$(RM) $@
|
||||
$(SNC) $(TARGET_SNCFLAGS) $(SNCFLAGS) $<
|
||||
|
||||
# Capfast Rules:
|
||||
%.db: %.edf
|
||||
$(E2DB) $(E2SR_SYSFLAGS) $(E2SR_FLAGS) $<
|
||||
|
||||
%.db: ../%.edf
|
||||
$(E2DB) $(E2SR_SYSFLAGS) $(E2SR_FLAGS) $<
|
||||
|
||||
%.edf: ../%.sch $(DEPSCHS)
|
||||
@if [ ! -f cad.rc -a -r ../cad.rc ] ; then ln -s ../cad.rc ; fi
|
||||
$(SCH2EDIF) $(SCH2EDIF_SYSFLAGS) $(SCH2EDIF_FLAGS) $<
|
||||
|
||||
# Mangen Rule:
|
||||
%.1:%
|
||||
$(RM) $(<F)
|
||||
$(RM) $(<F).nr
|
||||
ln -s $<
|
||||
$(MANGEN) -s $(<F)
|
||||
$(MV) $(<F).nr $(<F).1
|
||||
|
||||
binInstalls: $(BIN_INSTALLS)
|
||||
$(INSTALL) -m 555 $^ $(INSTALL_BIN)
|
||||
|
||||
$(INSTALL_DBD)/%: %
|
||||
@echo "Installing $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_DBD)
|
||||
|
||||
$(INSTALL_DBD)/%: ../%
|
||||
@echo "Installing $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_DBD)
|
||||
|
||||
%Record.h: %Record.dbd
|
||||
$(RM) $@
|
||||
$(EPICS_BASE)/bin/$(HOST_ARCH)/dbToRecordtypeH \
|
||||
$(USER_DBDFLAGS) $<
|
||||
|
||||
%Record.h: ../%Record.dbd
|
||||
$(RM) $@
|
||||
$(EPICS_BASE)/bin/$(HOST_ARCH)/dbToRecordtypeH \
|
||||
$(USER_DBDFLAGS) $<
|
||||
|
||||
menu%.h: menu%.dbd
|
||||
$(RM) $@
|
||||
$(EPICS_BASE)/bin/$(HOST_ARCH)/dbToMenuH $<
|
||||
|
||||
menu%.h: ../menu%.dbd
|
||||
$(RM) $@
|
||||
$(EPICS_BASE)/bin/$(HOST_ARCH)/dbToMenuH $<
|
||||
|
||||
bpt%.dbd: bpt%.data
|
||||
$(RM) $@
|
||||
$(EPICS_BASE)/bin/$(HOST_ARCH)/makeBpt $<
|
||||
|
||||
bpt%.dbd: ../bpt%.data
|
||||
$(RM) $@
|
||||
$(EPICS_BASE)/bin/$(HOST_ARCH)/makeBpt $<
|
||||
|
||||
$(DBDNAME): ../$(DBDEXPAND)
|
||||
@echo expanding dbd
|
||||
@$(RM) $@
|
||||
$(EPICS_BASE)/bin/$(HOST_ARCH)/dbExpand\
|
||||
$(USER_DBDFLAGS) $< > $@
|
||||
|
||||
$(LIBNAME): $(LIBOBJS)
|
||||
@echo Building library $@
|
||||
@$(RM) $@
|
||||
$(LINK.c) $@ $(LIBOBJS) $(LDLIBS)
|
||||
|
||||
$(LIBNAME_CXX): $(LIBOBJS_CXX)
|
||||
@echo Building CXX library $@
|
||||
@$(RM) $@
|
||||
$(LINK.cc) $@ $(LIBOBJS_CXX) $(CXXLDLIBS)
|
||||
|
||||
$(INSTALL_BIN)/%: %
|
||||
@echo "Installing $@"
|
||||
@$(INSTALL) -m 555 $< $(INSTALL_BIN)
|
||||
|
||||
$(INSTALL_BIN)/%: ../%
|
||||
@echo "Installing $@"
|
||||
@$(INSTALL) -m 555 $< $(INSTALL_BIN)
|
||||
|
||||
#
|
||||
# avoid confusing circular dependency message when
|
||||
# INSTALL_BIN and EPICS_BASE_BIN are the same (in base)
|
||||
#
|
||||
ifneq ($(INSTALL_BIN),$(EPICS_BASE_BIN))
|
||||
$(INSTALL_BIN)/%: $(EPICS_BASE_BIN)/%
|
||||
@echo "Installing $@"
|
||||
@$(INSTALL) -m 555 $< $(INSTALL_BIN)
|
||||
endif
|
||||
|
||||
$(addsuffix /%,$(MAN_DIRECTORY_TARGETS)) : %
|
||||
@echo "Installing $@"
|
||||
@$(INSTALL) -m 644 $< $(@D)
|
||||
|
||||
$(addsuffix /%,$(MAN_DIRECTORY_TARGETS)) : ../%
|
||||
@echo "Installing $@"
|
||||
@$(INSTALL) -m 644 $< $(@D)
|
||||
|
||||
$(INSTALL_INCLUDE)/%: %
|
||||
@echo "Installing $@"
|
||||
@$(INSTALL) -m 644 $< $(@D)
|
||||
|
||||
$(INSTALL_INCLUDE)/%: ../%
|
||||
@echo "Installing $@"
|
||||
@$(INSTALL) -m 644 $< $(@D)
|
||||
|
||||
$(INSTALL_DOC)/%: %
|
||||
@echo "Installing $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_DOC)
|
||||
|
||||
$(INSTALL_DOC)/%: ../%
|
||||
@echo "Installing $@"
|
||||
@$(INSTALL) -m 644 $< $(INSTALL_DOC)
|
||||
|
||||
.PRECIOUS: %.o %.c
|
||||
|
||||
.PHONY:: all inc depends build install pre_build clean rebuild buildInstall binInstalls
|
||||
|
||||
-include .DEPENDS
|
||||
|
||||
ifneq (,$(wildcard ../baseLIBOBJS))
|
||||
$(LIBNAME): ../baseLIBOBJS
|
||||
endif
|
||||
$(LIBNAME): ../Makefile.Vx
|
||||
$(DBDNAME): ../base.dbd $(RECTYPES:%.h=../%.dbd)
|
||||
|
||||
56
config/RULES.ioc
Normal file
56
config/RULES.ioc
Normal file
@@ -0,0 +1,56 @@
|
||||
#RULES.ioc
|
||||
|
||||
ifndef WIN32
|
||||
APPDIR := $(shell grep '.*".*App/' st.* | sed -e 's/.*"\(.*App\).*/\1/' | sort -u )
|
||||
endif
|
||||
|
||||
ASCF = $(TOP)/../ascf
|
||||
TARGETBIN = $(TOP)/bin/$(ARCH)
|
||||
ARCHS = $(BUILD_ARCHS) host cross
|
||||
ACTIONS += clean inc depends buildInstall build
|
||||
actionArchTargets = $(foreach action, $(ACTIONS) install,\
|
||||
$(foreach arch, $(ARCHS), \
|
||||
$(action)$(DIVIDER)$(arch)))
|
||||
|
||||
all install :: inc buildInstall
|
||||
|
||||
buildInstall: makelinks
|
||||
|
||||
inc build depends:
|
||||
|
||||
makelinks:
|
||||
ifndef WIN32
|
||||
@$(RM) ascf bin vxWorks vxWorks.sym dbd share $(APPDIR)
|
||||
ln -s $(ASCF) ascf
|
||||
ln -s $(TARGETBIN) bin
|
||||
ln -s $(TARGETBIN)/vxWorks vxWorks
|
||||
ln -s $(TARGETBIN)/vxWorks.sym vxWorks.sym
|
||||
ln -s $(TOP)/dbd dbd
|
||||
ln -s $(SHARE) share
|
||||
@for dir in $(APPDIR) scum ; do \
|
||||
if [ $$dir = scum ]; then \
|
||||
: ; \
|
||||
elif [ -d $(TOP)/$$dir ]; then \
|
||||
ln -s $(TOP)/$$dir $$dir ; \
|
||||
echo "ln -s $(TOP)/$$dir $$dir" ; \
|
||||
elif [ -d $(MASTER_IOCAPPS)/$$dir ]; then \
|
||||
ln -s $(MASTER_IOCAPPS)/$$dir $$dir ; \
|
||||
echo "ln -s $(MASTER_IOCAPPS)/$$dir $$dir" ; \
|
||||
else \
|
||||
echo "$$dir not found" ; \
|
||||
fi ; \
|
||||
done
|
||||
endif
|
||||
|
||||
clean::
|
||||
@$(RM) ascf bin vxWorks vxWorks.sym dbd share $(APPDIR)
|
||||
|
||||
$(actionArchTargets) :%:
|
||||
$(MAKE) $(word 1, $(subst $(DIVIDER), ,$@))
|
||||
|
||||
$(ARCHS):%: install
|
||||
|
||||
.PHONY :: $(ARCHS) $(ACTIONS)
|
||||
.PHONY :: $(actionArchTargets)
|
||||
|
||||
|
||||
90
config/RULES_ARCHS
Normal file
90
config/RULES_ARCHS
Normal file
@@ -0,0 +1,90 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# EPICS RULES_ARCH
|
||||
# by Matthew Needes and Mike Bordua and Janet Andersoni and Jeff Hill
|
||||
#
|
||||
|
||||
all:: install
|
||||
|
||||
ACTIONS += inc
|
||||
ACTIONS += build
|
||||
ACTIONS += install
|
||||
ACTIONS += buildInstall
|
||||
ACTIONS += depends
|
||||
ACTIONS += rebuild
|
||||
|
||||
actionPart = $(word 1, $(subst $(DIVIDER), ,$@))
|
||||
archPart = $(word 2, $(subst $(DIVIDER), ,$@))
|
||||
|
||||
#
|
||||
# hostActionArchTargets
|
||||
#
|
||||
hostArchs = $(HOST_ARCH)
|
||||
hostActionArchTargets = $(foreach x, $(ACTIONS),\
|
||||
$(foreach arch,$(hostArchs), $(x)$(DIVIDER)$(arch)))
|
||||
ifeq (Makefile.$(BUILD_TYPE), $(wildcard Makefile.$(BUILD_TYPE)))
|
||||
hostDirs = $(addprefix O.,$(hostArchs))
|
||||
$(hostActionArchTargets) : $(hostDirs)
|
||||
$(MAKE) -C O.$(archPart) -f ../Makefile.$(BUILD_TYPE) T_A=$(archPart) $(actionPart)
|
||||
$(hostArchs) : % : O.%
|
||||
$(MAKE) -C O.$@ -f ../Makefile.$(BUILD_TYPE) T_A=$@
|
||||
else
|
||||
$(hostActionArchTargets) :
|
||||
$(hostArchs) :
|
||||
endif
|
||||
|
||||
#
|
||||
# crossActionArchTargets
|
||||
#
|
||||
crossArchs = $(filter-out $(hostArchs),$(BUILD_ARCHS))
|
||||
crossActionArchTargets = $(foreach x, $(ACTIONS), \
|
||||
$(foreach arch, $(CROSS_COMPILER_TARGET_ARCHS), $(x)$(DIVIDER)$(arch)))
|
||||
ifeq (Makefile.Vx, $(wildcard Makefile.Vx))
|
||||
crossDirs = $(addprefix O.,$(crossArchs))
|
||||
$(crossActionArchTargets) : $(crossDirs)
|
||||
$(MAKE) -C O.$(archPart) -f ../Makefile.Vx T_A=$(archPart) $(actionPart)
|
||||
$(crossArchs) : % : O.%
|
||||
$(MAKE) -C O.$@ -f ../Makefile.Vx T_A=$@
|
||||
else
|
||||
$(crossActionArchTargets) :
|
||||
$(crossArchs) :
|
||||
endif
|
||||
|
||||
$(hostDirs) :
|
||||
$(PERL) $(EPICS_BASE)/config/makeMakefile.pl $@ $(BUILD_TYPE)
|
||||
|
||||
$(crossDirs) :
|
||||
$(PERL) $(EPICS_BASE)/config/makeMakefile.pl $@ Vx
|
||||
|
||||
#
|
||||
# host/cross action targets
|
||||
#
|
||||
$(ACTIONS) : % : %$(DIVIDER)host %$(DIVIDER)cross
|
||||
HostActionTargets = $(foreach x, $(ACTIONS) clean, $(x)$(DIVIDER)host)
|
||||
CrossActionTargets = $(foreach x, $(ACTIONS) clean, $(x)$(DIVIDER)cross)
|
||||
$(HostActionTargets) : %$(DIVIDER)host : $(addprefix %$(DIVIDER), $(hostArchs))
|
||||
$(CrossActionTargets) : %$(DIVIDER)cross : $(addprefix %$(DIVIDER), $(crossArchs))
|
||||
|
||||
|
||||
#
|
||||
# arch targets
|
||||
#
|
||||
host : $(hostArchs)
|
||||
cross : $(crossArchs)
|
||||
|
||||
#
|
||||
# special clean rule
|
||||
#
|
||||
clean :
|
||||
$(RMDIR) $(hostDirs) $(crossDirs)
|
||||
clean$(DIVIDER)% :
|
||||
$(RMDIR) O.$*
|
||||
|
||||
.PHONY :: $(HostActionTargets)
|
||||
.PHONY :: $(CrossActionTargets)
|
||||
.PHONY :: $(crossActionArchTargets)
|
||||
.PHONY :: $(hostActionArchTargets)
|
||||
.PHONY :: $(hostArchs) $(crossArchs)
|
||||
.PHONY :: $(ACTIONS) clean all host cross
|
||||
|
||||
46
config/RULES_DIRS
Normal file
46
config/RULES_DIRS
Normal file
@@ -0,0 +1,46 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
|
||||
ARCHS += $(BUILD_ARCHS) host cross
|
||||
ACTIONS += clean inc depends buildInstall
|
||||
|
||||
dirPart = $(word 1, $(subst $(DIVIDER), ,$@))
|
||||
actionArchPart = $(subst $(dirPart)$(DIVIDER), ,$@)
|
||||
|
||||
dirActionArchTargets = $(foreach dir, $(DIRS), \
|
||||
$(foreach action, $(ACTIONS) install,\
|
||||
$(foreach arch, $(ARCHS), \
|
||||
$(dir)$(DIVIDER)$(action)$(DIVIDER)$(arch))))
|
||||
dirArchTargets += $(foreach dir, $(DIRS), \
|
||||
$(foreach arch, $(ARCHS),\
|
||||
$(dir)$(DIVIDER)$(arch)))
|
||||
dirActionTargets += $(foreach dir, $(DIRS), \
|
||||
$(foreach action, $(ACTIONS) install,\
|
||||
$(dir)$(DIVIDER)$(action)))
|
||||
actionArchTargets = $(foreach action, $(ACTIONS) install,\
|
||||
$(foreach arch, $(ARCHS), \
|
||||
$(action)$(DIVIDER)$(arch)))
|
||||
|
||||
all install :: inc buildInstall
|
||||
|
||||
rebuild:: clean all
|
||||
|
||||
$(DIRS) $(dirActionTargets) $(dirArchTargets)$(dirActionArchTargets) ::
|
||||
$(MAKE) -C $(dirPart) $(actionArchPart)
|
||||
|
||||
$(ARCHS) $(installArchTargets) :%: \
|
||||
$(foreach dir, $(DIRS), $(dir)$(DIVIDER)inc) \
|
||||
$(foreach dir, $(DIRS), $(dir)$(DIVIDER)%)
|
||||
|
||||
$(ACTIONS) $(actionArchTargets) :%: \
|
||||
$(foreach dir, $(DIRS), $(dir)$(DIVIDER)%)
|
||||
|
||||
|
||||
.PHONY :: $(DIRS) all install rebuild
|
||||
.PHONY :: $(ARCHS) $(ACTIONS)
|
||||
.PHONY :: $(dirActionTargets) $(dirArchTargets)
|
||||
.PHONY :: $(dirActionArchTargets)
|
||||
.PHONY :: $(actionArchTargets)
|
||||
|
||||
51
config/RULES_TOP
Normal file
51
config/RULES_TOP
Normal file
@@ -0,0 +1,51 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
include $(TOP)/config/RULES_DIRS
|
||||
|
||||
uninstall$(DIVIDER)%::
|
||||
@$(RMDIR) $(INSTALL_LOCATION_BIN)/$* $(INSTALL_LOCATION_LIB)/$* \
|
||||
$(INSTALL_LOCATION)/dbd $(INSTALL_MAN) $(INSTALL_INCLUDE) \
|
||||
$(INSTALL_DOC) $(INSTALL_DBD) $(INSTALL_TEMPLATES)
|
||||
@$(RMDIR) rec.bak rec
|
||||
|
||||
uninstall:: $(addprefix uninstall$(DIVIDER),$(BUILD_ARCHS))
|
||||
|
||||
tar:
|
||||
@DIRNAME=$(notdir $(shell pwd)); \
|
||||
echo "TOP: Creating $$DIRNAME.Tar file..."; \
|
||||
ls Makefile* | xargs tar vcf $$DIRNAME.Tar; \
|
||||
if [ -f .current_rel_hist ]; then \
|
||||
ls .current_rel_hist | xargs tar vrf $$DIRNAME.Tar ; \
|
||||
fi ;\
|
||||
if [ -f EPICS_BASE ]; then \
|
||||
ls EPICS_BASE | xargs tar vrf $$DIRNAME.Tar ; \
|
||||
fi ;\
|
||||
for DIR in ${DIRS}; do \
|
||||
find $${DIR} -name CVS -prune -o ! -type d -print \
|
||||
| grep -v "/O\..*$$" | xargs tar vrf $$DIRNAME.Tar; \
|
||||
done
|
||||
|
||||
help:
|
||||
@echo "Usage: gnumake [options] [target] ..."
|
||||
@echo "Targets supported by all Makefiles:"
|
||||
@echo " install - Installs executables in bin/<arch> (default rule)"
|
||||
@echo " build - Builds objects, using libraries from "build_libs"
|
||||
@echo " clean - Cleans objects. Clean removes the" O.<arch> dirs
|
||||
@echo " in all except the O.<arch> level Makefile"
|
||||
@echo " depends - Generates include dependencies"
|
||||
@echo "\"Partial\" build targets supported by Makefiles:"
|
||||
@echo " install.<arch> - Builds and installs <arch> only.
|
||||
@echo " clean.<arch> - Cleans <arch> binaries in O.<arch> dirs only."
|
||||
@echo " build.<arch> - Builds <arch> only.
|
||||
@echo " depends.<arch> - Generates <arch> dependencies only.
|
||||
@echo "Targets supported by top level Makefile:"
|
||||
@echo " uninstall - Cleans directories created by the install."
|
||||
@echo " tar - Create tar file "
|
||||
@echo "Indiv. object targets are supported by O.<arch> level Makefile .e.g"
|
||||
@echo " xxxRecord.o
|
||||
|
||||
.PHONY :: uninstall tar help
|
||||
.PHONY :: $(addprefix uninstall$(DIVIDER), $(BUILDARCHS))
|
||||
|
||||
185
config/Sample.Makefile.Host
Normal file
185
config/Sample.Makefile.Host
Normal file
@@ -0,0 +1,185 @@
|
||||
# Makefile.Host for base/src/sample
|
||||
#
|
||||
#
|
||||
# Sample Makefile.Host showing all possible entries
|
||||
# that are allowed using RULES.Host.
|
||||
#
|
||||
# 8-01-96 -kuk-
|
||||
#
|
||||
#
|
||||
|
||||
TOP = ../../..
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
CMPLR = STRICT
|
||||
|
||||
# Add-on CFLAGS that are needed in this subproject.
|
||||
# (If possible, all system specific flags should be
|
||||
# defined in CONFIG.$(ARCH_CLASS))
|
||||
#
|
||||
# Whenever possible, ONLY USR_CFLAGS should be
|
||||
# used. If you need special flags for your system,
|
||||
# try to put them in CONFIG.YourSystem!
|
||||
#
|
||||
# This is used on all systems:
|
||||
USR_CFLAGS := -DVAR=value -Ddefine_for_all_systems
|
||||
# This is added to the above, but only for ARCH_CLASS=BSD:
|
||||
USR_CFLAGS_BSD := -DVERSION='Berkeley enhanced'
|
||||
# ..only for WIN32:
|
||||
USR_CFLAGS_WIN32 := -DVERSION='WIN32 port'
|
||||
#
|
||||
# -nil- is special:
|
||||
# if USR_CFLAGS_SYSV was undefined or empty, .._DEFAULT would have
|
||||
# been used.
|
||||
# To indicate
|
||||
# "yes, there is a special USR_CFLAGS for SYSV, but it's empty"
|
||||
# you have to set it to -nil-:
|
||||
USR_CFLAGS_SYSV := -nil-
|
||||
# .. for all other arch classes:
|
||||
USR_CFLAGS_DEFAULT := -DVERSION='generic Unix'
|
||||
|
||||
# CFLAGS that are only used to compile a_file.c or a_file.cc:
|
||||
#
|
||||
a_file_CFLAGS := -DIN_A_FILE
|
||||
|
||||
# ---------------------------------------------------------
|
||||
# general rule for all .c .cc .h .hh files and scripts:
|
||||
#
|
||||
# In here you supply just the filename without '../' etc.
|
||||
# While building in an O.xxx subdir, the
|
||||
# sources are extracted from either the
|
||||
# '..'
|
||||
# dir or - if it exists - the dir
|
||||
# '../$(ARCH_CLASS)'
|
||||
# is preferred.
|
||||
# ---------------------------------------------------------
|
||||
|
||||
|
||||
# includes to install from this sub-project
|
||||
#
|
||||
# again: if INC_$(ARCH_CLASS) is defined, it is added to INC,
|
||||
# otherwise INC_DEFAULT (if defined) is added:
|
||||
#
|
||||
INC_DEFAULT := for_all_but_WIN32_or_hp700.h
|
||||
INC_WIN32 := only_for_WIN32.h
|
||||
INC_hp700 := -nil- # hp700 uses no special include
|
||||
INC := file.h
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
# defining a library
|
||||
# --------------------------------------------------------------------
|
||||
#
|
||||
# Contents of a library are specified via LIBSRCS.
|
||||
# From this the platform specific object names (.o, .obj, ...)
|
||||
# are derived automatically.
|
||||
#
|
||||
# Platform specific objects:
|
||||
# use LIBOBJS_$(ARCH_CLASS) or .._DEFAULT
|
||||
#
|
||||
# Platform specific files can also be put in
|
||||
# separate os/ARCH_CLASS directories!
|
||||
#
|
||||
# For almost every file the seach order is:
|
||||
# ./os/ARCH_CLASS
|
||||
# ./os/generic
|
||||
# .
|
||||
# So usually only LIBSRCS should be sufficient!
|
||||
#
|
||||
LIBSRCS := file_for_lib.c another_file.cc
|
||||
LIBSRCS_DEFAULT := posix.c
|
||||
LIBSRCS_WIN32 := win32_special.c
|
||||
LIBSRCS_BSD := -nil-
|
||||
|
||||
# Type of library to build.
|
||||
# On WIN32, SHARED results in a DLL, others may ignore this.
|
||||
LIBTYPE:=SHARED
|
||||
|
||||
# Ugly but necessary for WIN32:
|
||||
# If LIBRARY is build as a dll, it may need other libraries
|
||||
# to link with that you specify here.
|
||||
# (because a dll is similar to a program:
|
||||
# all references have to be resolved)
|
||||
#
|
||||
# If there is a file ../$(LIBRARY).def, it will
|
||||
# be used as the dll-def-file on WIN32
|
||||
#
|
||||
# We need this flag because
|
||||
# 1) you may not use a def file ('proper' code needs no def files)
|
||||
# 2) you may have one and still not want a DLL (for testing etc.)
|
||||
#
|
||||
DLL_LIBS:=some_dll
|
||||
|
||||
# Library to build:
|
||||
# lib$(LIBRARY).a or ..dll/..exp/..lib
|
||||
#
|
||||
# Currently you can build only one (1) lib per Makefile.Host!
|
||||
#
|
||||
LIBRARY:=libname
|
||||
|
||||
# --------------------------------------------------------------------
|
||||
# defining products (executable programs)
|
||||
# --------------------------------------------------------------------
|
||||
#
|
||||
# if SRCS is undefined, it defaults to $(PROD).c
|
||||
SRCS=a.c b.c c.c
|
||||
|
||||
# libs needed to link PROD and TESTPROD
|
||||
#
|
||||
# for all systems:
|
||||
PROD_LIBS := Com Ca
|
||||
# for most systems:
|
||||
PROD_LIBS_DEFAULT := mathlib
|
||||
PROD_LIBS_WIN32 := -nil-
|
||||
|
||||
# Product,
|
||||
# may be caRepeater.o -> caRepeater
|
||||
# or caRepeater.obj -> caRepeater.exe
|
||||
PROD := prod
|
||||
PROD_DEFAULT := product_for_rest
|
||||
PROD_WIN32 := product_only_for_WIN32
|
||||
PROD_BSD := product_only_for_BSD
|
||||
PROD_SYSV := product_only_for_SYSV
|
||||
|
||||
# Scripts to install
|
||||
#
|
||||
# If there is both ../$(SCRIPT) and ../$(ARCH_CLASS)/$(SCRIPT),
|
||||
# the latter, system specific version will be installed!
|
||||
#
|
||||
SCRIPTS_DEFAULT := script_for_rest
|
||||
SCRIPTS_WIN32 := script_only_for_WIN32
|
||||
SCRIPTS_BSD := script_only_for_BSD
|
||||
SCRIPTS := script
|
||||
|
||||
|
||||
# uncomment if you want to build these locally without installing:
|
||||
# TESTPROD = test
|
||||
|
||||
|
||||
# Unfortunately the above allows you only to
|
||||
# 1) build one PROD:=p from many SRCS:=a.c b.c c.c
|
||||
# or
|
||||
# 2) build many PROD:=a b c each from a single source (a.c, b.c, c.c)
|
||||
#
|
||||
# If you have several multi-source products in the same dir
|
||||
# you have to fall back to explicit rules.
|
||||
# (suggestions for a better syntax welcome!)
|
||||
#
|
||||
# The explicit rules, however, should look like the following:
|
||||
|
||||
# be careful if you add rules and dependencies:
|
||||
# use $(MV) $(RM) $(CP) $(MKDIR) $(RMDIR) $(OBJ) $(EXE) $(LINK.c) ....
|
||||
|
||||
xxxxx$(OBJ): c1.c c2.c h1.h
|
||||
|
||||
# because the output-flag (mostly '-o $@' on Unix, '-Fe$@' on WIN32)
|
||||
# is also system dependend, it's included in $(LINK.c) and $(LINK.cc) !
|
||||
#
|
||||
prog$(EXE): a$(OBJ) b$(OBJ)
|
||||
$(LINK.c) a$(OBJ) b$(OBJ) $(LDLIBS)
|
||||
|
||||
|
||||
clean::
|
||||
$(RM) dbLex.c
|
||||
|
||||
include $(TOP)/config/RULES.Host
|
||||
|
||||
# EOF Makefile.Host
|
||||
30
config/makeMakefile.pl
Normal file
30
config/makeMakefile.pl
Normal file
@@ -0,0 +1,30 @@
|
||||
#!/usr/local/bin/perl
|
||||
#
|
||||
# makeMakefile.pl
|
||||
#
|
||||
# called from RULES_ARCHS
|
||||
#
|
||||
#
|
||||
# Usage: perl makeMakefile.pl O.*-dir Makefile-Type
|
||||
|
||||
$dir = $ARGV[0];
|
||||
$type= $ARGV[1];
|
||||
$makefile="$dir/Makefile";
|
||||
|
||||
if ($dir =~ m'O.(.+)')
|
||||
{
|
||||
$t_a = $1;
|
||||
}
|
||||
else
|
||||
{
|
||||
die "Cannot extract T_A from $dir";
|
||||
}
|
||||
|
||||
mkdir ($dir, 0777) unless -d $dir;
|
||||
|
||||
open OUT, "> $makefile" or die "Cannot create $makefile";
|
||||
print OUT "T_A=$t_a\n";
|
||||
print OUT "include ../Makefile.$type\n";
|
||||
close OUT;
|
||||
|
||||
# EOF makeMakefile.pl
|
||||
44
src/Makefile
44
src/Makefile
@@ -1,42 +1,14 @@
|
||||
# $Id$
|
||||
# Author: Robert Zieman (ANL)
|
||||
# Date: 6/03/91
|
||||
#
|
||||
# Experimental Physics and Industrial Control System (EPICS)
|
||||
#
|
||||
# Copyright 1991, the Regents of the University of California,
|
||||
# and the University of Chicago Board of Governors.
|
||||
#
|
||||
# This software was produced under U.S. Government contracts:
|
||||
# (W-7405-ENG-36) at the Los Alamos National Laboratory,
|
||||
# and (W-31-109-ENG-38) at Argonne National Laboratory.
|
||||
#
|
||||
# Initial development by:
|
||||
# The Controls and Automation Group (AT-8)
|
||||
# Ground Test Accelerator
|
||||
# Accelerator Technology Division
|
||||
# Los Alamos National Laboratory
|
||||
#
|
||||
# Co-developed with
|
||||
# The Controls and Computing Group
|
||||
# Accelerator Systems Division
|
||||
# Advanced Photon Source
|
||||
# Argonne National Laboratory
|
||||
#
|
||||
# Modification Log:
|
||||
# -----------------
|
||||
# .01 mm-dd-yy iii Comment
|
||||
# .02 08-16-93 rcz moving most of these pre-builds back to the
|
||||
# object area Imakefile and adding DependTarget($(EARLYSRC))
|
||||
#
|
||||
# ...
|
||||
# $Id$
|
||||
#
|
||||
|
||||
all: bld_errSym
|
||||
TOP = ..
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
|
||||
bld_errSym:
|
||||
cd libCom; ../../tools/blderrSymTbl
|
||||
#
|
||||
# Directories to build defined in CONFIG_BASE
|
||||
#
|
||||
|
||||
|
||||
include $(TOP)/config/RULES_DIRS
|
||||
|
||||
clean:
|
||||
/bin/rm -f libCom/errInc.o
|
||||
|
||||
@@ -1,15 +1,7 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Lowest Level Directroy Makefile
|
||||
# by Janet Anderson
|
||||
#
|
||||
# $Log$
|
||||
#
|
||||
|
||||
EPICS=../../..
|
||||
TOP=../..
|
||||
|
||||
include $(EPICS)/config/CONFIG_BASE
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
|
||||
include $(EPICS)/config/RULES_ARCHS
|
||||
include $(TOP)/config/RULES_ARCHS
|
||||
|
||||
|
||||
32
src/as/Makefile.Host
Normal file
32
src/as/Makefile.Host
Normal file
@@ -0,0 +1,32 @@
|
||||
TOP = ../../..
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
|
||||
USR_CFLAGS = -D_NO_PROTO
|
||||
|
||||
INC := asDbLib.h asLib.h
|
||||
|
||||
# build lib As from asLib.c:
|
||||
#
|
||||
LIBSRCS := asLib.c
|
||||
LIBRARY := As
|
||||
|
||||
|
||||
# All systems link the libs As, Com, Db (and again Com ??),
|
||||
# generic Unix needs also lib m:
|
||||
#
|
||||
SYS_PROD_LIBS_DEFAULT := m
|
||||
SYS_PROD_LIBS_WIN32 := -nil-
|
||||
PROD_LIBS := As Com Db Com
|
||||
|
||||
PROD := ascheck
|
||||
|
||||
include $(TOP)/config/RULES.Host
|
||||
|
||||
# Extra rule since asLib_lex.c is included in asLib.c
|
||||
# In my opinion, these objects should really be built
|
||||
# independently.
|
||||
asLib$(OBJ): asLib_lex.c ../asLibRoutines.c
|
||||
|
||||
clean::
|
||||
@$(RM) asLib.c asLib_lex.c
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
EPICS = ../../../..
|
||||
include Target.include
|
||||
include $(EPICS)/config/CONFIG_BASE
|
||||
|
||||
USR_CFLAGS = -D_NO_PROTO
|
||||
USR_LDLIBS = -lAs -lCom -lDb -lCom -lm -s
|
||||
USR_LDFLAGS = -L.
|
||||
|
||||
DEPLIBS_BASE = $(EPICS_BASE_LIB)
|
||||
DEPLIBS = ./libAs.a\
|
||||
$(DEPLIBS_BASE)/libCom.a\
|
||||
$(DEPLIBS_BASE)/libDb.a
|
||||
|
||||
INC += asDbLib.h
|
||||
INC += asLib.h
|
||||
|
||||
SRCS.c = ../ascheck.c asLib.c
|
||||
OBJS = ascheck.o
|
||||
LIBOBJS = asLib.o
|
||||
LIBNAME = libAs.a
|
||||
PROD = ascheck
|
||||
|
||||
include $(EPICS)/config/RULES.Unix
|
||||
|
||||
# Extra rule since asLib_lex.c is included in asLib.c
|
||||
# In my opinion, these objects should really be built
|
||||
# independently.
|
||||
asLib.o: asLib_lex.c ../asLibRoutines.c
|
||||
|
||||
clean::
|
||||
@$(RM) asLib.c asLib_lex.c
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
EPICS = ../../../..
|
||||
include Target.include
|
||||
include $(EPICS)/config/CONFIG_BASE
|
||||
TOP = ../../..
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
|
||||
USR_CFLAGS = -DACCESS_SECURITY -D_NO_PROTO
|
||||
|
||||
@@ -8,7 +7,7 @@ SRCS.c = ../asDbLib.c ../asCa.c asLib.c
|
||||
LIBOBJS = asDbLib.o asCa.o asLib.o
|
||||
LIBNAME = asLibrary
|
||||
|
||||
include $(EPICS)/config/RULES.Vx
|
||||
include $(TOP)/config/RULES.Vx
|
||||
|
||||
# Extra rule since asLib_lex.c is included in asLib.c
|
||||
# In my opinion, these objects should really be built
|
||||
|
||||
@@ -65,7 +65,6 @@ DEVELOPMENT CENTER AT ARGONNE NATIONAL LABORATORY (708-252-2000).
|
||||
#include <cadef.h>
|
||||
#include <caerr.h>
|
||||
#include <caeventmask.h>
|
||||
#include <calink.h>
|
||||
#include <task_params.h>
|
||||
#include <alarm.h>
|
||||
|
||||
@@ -128,7 +127,7 @@ LOCAL void eventCallback(struct event_handler_args eha)
|
||||
ASGINP *pasginp;
|
||||
CAPVT *pcapvt;
|
||||
ASG *pasg;
|
||||
struct dbr_sts_double *pdata = eha.dbr;
|
||||
READONLY struct dbr_sts_double *pdata = eha.dbr;
|
||||
int Ilocked=FALSE;
|
||||
|
||||
if(!caInitializing) {
|
||||
@@ -169,9 +168,8 @@ LOCAL void asCaTask(void)
|
||||
pasg->inpBad |= (1<<pasginp->inpIndex);
|
||||
pcapvt = pasginp->capvt = asCalloc(1,sizeof(CAPVT));
|
||||
/*Note calls connectCallback immediately called for local Pvs*/
|
||||
SEVCHK(ca_build_and_connect(pasginp->inp,TYPENOTCONN,0,
|
||||
&pcapvt->chid,0,connectCallback,pasginp),
|
||||
"ca_build_and_connect");
|
||||
SEVCHK(ca_search_and_connect(pasginp->inp,&pcapvt->chid,
|
||||
connectCallback,pasginp),"ca_build_and_connect");
|
||||
/*Note calls accessRightsCallback immediately called for local Pvs*/
|
||||
SEVCHK(ca_replace_access_rights_event(pcapvt->chid,accessRightsCallback),
|
||||
"ca_replace_access_rights_event");
|
||||
|
||||
@@ -65,6 +65,7 @@ DEVELOPMENT CENTER AT ARGONNE NATIONAL LABORATORY (708-252-2000).
|
||||
#include <caeventmask.h>
|
||||
#include <dbStaticLib.h>
|
||||
#include <dbAccess.h>
|
||||
#include <dbEvent.h>
|
||||
#include <asLib.h>
|
||||
#include <asDbLib.h>
|
||||
#include <dbCommon.h>
|
||||
@@ -107,7 +108,7 @@ static long asDbAddRecords(void)
|
||||
dbCommon *precord;
|
||||
|
||||
dbInitEntry(pdbbase,pdbentry);
|
||||
status = dbFirstRecdes(pdbentry);
|
||||
status = dbFirstRecordType(pdbentry);
|
||||
while(!status) {
|
||||
status = dbFirstRecord(pdbentry);
|
||||
while(!status) {
|
||||
@@ -119,7 +120,7 @@ static long asDbAddRecords(void)
|
||||
}
|
||||
status = dbNextRecord(pdbentry);
|
||||
}
|
||||
status = dbNextRecdes(pdbentry);
|
||||
status = dbNextRecordType(pdbentry);
|
||||
}
|
||||
dbFinishEntry(pdbentry);
|
||||
return(0);
|
||||
|
||||
@@ -72,10 +72,6 @@ int asActive = FALSE;
|
||||
/*storage for freelist */
|
||||
static void *freeListPvt = NULL;
|
||||
|
||||
/*Forward declarations for Non ANSI routines*/
|
||||
long calcPerform(double *parg,double *presult,char *post);
|
||||
long postfix(char *pinfix, char *ppostfix,short *perror);
|
||||
|
||||
#define RPCL_LEN 184
|
||||
#define DEFAULT "DEFAULT"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ static ASINPUTFUNCPTR *my_yyinput;
|
||||
#undef YY_INPUT
|
||||
#define YY_INPUT(b,r,ms) (r=(*my_yyinput)(b,ms))
|
||||
|
||||
yyreset()
|
||||
static int yyreset()
|
||||
{
|
||||
line_num=1;
|
||||
BEGIN INITIAL;
|
||||
@@ -66,9 +66,13 @@ INP[A-L] {/* If A-L is changed then ASMAXINP must also be changed*/
|
||||
\n { line_num ++;}
|
||||
. {
|
||||
char message[20];
|
||||
YY_BUFFER_STATE *dummy=0;
|
||||
|
||||
sprintf(message,"invalid character '%c'",yytext[0]);
|
||||
yyerror(message);
|
||||
/*The following suppresses compiler warning messages*/
|
||||
if(FALSE) yyunput('c',message);
|
||||
if(FALSE) yy_switch_to_buffer(*dummy);
|
||||
}
|
||||
|
||||
%%
|
||||
|
||||
@@ -4,15 +4,10 @@
|
||||
# Base Lowest Level Directroy Makefile
|
||||
# by Janet Anderson
|
||||
#
|
||||
# $Log$
|
||||
# Revision 1.1 1994/09/07 19:26:22 jba
|
||||
# New file
|
||||
#
|
||||
#
|
||||
|
||||
EPICS=../../..
|
||||
TOP=../..
|
||||
|
||||
include $(EPICS)/config/CONFIG_BASE
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
|
||||
include $(EPICS)/config/RULES_ARCHS
|
||||
include $(TOP)/config/RULES_ARCHS
|
||||
|
||||
|
||||
10
src/bdt/Makefile.Host
Normal file
10
src/bdt/Makefile.Host
Normal file
@@ -0,0 +1,10 @@
|
||||
TOP = ../../..
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
|
||||
INC := bdt.h
|
||||
|
||||
LIBSRCS := bdt.c
|
||||
|
||||
LIBRARY := Bdt
|
||||
|
||||
include $(TOP)/config/RULES.Host
|
||||
@@ -1,11 +0,0 @@
|
||||
EPICS = ../../../..
|
||||
include Target.include
|
||||
include $(EPICS)/config/CONFIG_BASE
|
||||
|
||||
INC += bdt.h
|
||||
|
||||
LIBOBJS += bdt.o
|
||||
|
||||
LIBNAME = libBdt.a
|
||||
|
||||
include $(EPICS)/config/RULES.Unix
|
||||
@@ -1,6 +1,5 @@
|
||||
EPICS = ../../../..
|
||||
include Target.include
|
||||
include $(EPICS)/config/CONFIG_BASE
|
||||
TOP = ../../..
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
|
||||
SRCS.c += ../bdt.c
|
||||
SRCS.c += ../bdtServ.c
|
||||
@@ -14,7 +13,7 @@ OBJS += bdtServPv.o
|
||||
|
||||
PROD = bdt
|
||||
|
||||
include $(EPICS)/config/RULES.Vx
|
||||
include $(TOP)/config/RULES.Vx
|
||||
|
||||
$(PROD): $(OBJS)
|
||||
$(RM) $@
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <signal.h>
|
||||
#include <errno.h>
|
||||
#include <sys/wait.h>
|
||||
@@ -158,7 +160,7 @@ BDT* BdtIpOpen(char* address, int Port)
|
||||
{
|
||||
if ((pHostent = gethostbyname (address)) == NULL)
|
||||
return(NULL);
|
||||
bcopy (pHostent->h_addr, (char *) &addr, sizeof(addr));
|
||||
memcpy (&addr,pHostent->h_addr,sizeof(addr));
|
||||
printf("Converting name >%s< to IP number %08.8X\n", address, addr);
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -1,18 +1,7 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Lowest Level Directroy Makefile
|
||||
# by Janet Anderson
|
||||
#
|
||||
# $Log$
|
||||
# Revision 1.1 1994/09/07 19:25:39 jba
|
||||
# New file
|
||||
#
|
||||
#
|
||||
|
||||
EPICS=../../..
|
||||
TOP=../..
|
||||
|
||||
include $(EPICS)/config/CONFIG_BASE
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
|
||||
include $(EPICS)/config/RULES_ARCHS
|
||||
include $(TOP)/config/RULES_ARCHS
|
||||
|
||||
|
||||
14
src/bpt/Makefile.Host
Normal file
14
src/bpt/Makefile.Host
Normal file
@@ -0,0 +1,14 @@
|
||||
# Makefile.Host for base/src/bpt
|
||||
#
|
||||
|
||||
TOP = ../../..
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
|
||||
INC := cvtTable.h
|
||||
|
||||
SRCS := makeBpt.c
|
||||
PROD := makeBpt
|
||||
|
||||
include $(TOP)/config/RULES.Host
|
||||
|
||||
# EOF Makefile.Host for base/src/bpt
|
||||
@@ -1,12 +0,0 @@
|
||||
EPICS = ../../../..
|
||||
include Target.include
|
||||
include $(EPICS)/config/CONFIG_BASE
|
||||
|
||||
|
||||
INC += cvtTable.h
|
||||
|
||||
SRCS.c = ../makeBpt
|
||||
OBJS = makeBpt
|
||||
PROD = makeBpt
|
||||
|
||||
include $(EPICS)/config/RULES.Unix
|
||||
@@ -1,16 +1,12 @@
|
||||
EPICS = ../../../..
|
||||
include Target.include
|
||||
include $(EPICS)/config/CONFIG_BASE
|
||||
|
||||
USR_CFLAGS = -ansi
|
||||
VX_WARN_YES = -Wall -pedantic
|
||||
TOP = ../../..
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
|
||||
MENUS += menuConvert.h
|
||||
|
||||
BPTS += bptTypeJdegC.db
|
||||
BPTS += bptTypeJdegF.db
|
||||
BPTS += bptTypeKdegC.db
|
||||
BPTS += bptTypeKdegF.db
|
||||
BPTS += bptTypeJdegC.dbd
|
||||
BPTS += bptTypeJdegF.dbd
|
||||
BPTS += bptTypeKdegC.dbd
|
||||
BPTS += bptTypeKdegF.dbd
|
||||
|
||||
|
||||
SRCS.c = \
|
||||
@@ -21,5 +17,5 @@ LIBOBJS = \
|
||||
|
||||
LIBNAME = pbtLib
|
||||
|
||||
include $(EPICS)/config/RULES.Vx
|
||||
include $(TOP)/config/RULES.Vx
|
||||
|
||||
|
||||
@@ -33,7 +33,9 @@
|
||||
* 01 04OCT95 mrk Taken from old bldCvtTable
|
||||
*/
|
||||
#include <vxWorks.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <ctype.h>
|
||||
|
||||
#include <ellLib.h>
|
||||
#include <dbBase.h>
|
||||
|
||||
@@ -118,7 +118,7 @@ int main(argc, argv)
|
||||
fprintf(stderr,"Input file MUST have .data extension\n");
|
||||
exit(-1);
|
||||
}
|
||||
strcpy(pext,".db");
|
||||
strcpy(pext,".dbd");
|
||||
inFile = fopen(argv[1],"r");
|
||||
if(!inFile) {
|
||||
fprintf(stderr,"Error opening %s\n",argv[1]);
|
||||
|
||||
@@ -50,6 +50,7 @@ $ define /nolog tcp multinet_root:[multinet.include]
|
||||
$!
|
||||
$! Compile the functions and test programs
|
||||
$! Define symbol for the CC command
|
||||
$ call list_define
|
||||
$ call set_cc_command
|
||||
$ if (p1 .nes. "")
|
||||
$ then
|
||||
@@ -69,14 +70,14 @@ TEST_EVENT, -
|
||||
BSD_DEPEN, -
|
||||
IF_DEPEN, -
|
||||
VMS_DEPEN, -
|
||||
ELLLIB, -
|
||||
BUCKETLIB, -
|
||||
ENVSUBR, -
|
||||
TSSUBR, -
|
||||
[-.libcom]ELLLIB, -
|
||||
[-.libcom]BUCKETLIB, -
|
||||
[-.libcom]ENVSUBR, -
|
||||
[-.libcom]TSSUBR, -
|
||||
NEXTFIELDSUBR, -
|
||||
ASSERTUNIX, -
|
||||
ENVDATA, -
|
||||
CATIME, -
|
||||
[-.libcom]ENVDATA, -
|
||||
[-.ca]CATIME, -
|
||||
ACCTST
|
||||
$ endif
|
||||
$
|
||||
@@ -135,10 +136,20 @@ $ if f$getsyi("HW_MODEL") .ge. 1024
|
||||
$ then
|
||||
$! turn of no prototype messages because MULTINET does not
|
||||
$! supply prototypes.
|
||||
$ cc_command:== cc /warn=(disable=IMPLICITFUNC)/float=d_float /include=([], [-.include], [-.libcom])
|
||||
$ cc_command:== cc /warn=(disable=IMPLICITFUNC)/float=d_float -
|
||||
/define=("__STDC__=1", "MULTINET=1") -
|
||||
/include=([], [-.include], [-.include.os.vms], [-.libcom], [-.db])
|
||||
$ else
|
||||
$ cc_command:== cc /include=([], [-.include], [-.libcom])
|
||||
$ cc_command:== cc /define=("__STDC__=1", "MULTINET=1") 'listing' -
|
||||
/include=([], [-.include], [-.include.os.vms], [-.libcom], [-.db])
|
||||
$ endif
|
||||
$
|
||||
$ endsubroutine
|
||||
$ list_define: subroutine
|
||||
$ listing == ""
|
||||
$ if p1 .eqs. "L" then listing == "/lis=list.lis /sho=incl"
|
||||
$ endsubroutine
|
||||
$
|
||||
$! ************************************************************
|
||||
|
||||
|
||||
|
||||
@@ -1,15 +1,7 @@
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
# Lowest Level Directroy Makefile
|
||||
# by Janet Anderson
|
||||
#
|
||||
# $Log$
|
||||
#
|
||||
|
||||
EPICS=../../..
|
||||
TOP=../..
|
||||
|
||||
include $(EPICS)/config/CONFIG_BASE
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
|
||||
include $(EPICS)/config/RULES_ARCHS
|
||||
include $(TOP)/config/RULES_ARCHS
|
||||
|
||||
|
||||
64
src/ca/Makefile.Host
Normal file
64
src/ca/Makefile.Host
Normal file
@@ -0,0 +1,64 @@
|
||||
# Makefile.Host
|
||||
|
||||
TOP = ../../..
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
CMPLR = STRICT
|
||||
|
||||
#
|
||||
# includes to install from this subproject
|
||||
#
|
||||
INC += cadef.h
|
||||
INC += caerr.h
|
||||
INC += caeventmask.h
|
||||
INC += caProto.h
|
||||
|
||||
#
|
||||
# Contents of library: generic, special and for all systems
|
||||
#
|
||||
|
||||
# on generic system
|
||||
LIBSRCS_DEFAULT := posix_depen.c if_depen.c caRepeater.c
|
||||
|
||||
# on WIN32 only
|
||||
LIBSRCS_WIN32 := windows_depen.c
|
||||
|
||||
# on all systems
|
||||
LIBSRCS += iocinf.c
|
||||
LIBSRCS += service.c
|
||||
LIBSRCS += conn.c
|
||||
LIBSRCS += netdb_depen.c
|
||||
LIBSRCS += flow_control.c
|
||||
LIBSRCS += syncgrp.c
|
||||
LIBSRCS += access.c
|
||||
LIBSRCS += convert.c
|
||||
LIBSRCS += test_event.c
|
||||
LIBSRCS += bsd_depen.c
|
||||
LIBSRCS += repeater.c
|
||||
|
||||
# Library to build:
|
||||
# lib$(LIBRARY).a or ..dll/..exp/..lib
|
||||
#
|
||||
LIBRARY := ca
|
||||
|
||||
# build LIBRARY as a DLL on WIN32, other systems may ignore this
|
||||
LIBTYPE := SHARED
|
||||
|
||||
# WIN32 only: need additional lib to build the DLL and special def-file
|
||||
DLL_LIBS := Com
|
||||
|
||||
PROD := caRepeater
|
||||
|
||||
# libs needed to build [TEST]PRODUCT
|
||||
PROD_LIBS := ca Com
|
||||
|
||||
TESTPROD := catime acctst
|
||||
|
||||
include $(TOP)/config/RULES.Host
|
||||
|
||||
pcatime : catime.o $(PRODDEPLIBS)
|
||||
$(PURIFY) $(LINK.c) catime.o $(LDLIBS)
|
||||
|
||||
pacctst : acctst.o $(PRODDEPLIBS)
|
||||
$(PURIFY) $(LINK.c) acctst.o $(LDLIBS)
|
||||
|
||||
# EOF Makefile.Host
|
||||
@@ -1,46 +0,0 @@
|
||||
EPICS = ../../../..
|
||||
include Target.include
|
||||
include $(EPICS)/config/CONFIG_BASE
|
||||
|
||||
USR_LDLIBS = -lca -lCom -lm
|
||||
USR_LDFLAGS = -L.
|
||||
|
||||
DEPLIBS_BASE = $(EPICS_BASE_LIB)
|
||||
DEPLIBS = ./libca.a\
|
||||
$(DEPLIBS_BASE)/libCom.a
|
||||
|
||||
|
||||
INC += cadef.h
|
||||
INC += caerr.h
|
||||
INC += caeventmask.h
|
||||
INC += calink.h
|
||||
INC += bsdProto.h
|
||||
|
||||
SRCS.c = \
|
||||
../iocinf.c ../access.c ../test_event.c ../service.c \
|
||||
../flow_control.c ../repeater.c ../conn.c \
|
||||
../syncgrp.c ../if_depen.c ../netdb_depen.c ../bsd_depen.c \
|
||||
../posix_depen.c ../caRepeater.c ../acctst.c ../catime.c \
|
||||
../convert.c
|
||||
|
||||
OBJS = caRepeater.o
|
||||
|
||||
LIBOBJS = \
|
||||
iocinf.o access.o test_event.o service.o flow_control.o repeater.o \
|
||||
conn.o syncgrp.o if_depen.o netdb_depen.o \
|
||||
bsd_depen.o posix_depen.o convert.o
|
||||
|
||||
LIBNAME = libca.a
|
||||
|
||||
PROD = caRepeater
|
||||
|
||||
|
||||
include $(EPICS)/config/RULES.Unix
|
||||
|
||||
acctst: acctst.o $(LIBOBJS) $(DEPLIBS_BASE)/libCom.a
|
||||
$(LINK.c) -o $@ $< $(LIBOBJS) $(DEPLIBS_BASE)/libCom.a
|
||||
|
||||
catime: catime.o $(LIBOBJS) $(DEPLIBS_BASE)/libCom.a
|
||||
$(LINK.c) -o $@ $< $(LIBOBJS) $(DEPLIBS_BASE)/libCom.a
|
||||
|
||||
|
||||
@@ -1,18 +1,18 @@
|
||||
EPICS = ../../../..
|
||||
include Target.include
|
||||
include $(EPICS)/config/CONFIG_BASE
|
||||
TOP = ../../..
|
||||
include $(TOP)/config/CONFIG_BASE
|
||||
|
||||
SRCS.c = \
|
||||
../iocinf.c ../access.c ../test_event.c ../service.c \
|
||||
../flow_control.c ../repeater.c ../conn.c ../syncgrp.c \
|
||||
../if_depen.c ../bsd_depen.c ../vxWorks_depen.c ../acctst.c \
|
||||
../catime.c
|
||||
../catime.c ../convert.c
|
||||
|
||||
LIBOBJS = \
|
||||
iocinf.o access.o test_event.o service.o flow_control.o \
|
||||
repeater.o conn.o syncgrp.o if_depen.o bsd_depen.o vxWorks_depen.o
|
||||
repeater.o conn.o syncgrp.o if_depen.o bsd_depen.o vxWorks_depen.o \
|
||||
convert.o
|
||||
|
||||
LIBNAME = caLib
|
||||
|
||||
include $(EPICS)/config/RULES.Vx
|
||||
include $(TOP)/config/RULES.Vx
|
||||
|
||||
|
||||
1431
src/ca/access.c
1431
src/ca/access.c
File diff suppressed because it is too large
Load Diff
593
src/ca/acctst.c
593
src/ca/acctst.c
@@ -7,6 +7,39 @@ static char *sccsId = "@(#) $Id$";
|
||||
|
||||
/*
|
||||
* $Log$
|
||||
* Revision 1.44 1997/04/10 19:26:05 jhill
|
||||
* asynch connect, faster connect, ...
|
||||
*
|
||||
* Revision 1.43 1997/01/22 21:07:27 jhill
|
||||
* fixed array test
|
||||
*
|
||||
* Revision 1.42 1996/12/12 18:51:41 jhill
|
||||
* doc
|
||||
*
|
||||
* Revision 1.41 1996/12/11 01:10:33 jhill
|
||||
* added additional vector tests
|
||||
*
|
||||
* Revision 1.40 1996/11/22 19:07:01 jhill
|
||||
* included string.h
|
||||
*
|
||||
* Revision 1.39 1996/11/02 00:50:36 jhill
|
||||
* many pc port, const in API, and other changes
|
||||
*
|
||||
* Revision 1.37 1996/09/16 16:31:01 jhill
|
||||
* fixed NT warnings
|
||||
*
|
||||
* Revision 1.36 1996/07/24 21:55:33 jhill
|
||||
* fixed gnu warnings
|
||||
*
|
||||
* Revision 1.35 1996/07/01 19:49:15 jhill
|
||||
* turned on analog value wrap-around test
|
||||
*
|
||||
* Revision 1.34 1996/06/19 17:59:02 jhill
|
||||
* many 3.13 beta changes
|
||||
*
|
||||
* Revision 1.33 1995/12/19 19:29:04 jhill
|
||||
* changed put test
|
||||
*
|
||||
* Revision 1.32 1995/11/29 19:17:25 jhill
|
||||
* more tests
|
||||
*
|
||||
@@ -21,10 +54,6 @@ static char *sccsId = "@(#) $Id$";
|
||||
*
|
||||
*/
|
||||
|
||||
#ifdef VMS
|
||||
#include <LIB$ROUTINES.H>
|
||||
#endif
|
||||
|
||||
/*
|
||||
* ANSI
|
||||
*/
|
||||
@@ -32,11 +61,13 @@ static char *sccsId = "@(#) $Id$";
|
||||
#include <stdlib.h>
|
||||
#include <math.h>
|
||||
#include <float.h>
|
||||
|
||||
#include "os_depen.h"
|
||||
|
||||
#include <string.h>
|
||||
#include <assert.h>
|
||||
#include <cadef.h>
|
||||
|
||||
/*
|
||||
* CA
|
||||
*/
|
||||
#include "cadef.h"
|
||||
|
||||
#define EVENT_ROUTINE null_event
|
||||
#define CONN_ROUTINE conn
|
||||
@@ -49,6 +80,18 @@ int conn_cb_count;
|
||||
#define min(A,B) ((A)>(B)?(B):(A))
|
||||
#endif
|
||||
|
||||
#ifndef TRUE
|
||||
#define TRUE 1
|
||||
#endif
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE 0
|
||||
#endif
|
||||
|
||||
#ifndef NELEMENTS
|
||||
#define NELEMENTS(A) (sizeof(A)/sizeof(A[0]))
|
||||
#endif
|
||||
|
||||
int doacctst(char *pname);
|
||||
void test_sync_groups(chid chix);
|
||||
void multiple_sg_requests(chid chix, CA_SYNC_GID gid);
|
||||
@@ -73,6 +116,8 @@ dbr_float_t epsilon,
|
||||
unsigned iterations);
|
||||
|
||||
#ifdef vxWorks
|
||||
#include <vxWorks.h>
|
||||
#include <taskLib.h>
|
||||
int acctst(char *pname)
|
||||
{
|
||||
|
||||
@@ -94,7 +139,7 @@ int acctst(char *pname)
|
||||
NULL);
|
||||
}
|
||||
#else /* not vxWorks */
|
||||
main(int argc, char **argv)
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
if(argc == 2){
|
||||
doacctst(argv[1]);
|
||||
@@ -122,16 +167,19 @@ int doacctst(char *pname)
|
||||
evid monix;
|
||||
char pstring[NUM][MAX_STRING_SIZE];
|
||||
unsigned size;
|
||||
unsigned monCount=0u;
|
||||
|
||||
SEVCHK(ca_task_initialize(), "Unable to initialize");
|
||||
|
||||
conn_cb_count = 0;
|
||||
|
||||
printf("begin\n");
|
||||
#ifdef VMS
|
||||
lib$init_timer();
|
||||
#endif /*VMS*/
|
||||
|
||||
printf("CA Client V%s\n", ca_version());
|
||||
|
||||
/*
|
||||
* CA pend event delay accuracy test
|
||||
*/
|
||||
{
|
||||
TS_STAMP end_time;
|
||||
TS_STAMP start_time;
|
||||
@@ -149,12 +197,30 @@ int doacctst(char *pname)
|
||||
accuracy = 100.0*(delay-request)/request;
|
||||
printf("CA pend event delay accuracy = %f %%\n",
|
||||
accuracy);
|
||||
assert (abs(accuracy) < 10.0);
|
||||
assert (fabs(accuracy) < 10.0);
|
||||
}
|
||||
|
||||
size = dbr_size_n(DBR_GR_FLOAT, NUM);
|
||||
ptr = (struct dbr_gr_float *) malloc(size);
|
||||
|
||||
/*
|
||||
* verify that we dont print a disconnect message when
|
||||
* we delete the last channel
|
||||
* (this fails if we see a disconnect message)
|
||||
*/
|
||||
status = ca_search( pname, &chix3);
|
||||
SEVCHK(status, NULL);
|
||||
status = ca_pend_io(1000.0);
|
||||
SEVCHK(status, NULL);
|
||||
status = ca_clear_channel(chix3);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
/*
|
||||
* verify lots of disconnects
|
||||
* verify channel connected state variables
|
||||
*/
|
||||
printf("Connect/disconnect test");
|
||||
fflush(stdout);
|
||||
for (i = 0; i < 10; i++) {
|
||||
|
||||
status = ca_search(
|
||||
@@ -172,14 +238,9 @@ int doacctst(char *pname)
|
||||
&chix2);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
status = ca_build_and_connect(
|
||||
pname,
|
||||
TYPENOTCONN,
|
||||
0,
|
||||
&chix1,
|
||||
NULL,
|
||||
NULL,
|
||||
NULL);
|
||||
status = ca_search(
|
||||
pname,
|
||||
&chix1);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
if (ca_test_io() == ECA_IOINPROGRESS) {
|
||||
@@ -197,6 +258,9 @@ int doacctst(char *pname)
|
||||
status = ca_pend_io(1000.0);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
printf(".");
|
||||
fflush(stdout);
|
||||
|
||||
assert(ca_test_io() == ECA_IODONE);
|
||||
|
||||
assert(ca_state(chix1) == cs_conn);
|
||||
@@ -209,70 +273,267 @@ int doacctst(char *pname)
|
||||
SEVCHK(ca_clear_channel(chix2), NULL);
|
||||
SEVCHK(ca_clear_channel(chix1), NULL);
|
||||
}
|
||||
printf("\n");
|
||||
|
||||
/*
|
||||
* look for problems with ca_search(), ca_clear_channel(),
|
||||
* ca_change_connection_event(), and ca_pend_io(() combo
|
||||
*/
|
||||
status = ca_search(pname,& chix3);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
status = ca_replace_access_rights_event(chix3, accessSecurity_cb);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
/*
|
||||
* verify clear before connect
|
||||
*/
|
||||
status = ca_search_and_connect(pname, &chix4, CONN_ROUTINE, NULL);
|
||||
status = ca_search(pname, &chix4);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
status = ca_clear_channel(chix4);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
status = ca_search_and_connect(pname, &chix4, CONN_ROUTINE, NULL);
|
||||
status = ca_search(pname, &chix4);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
status = ca_replace_access_rights_event(chix4, accessSecurity_cb);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
status = ca_search_and_connect(pname, &chix2, CONN_ROUTINE, NULL);
|
||||
status = ca_search(pname, &chix2);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
status = ca_replace_access_rights_event(chix2, accessSecurity_cb);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
status = ca_search_and_connect(pname, &chix1, CONN_ROUTINE, NULL);
|
||||
status = ca_search(pname, &chix1);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
status = ca_replace_access_rights_event(chix1, accessSecurity_cb);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
status = ca_change_connection_event(chix1,conn);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
status = ca_change_connection_event(chix1,NULL);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
status = ca_change_connection_event(chix1,conn);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
status = ca_change_connection_event(chix1,NULL);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
status = ca_pend_io(1000.0);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
assert(ca_state(chix1) == cs_conn);
|
||||
assert(ca_state(chix2) == cs_conn);
|
||||
assert(ca_state(chix3) == cs_conn);
|
||||
assert(ca_state(chix4) == cs_conn);
|
||||
assert (ca_state(chix1) == cs_conn);
|
||||
assert (ca_state(chix2) == cs_conn);
|
||||
assert (ca_state(chix3) == cs_conn);
|
||||
assert (ca_state(chix4) == cs_conn);
|
||||
|
||||
assert(INVALID_DB_REQ(chix1->type) == FALSE);
|
||||
assert(INVALID_DB_REQ(chix2->type) == FALSE);
|
||||
assert(INVALID_DB_REQ(chix3->type) == FALSE);
|
||||
assert(INVALID_DB_REQ(chix4->type) == FALSE);
|
||||
assert (INVALID_DB_REQ(chix1->type) == FALSE);
|
||||
assert (INVALID_DB_REQ(chix2->type) == FALSE);
|
||||
assert (INVALID_DB_REQ(chix3->type) == FALSE);
|
||||
assert (INVALID_DB_REQ(chix4->type) == FALSE);
|
||||
|
||||
#ifdef VMS
|
||||
lib$show_timer();
|
||||
#endif /*VMS*/
|
||||
/*
|
||||
* clear chans before starting another test
|
||||
*/
|
||||
status = ca_clear_channel(chix1);
|
||||
SEVCHK(status, NULL);
|
||||
status = ca_clear_channel(chix2);
|
||||
SEVCHK(status, NULL);
|
||||
status = ca_clear_channel(chix3);
|
||||
SEVCHK(status, NULL);
|
||||
status = ca_clear_channel(chix4);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
#ifdef VMS
|
||||
lib$init_timer();
|
||||
#endif /*VMS*/
|
||||
/*
|
||||
* verify ca_pend_io() does not see old search requests
|
||||
* (that did not specify a connection handler)
|
||||
*/
|
||||
status = ca_search_and_connect(pname, &chix1, NULL, NULL);
|
||||
SEVCHK(status, NULL);
|
||||
/*
|
||||
* channel will connect synchronously if on the
|
||||
* local host
|
||||
*/
|
||||
if (ca_state(chix1)==cs_never_conn) {
|
||||
status = ca_pend_io(1e-16);
|
||||
if (status==ECA_TIMEOUT) {
|
||||
assert(ca_state(chix1)==cs_never_conn);
|
||||
|
||||
printf("waiting on pend io verify connect...");
|
||||
fflush(stdout);
|
||||
while (ca_state(chix1)!=cs_conn) {
|
||||
ca_pend_event(0.1);
|
||||
}
|
||||
printf("done\n");
|
||||
|
||||
/*
|
||||
* we end up here if the channel isnt on the same host
|
||||
*/
|
||||
status = ca_search_and_connect(pname, &chix2, NULL, NULL);
|
||||
SEVCHK(status, NULL);
|
||||
status = ca_pend_io(1e-16);
|
||||
if (status==ECA_TIMEOUT) {
|
||||
assert(ca_state(chix2)==cs_never_conn);
|
||||
}
|
||||
else {
|
||||
assert(ca_state(chix2)==cs_conn);
|
||||
}
|
||||
status = ca_clear_channel(chix2);
|
||||
SEVCHK(status, NULL);
|
||||
}
|
||||
else {
|
||||
assert(ca_state(chix1)==cs_conn);
|
||||
}
|
||||
}
|
||||
status = ca_clear_channel(chix1);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
/*
|
||||
* verify connection handlers are working
|
||||
*/
|
||||
status = ca_search_and_connect(pname, &chix1, conn, NULL);
|
||||
SEVCHK(status, NULL);
|
||||
status = ca_search_and_connect(pname, &chix2, conn, NULL);
|
||||
SEVCHK(status, NULL);
|
||||
status = ca_search_and_connect(pname, &chix3, conn, NULL);
|
||||
SEVCHK(status, NULL);
|
||||
status = ca_search_and_connect(pname, &chix4, conn, NULL);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
printf("waiting on conn handler call back connect...");
|
||||
fflush(stdout);
|
||||
while (conn_cb_count != 4) {
|
||||
ca_pend_event(0.1);
|
||||
}
|
||||
printf("done\n");
|
||||
|
||||
printf("Read Access=%d Write Access=%d\n",
|
||||
ca_read_access(chix1),
|
||||
ca_write_access(chix1));
|
||||
|
||||
/*
|
||||
* ca_pend_io() must block
|
||||
*/
|
||||
if(ca_read_access(chix4)){
|
||||
dbr_float_t req;
|
||||
dbr_float_t resp;
|
||||
|
||||
printf ("get TMO test ...");
|
||||
fflush(stdout);
|
||||
req = 56.57f;
|
||||
resp = -99.99f;
|
||||
SEVCHK(ca_put(DBR_FLOAT, chix4, &req),NULL);
|
||||
SEVCHK(ca_get(DBR_FLOAT, chix4, &resp),NULL);
|
||||
status = ca_pend_io(1.0e-12);
|
||||
if (status==ECA_NORMAL) {
|
||||
if (resp != req) {
|
||||
printf (
|
||||
"get block test failed - val written %f\n", req);
|
||||
printf (
|
||||
"get block test failed - val read %f\n", resp);
|
||||
assert(0);
|
||||
}
|
||||
}
|
||||
else if (resp != -99.99f) {
|
||||
printf (
|
||||
"CA didnt block for get to return?\n");
|
||||
}
|
||||
|
||||
req = 33.44f;
|
||||
resp = -99.99f;
|
||||
SEVCHK (ca_put(DBR_FLOAT, chix4, &req),NULL);
|
||||
SEVCHK (ca_get(DBR_FLOAT, chix4, &resp),NULL);
|
||||
SEVCHK (ca_pend_io(2000.0),NULL);
|
||||
if (resp != req) {
|
||||
printf (
|
||||
"get block test failed - val written %f\n", req);
|
||||
printf (
|
||||
"get block test failed - val read %f\n", resp);
|
||||
assert(0);
|
||||
}
|
||||
printf ("done\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* Verify that we can do IO with the new types for ALH
|
||||
*/
|
||||
#if 0
|
||||
if(ca_read_access(chix4)&&ca_write_access(chix4)){
|
||||
{
|
||||
dbr_put_ackt_t acktIn=1u;
|
||||
dbr_put_acks_t acksIn=1u;
|
||||
struct dbr_stsack_string stsackOut;
|
||||
|
||||
SEVCHK (ca_put(DBR_PUT_ACKT, chix4, &acktIn),NULL);
|
||||
SEVCHK (ca_put(DBR_PUT_ACKS, chix4, &acksIn),NULL);
|
||||
SEVCHK (ca_get(DBR_STSACK_STRING, chix4, &stsackOut),NULL);
|
||||
SEVCHK (ca_pend_io(2000.0),NULL);
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Verify that we can write and then read back
|
||||
* the same analog value
|
||||
* the same analog value (DBR_FLOAT)
|
||||
*/
|
||||
if( (ca_field_type(chix1)==DBR_FLOAT ||
|
||||
ca_field_type(chix1)==DBR_DOUBLE) &&
|
||||
if( (ca_field_type(chix1)==DBR_DOUBLE ||
|
||||
ca_field_type(chix1)==DBR_FLOAT) &&
|
||||
ca_read_access(chix1) &&
|
||||
ca_write_access(chix1)){
|
||||
|
||||
dbr_float_t incr;
|
||||
dbr_float_t epsil;
|
||||
dbr_float_t base;
|
||||
unsigned long iter;
|
||||
|
||||
printf ("float test ...");
|
||||
fflush(stdout);
|
||||
epsil = FLT_EPSILON*4.0F;
|
||||
base = FLT_MIN;
|
||||
for (i=FLT_MIN_EXP; i<FLT_MAX_EXP; i+=FLT_MAX_EXP/10) {
|
||||
incr = (dbr_float_t) ldexp (0.5F,i);
|
||||
if (fabs(incr)>FLT_MAX/10.0) {
|
||||
iter = (unsigned long) (FLT_MAX/fabs(incr));
|
||||
}
|
||||
else {
|
||||
iter = 10.0;
|
||||
}
|
||||
floatTest(chix1, base, incr, epsil, iter);
|
||||
}
|
||||
base = FLT_MAX;
|
||||
for (i=FLT_MIN_EXP; i<FLT_MAX_EXP; i+=FLT_MAX_EXP/10) {
|
||||
incr = (dbr_float_t) - ldexp (0.5F,i);
|
||||
if (fabs(incr)>FLT_MAX/10.0) {
|
||||
iter = (unsigned long) (FLT_MAX/fabs(incr));
|
||||
}
|
||||
else {
|
||||
iter = 10.0;
|
||||
}
|
||||
floatTest(chix1, base, incr, epsil, iter);
|
||||
}
|
||||
base = - FLT_MAX;
|
||||
for (i=FLT_MIN_EXP; i<FLT_MAX_EXP; i+=FLT_MAX_EXP/10) {
|
||||
incr = (dbr_float_t) ldexp (0.5F,i);
|
||||
if (fabs(incr)>FLT_MAX/10.0) {
|
||||
iter = (unsigned long) (FLT_MAX/fabs(incr));
|
||||
}
|
||||
else {
|
||||
iter = 10.0;
|
||||
}
|
||||
floatTest(chix1, base, incr, epsil, iter);
|
||||
}
|
||||
printf ("done\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* Verify that we can write and then read back
|
||||
* the same analog value (DBR_DOUBLE)
|
||||
*/
|
||||
if( ca_field_type(chix1)==DBR_DOUBLE &&
|
||||
ca_read_access(chix1) &&
|
||||
ca_write_access(chix1)){
|
||||
|
||||
@@ -281,59 +542,44 @@ int doacctst(char *pname)
|
||||
dbr_double_t base;
|
||||
unsigned long iter;
|
||||
|
||||
printf ("float test ...");
|
||||
fflush(stdout);
|
||||
epsil = FLT_EPSILON*4;
|
||||
base = FLT_MIN;
|
||||
for (i=FLT_MIN_EXP; i<FLT_MAX_EXP; i++) {
|
||||
incr = ldexp (0.5,i);
|
||||
iter = FLT_MAX/fabs(incr);
|
||||
iter = min (iter,10);
|
||||
floatTest(chix1, base, incr, epsil, iter);
|
||||
}
|
||||
base = FLT_MAX;
|
||||
for (i=FLT_MIN_EXP; i<FLT_MAX_EXP; i++) {
|
||||
incr = - ldexp (0.5,i);
|
||||
iter = FLT_MAX/fabs(incr);
|
||||
iter = min (iter,10);
|
||||
floatTest(chix1, base, incr, epsil, iter);
|
||||
}
|
||||
base = - FLT_MAX;
|
||||
for (i=FLT_MIN_EXP; i<FLT_MAX_EXP; i++) {
|
||||
incr = ldexp (0.5,i);
|
||||
iter = FLT_MAX/fabs(incr);
|
||||
iter = min (iter,10);
|
||||
floatTest(chix1, base, incr, epsil, iter);
|
||||
}
|
||||
printf ("done\n");
|
||||
|
||||
printf ("double test ...");
|
||||
fflush(stdout);
|
||||
epsil = DBL_EPSILON*4;
|
||||
base = DBL_MIN;
|
||||
for (i=DBL_MIN_EXP; i<DBL_MAX_EXP; i++) {
|
||||
for (i=DBL_MIN_EXP; i<DBL_MAX_EXP; i+=DBL_MAX_EXP/10) {
|
||||
incr = ldexp (0.5,i);
|
||||
iter = DBL_MAX/fabs(incr);
|
||||
iter = min (iter,10);
|
||||
if (fabs(incr)>DBL_MAX/10.0) {
|
||||
iter = (unsigned long) (DBL_MAX/fabs(incr));
|
||||
}
|
||||
else {
|
||||
iter = 10.0;
|
||||
}
|
||||
doubleTest(chix1, base, incr, epsil, iter);
|
||||
}
|
||||
base = DBL_MAX;
|
||||
for (i=DBL_MIN_EXP; i<DBL_MAX_EXP; i++) {
|
||||
for (i=DBL_MIN_EXP; i<DBL_MAX_EXP; i+=DBL_MAX_EXP/10) {
|
||||
incr = - ldexp (0.5,i);
|
||||
iter = DBL_MAX/fabs(incr);
|
||||
iter = min (iter,10);
|
||||
if (fabs(incr)>DBL_MAX/10.0) {
|
||||
iter = (unsigned long) (DBL_MAX/fabs(incr));
|
||||
}
|
||||
else {
|
||||
iter = 10.0;
|
||||
}
|
||||
doubleTest(chix1, base, incr, epsil, iter);
|
||||
}
|
||||
base = - DBL_MAX;
|
||||
for (i=DBL_MIN_EXP; i<DBL_MAX_EXP; i++) {
|
||||
for (i=DBL_MIN_EXP; i<DBL_MAX_EXP; i+=DBL_MAX_EXP/10) {
|
||||
incr = ldexp (0.5,i);
|
||||
iter = DBL_MAX/fabs(incr);
|
||||
iter = min (iter,10);
|
||||
if (fabs(incr)>DBL_MAX/10.0) {
|
||||
iter = (unsigned long) (DBL_MAX/fabs(incr));
|
||||
}
|
||||
else {
|
||||
iter = 10.0;
|
||||
}
|
||||
doubleTest(chix1, base, incr, epsil, iter);
|
||||
}
|
||||
printf ("done\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* verify we dont jam up on many uninterrupted
|
||||
@@ -377,6 +623,7 @@ int doacctst(char *pname)
|
||||
* solicitations
|
||||
*/
|
||||
if(ca_read_access(chix1)){
|
||||
unsigned count=0u;
|
||||
printf("Performing multiple get callback test...");
|
||||
fflush(stdout);
|
||||
for(i=0; i<10000; i++){
|
||||
@@ -385,26 +632,28 @@ int doacctst(char *pname)
|
||||
1,
|
||||
chix1,
|
||||
null_event,
|
||||
NULL);
|
||||
&count);
|
||||
|
||||
SEVCHK(status, NULL);
|
||||
}
|
||||
SEVCHK(ca_flush_io(), NULL);
|
||||
while (count<10000u) {
|
||||
ca_pend_event(1.0);
|
||||
printf("waiting...");
|
||||
fflush(stdout);
|
||||
}
|
||||
printf("done.\n");
|
||||
}
|
||||
else{
|
||||
printf("Skipped multiple get cb test - no read access\n");
|
||||
}
|
||||
|
||||
if(ca_v42_ok(chix1)){
|
||||
test_sync_groups(chix1);
|
||||
}
|
||||
|
||||
/*
|
||||
* verify we dont jam up on many uninterrupted
|
||||
* solicitations
|
||||
* put callback solicitations
|
||||
*/
|
||||
if(ca_write_access(chix1) && ca_v42_ok(chix1)){
|
||||
unsigned count=0u;
|
||||
printf("Performing multiple put callback test...");
|
||||
fflush(stdout);
|
||||
for(i=0; i<10000; i++){
|
||||
@@ -415,33 +664,72 @@ int doacctst(char *pname)
|
||||
chix1,
|
||||
&fval,
|
||||
null_event,
|
||||
NULL);
|
||||
&count);
|
||||
|
||||
SEVCHK(status, NULL);
|
||||
}
|
||||
SEVCHK(ca_flush_io(), NULL);
|
||||
while (count<10000u) {
|
||||
ca_pend_event(1.0);
|
||||
printf("waiting...");
|
||||
fflush(stdout);
|
||||
}
|
||||
|
||||
printf("done.\n");
|
||||
}
|
||||
else{
|
||||
printf("Skipped multiple put cb test - no write access\n");
|
||||
}
|
||||
|
||||
/*
|
||||
* verify that we detect that a large string has been written
|
||||
*/
|
||||
if(ca_write_access(chix1)){
|
||||
dbr_string_t stimStr;
|
||||
dbr_string_t respStr;
|
||||
memset(stimStr, 'a', sizeof(stimStr));
|
||||
status = ca_array_put(DBR_STRING, 1u, chix1, stimStr);
|
||||
assert(status==ECA_STRTOBIG);
|
||||
sprintf(stimStr, "%u", 8u);
|
||||
status = ca_array_put(DBR_STRING, 1u, chix1, stimStr);
|
||||
assert(status==ECA_NORMAL);
|
||||
status = ca_array_get(DBR_STRING, 1u, chix1, respStr);
|
||||
assert(status==ECA_NORMAL);
|
||||
status = ca_pend_io(0.0);
|
||||
assert(status==ECA_NORMAL);
|
||||
printf(
|
||||
"Test fails if stim \"%s\" isnt roughly equiv to resp \"%s\"\n",
|
||||
stimStr, respStr);
|
||||
}
|
||||
else{
|
||||
printf("Skipped bad string test - no write access\n");
|
||||
}
|
||||
|
||||
if(ca_v42_ok(chix1)){
|
||||
test_sync_groups(chix1);
|
||||
}
|
||||
|
||||
/*
|
||||
* verify we can add many monitors at once
|
||||
*/
|
||||
printf("Performing multiple monitor test...");
|
||||
fflush(stdout);
|
||||
{
|
||||
unsigned count=0u;
|
||||
evid mid[1000];
|
||||
dbr_float_t temp;
|
||||
|
||||
for(i=0; i<NELEMENTS(mid); i++){
|
||||
SEVCHK(ca_add_event(DBR_GR_FLOAT, chix4, null_event,
|
||||
(void *)0x55555555, &mid[i]),NULL);
|
||||
&count, &mid[i]),NULL);
|
||||
}
|
||||
/*
|
||||
* force all of the monitors requests to
|
||||
* complete
|
||||
*
|
||||
* NOTE: this hopefully demonstrates that when the
|
||||
* server is very busy with monitors the client
|
||||
* is still able to punch through with a request.
|
||||
*/
|
||||
SEVCHK(ca_get(DBR_FLOAT,chix4,&temp),NULL);
|
||||
SEVCHK(ca_pend_io(1000.0),NULL);
|
||||
@@ -450,7 +738,7 @@ int doacctst(char *pname)
|
||||
status = ca_clear_event(mid[i]);
|
||||
if(status != ECA_NORMAL){
|
||||
printf(
|
||||
"Clear of event %d %x failed because \"%s\"\n",
|
||||
"Clear of event %ld %x failed because \"%s\"\n",
|
||||
i,
|
||||
mid[i]->id,
|
||||
ca_message(status));
|
||||
@@ -472,7 +760,7 @@ int doacctst(char *pname)
|
||||
DBR_FLOAT,
|
||||
chix4,
|
||||
EVENT_ROUTINE,
|
||||
(void *)0xaaaaaaaa,
|
||||
&monCount,
|
||||
&monix);
|
||||
SEVCHK(status, NULL);
|
||||
SEVCHK(ca_clear_event(monix), NULL);
|
||||
@@ -480,7 +768,7 @@ int doacctst(char *pname)
|
||||
DBR_FLOAT,
|
||||
chix4,
|
||||
EVENT_ROUTINE,
|
||||
(void *)0xaaaaaaaa,
|
||||
&monCount,
|
||||
&monix);
|
||||
SEVCHK(status, NULL);
|
||||
}
|
||||
@@ -489,7 +777,7 @@ int doacctst(char *pname)
|
||||
DBR_FLOAT,
|
||||
chix4,
|
||||
EVENT_ROUTINE,
|
||||
(void *)0xaaaaaaaa,
|
||||
&monCount,
|
||||
&monix);
|
||||
SEVCHK(status, NULL);
|
||||
SEVCHK(ca_clear_event(monix), NULL);
|
||||
@@ -499,14 +787,14 @@ int doacctst(char *pname)
|
||||
DBR_FLOAT,
|
||||
chix3,
|
||||
EVENT_ROUTINE,
|
||||
(void *)0xaaaaaaaa,
|
||||
&monCount,
|
||||
&monix);
|
||||
SEVCHK(status, NULL);
|
||||
status = ca_add_event(
|
||||
DBR_FLOAT,
|
||||
chix3,
|
||||
write_event,
|
||||
(void *)0xaaaaaaaa,
|
||||
&monCount,
|
||||
&monix);
|
||||
SEVCHK(status, NULL);
|
||||
}
|
||||
@@ -519,7 +807,7 @@ int doacctst(char *pname)
|
||||
if (pfloat)
|
||||
for (i = 0; i < NUM; i++) {
|
||||
for (j = 0; j < NUM; j++)
|
||||
sprintf(&pstring[j][0], "%d", j + 100);
|
||||
sprintf(&pstring[j][0], "%ld", j + 100l);
|
||||
SEVCHK(ca_array_put(
|
||||
DBR_STRING,
|
||||
NUM,
|
||||
@@ -550,9 +838,77 @@ int doacctst(char *pname)
|
||||
|
||||
SEVCHK(ca_pend_io(4000.0), NULL);
|
||||
|
||||
#ifdef VMS
|
||||
lib$show_timer();
|
||||
#endif /*VMS*/
|
||||
/*
|
||||
* array test
|
||||
* o verifies that we can at least write and read back the same array
|
||||
* if multiple elements are present
|
||||
*/
|
||||
if (VALID_DB_REQ(chix1->type)) {
|
||||
if (ca_element_count(chix1)>1u && ca_read_access(chix1)) {
|
||||
dbr_float_t *pRF, *pWF, *pEF, *pT1, *pT2;
|
||||
|
||||
printf("Performing %u element array test...",
|
||||
ca_element_count(chix1));
|
||||
fflush(stdout);
|
||||
|
||||
pRF = (dbr_float_t *) calloc(ca_element_count(chix1),
|
||||
sizeof(*pRF));
|
||||
assert(pRF!=NULL);
|
||||
|
||||
pWF = (dbr_float_t *)calloc(ca_element_count(chix1),
|
||||
sizeof(*pWF));
|
||||
assert(pWF!=NULL);
|
||||
|
||||
/*
|
||||
* write some random numbers into the array
|
||||
*/
|
||||
if (ca_write_access(chix1)) {
|
||||
pT1 = pWF;
|
||||
pEF = &pWF[ca_element_count(chix1)];
|
||||
while(pT1<pEF) {
|
||||
*pT1++ = rand();
|
||||
}
|
||||
status = ca_array_put(
|
||||
DBR_FLOAT,
|
||||
ca_element_count(chix1),
|
||||
chix1,
|
||||
pWF);
|
||||
SEVCHK(status, "array write request failed");
|
||||
}
|
||||
|
||||
/*
|
||||
* read back the array
|
||||
*/
|
||||
if (ca_read_access(chix1)) {
|
||||
status = ca_array_get(
|
||||
DBR_FLOAT,
|
||||
ca_element_count(chix1),
|
||||
chix1,
|
||||
pRF);
|
||||
SEVCHK(status, "array read request failed");
|
||||
status = ca_pend_io(30.0);
|
||||
SEVCHK(status, "array read failed");
|
||||
}
|
||||
|
||||
/*
|
||||
* verify read response matches values written
|
||||
*/
|
||||
if (ca_read_access(chix1) && ca_write_access(chix1)) {
|
||||
pEF = &pRF[ca_element_count(chix1)];
|
||||
pT1 = pRF;
|
||||
pT2 = pWF;
|
||||
while (pT1<pEF) {
|
||||
assert (*pT1 == *pT2);
|
||||
pT1++;
|
||||
pT2++;
|
||||
}
|
||||
}
|
||||
printf("done\n");
|
||||
free(pRF);
|
||||
free(pWF);
|
||||
}
|
||||
}
|
||||
|
||||
for (i = 0; i < NUM; i++) {
|
||||
printf("Float value Returned from put/get %f\n", pfloat[i]);
|
||||
printf("Double value Returned from put/get %f\n", pdouble[i]);
|
||||
@@ -568,11 +924,6 @@ int doacctst(char *pname)
|
||||
SEVCHK(ca_modify_user_name("Willma"), NULL);
|
||||
SEVCHK(ca_modify_host_name("Bed Rock"), NULL);
|
||||
|
||||
if (conn_cb_count != 3){
|
||||
printf ("!!!! Connect cb count = %d expected = 3 !!!!\n",
|
||||
conn_cb_count);
|
||||
}
|
||||
|
||||
{
|
||||
TS_STAMP end_time;
|
||||
TS_STAMP start_time;
|
||||
@@ -591,7 +942,6 @@ int doacctst(char *pname)
|
||||
accuracy = 100.0*(delay-request)/request;
|
||||
printf("CA pend event delay accuracy = %f %%\n",
|
||||
accuracy);
|
||||
assert (abs(accuracy) < 10.0);
|
||||
}
|
||||
|
||||
{
|
||||
@@ -645,7 +995,11 @@ unsigned iterations)
|
||||
SEVCHK (status, NULL);
|
||||
status = ca_pend_io (100.0);
|
||||
SEVCHK (status, NULL);
|
||||
assert (fabs(fval-fretval) < epsilon);
|
||||
if (fabs(fval-fretval) > epsilon) {
|
||||
printf ("float test failed val written %f\n", fval);
|
||||
printf ("float test failed val read %f\n", fretval);
|
||||
assert(0);
|
||||
}
|
||||
|
||||
fval += increment;
|
||||
}
|
||||
@@ -672,7 +1026,11 @@ unsigned iterations)
|
||||
SEVCHK (status, NULL);
|
||||
status = ca_pend_io (100.0);
|
||||
SEVCHK (status, NULL);
|
||||
assert (fabs(fval-fretval) < epsilon);
|
||||
if (fabs(fval-fretval) > epsilon) {
|
||||
printf ("float test failed val written %f\n", fval);
|
||||
printf ("float test failed val read %f\n", fretval);
|
||||
assert(0);
|
||||
}
|
||||
|
||||
fval += increment;
|
||||
}
|
||||
@@ -680,10 +1038,14 @@ unsigned iterations)
|
||||
|
||||
void null_event(struct event_handler_args args)
|
||||
{
|
||||
static int i;
|
||||
dbr_double_t fval = 3.8;
|
||||
int status;
|
||||
unsigned *pInc = (unsigned *) args.usr;
|
||||
|
||||
if (pInc) {
|
||||
(*pInc)++;
|
||||
if (*pInc%1000u == 0u) {
|
||||
printf("1000 occurred\n");
|
||||
}
|
||||
}
|
||||
#if 0
|
||||
if (ca_state(args.chid)==cs_conn) {
|
||||
status = ca_put(DBR_FLOAT, args.chid, &fval);
|
||||
@@ -694,11 +1056,6 @@ void null_event(struct event_handler_args args)
|
||||
ca_name(args.chid));
|
||||
}
|
||||
#endif
|
||||
|
||||
if (i++ > 1000) {
|
||||
printf("1000 occurred\n");
|
||||
i = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -737,10 +1094,11 @@ void conn(struct connection_handler_args args)
|
||||
ca_get_callback(DBR_GR_FLOAT, args.chid, get_cb, NULL);
|
||||
}
|
||||
|
||||
void get_cb(struct event_handler_args args)
|
||||
void get_cb (struct event_handler_args args)
|
||||
{
|
||||
if(!(args.status & CA_M_SUCCESS)){
|
||||
printf("Get cb failed because \"%s\"\n", ca_message(args.status));
|
||||
printf("Get cb failed because \"%s\"\n",
|
||||
ca_message(args.status));
|
||||
}
|
||||
conn_cb_count++;
|
||||
}
|
||||
@@ -767,20 +1125,23 @@ void test_sync_groups(chid chix)
|
||||
|
||||
status = ca_sg_create(&gid2);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
multiple_sg_requests(chix, gid2);
|
||||
multiple_sg_requests(chix, gid1);
|
||||
status = ca_sg_test(gid2);
|
||||
SEVCHK(status, "SYNC GRP2");
|
||||
status = ca_sg_test(gid1);
|
||||
SEVCHK(status, "SYNC GRP1");
|
||||
status = ca_sg_block(gid1, 15.0);
|
||||
status = ca_sg_block(gid1, 500.0);
|
||||
SEVCHK(status, "SYNC GRP1");
|
||||
status = ca_sg_block(gid2, 15.0);
|
||||
status = ca_sg_block(gid2, 500.0);
|
||||
SEVCHK(status, "SYNC GRP2");
|
||||
|
||||
status = ca_sg_delete(gid2);
|
||||
SEVCHK(status, NULL);
|
||||
status = ca_sg_create(&gid2);
|
||||
SEVCHK(status, NULL);
|
||||
|
||||
multiple_sg_requests(chix, gid1);
|
||||
multiple_sg_requests(chix, gid2);
|
||||
status = ca_sg_block(gid1, 15.0);
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#include <envDefs.h>
|
||||
#include "envDefs.h"
|
||||
|
||||
void caSetupAddrList(
|
||||
ELLLIST *pList,
|
||||
@@ -15,16 +14,18 @@ void caPrintAddrList(ELLLIST *pList);
|
||||
void caDiscoverInterfaces(
|
||||
ELLLIST *pList,
|
||||
SOCKET socket,
|
||||
int port);
|
||||
int port,
|
||||
struct in_addr matchAddr);
|
||||
|
||||
void caAddConfiguredAddr(
|
||||
ELLLIST *pList,
|
||||
ENV_PARAM *pEnv,
|
||||
const ENV_PARAM *pEnv,
|
||||
SOCKET socket,
|
||||
int port);
|
||||
|
||||
int local_addr(SOCKET socket, struct sockaddr_in *plcladdr);
|
||||
unsigned short caFetchPortConfig(ENV_PARAM *pEnv, unsigned short defaultPort);
|
||||
unsigned short caFetchPortConfig(const ENV_PARAM *pEnv,
|
||||
unsigned short defaultPort);
|
||||
|
||||
typedef union ca_addr {
|
||||
struct sockaddr_in in;
|
||||
|
||||
@@ -52,6 +52,7 @@ int cac_select_io(struct timeval *ptimeout, int flags)
|
||||
unsigned long freespace;
|
||||
SOCKET maxfd;
|
||||
caFDInfo *pfdi;
|
||||
int ioPending;
|
||||
|
||||
LOCK;
|
||||
pfdi = (caFDInfo *) ellGet(&ca_static->fdInfoFreeList);
|
||||
@@ -70,50 +71,108 @@ int cac_select_io(struct timeval *ptimeout, int flags)
|
||||
FD_ZERO (&pfdi->writeMask);
|
||||
|
||||
maxfd = 0;
|
||||
ioPending = FALSE;
|
||||
for( piiu = (IIU *) iiuList.node.next;
|
||||
piiu;
|
||||
piiu = (IIU *) piiu->node.next) {
|
||||
|
||||
if (!piiu->conn_up) {
|
||||
if (piiu->state==iiu_disconnected) {
|
||||
continue;
|
||||
}
|
||||
|
||||
#ifdef WIN32
|
||||
/* Under WIN32, FD_SETSIZE is the number of sockets,
|
||||
* not the max. file descriptor value that you may select() !
|
||||
*
|
||||
* Of course it's not allowed to look into fd_count,
|
||||
* but what shall we do? -kuk-
|
||||
*/
|
||||
|
||||
if (pfdi->readMask.fd_count >= FD_SETSIZE)
|
||||
{
|
||||
ca_printf(
|
||||
"%s.%d: no room for fd %d in fd_set (FD_SETSIZE=%d)\n",
|
||||
__FILE__, __LINE__, piiu->sock_chan, FD_SETSIZE);
|
||||
continue;
|
||||
}
|
||||
|
||||
#else
|
||||
if (piiu->sock_chan>=FD_SETSIZE)
|
||||
{
|
||||
ca_printf(
|
||||
"%s.%d: file number %d > FD_SETSIZE=%d ignored\n",
|
||||
__FILE__, __LINE__, piiu->sock_chan, FD_SETSIZE);
|
||||
continue;
|
||||
}
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Dont bother receiving if we have insufficient
|
||||
* space for the maximum UDP message
|
||||
* space for the maximum UDP message, or space
|
||||
* for one TCP byte.
|
||||
*/
|
||||
if (flags&CA_DO_RECVS) {
|
||||
freespace = cacRingBufferWriteSize (&piiu->recv, TRUE);
|
||||
if (freespace>=piiu->minfreespace) {
|
||||
maxfd = max (maxfd,piiu->sock_chan);
|
||||
FD_SET (piiu->sock_chan, &pfdi->readMask);
|
||||
piiu->recvPending = TRUE;
|
||||
ioPending = TRUE;
|
||||
}
|
||||
else {
|
||||
piiu->recvPending = FALSE;
|
||||
}
|
||||
}
|
||||
else {
|
||||
piiu->recvPending = FALSE;
|
||||
}
|
||||
|
||||
if (flags&CA_DO_SENDS) {
|
||||
if (cacRingBufferReadSize(&piiu->send, FALSE)>0) {
|
||||
maxfd = max (maxfd,piiu->sock_chan);
|
||||
if (flags&CA_DO_SENDS || piiu->pushPending) {
|
||||
if (piiu->state==iiu_connecting) {
|
||||
FD_SET (piiu->sock_chan, &pfdi->writeMask);
|
||||
ioPending = TRUE;
|
||||
}
|
||||
else {
|
||||
if (cacRingBufferReadSize(&piiu->send, FALSE)>0) {
|
||||
maxfd = max (maxfd,piiu->sock_chan);
|
||||
FD_SET (piiu->sock_chan, &pfdi->writeMask);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
UNLOCK;
|
||||
|
||||
# if defined(__hpux)
|
||||
/*
|
||||
* win32 requires this (others will
|
||||
* run faster with this installed)
|
||||
*/
|
||||
if ( !ioPending &&
|
||||
ptimeout->tv_sec==0 &&
|
||||
ptimeout->tv_usec==0 ) {
|
||||
status = 0;
|
||||
}
|
||||
else {
|
||||
# if defined(__hpux)
|
||||
# define HPCAST (int *)
|
||||
# else
|
||||
# define HPCAST
|
||||
# endif
|
||||
status = select(
|
||||
maxfd+1,
|
||||
(int *)&pfdi->readMask,
|
||||
(int *)&pfdi->writeMask,
|
||||
(int *)NULL,
|
||||
HPCAST &pfdi->readMask,
|
||||
HPCAST &pfdi->writeMask,
|
||||
HPCAST NULL,
|
||||
&autoTimeOut);
|
||||
# else
|
||||
status = select(
|
||||
maxfd+1,
|
||||
&pfdi->readMask,
|
||||
&pfdi->writeMask,
|
||||
NULL,
|
||||
&autoTimeOut);
|
||||
# endif
|
||||
if (status<0) {
|
||||
int errnoCpy = SOCKERRNO;
|
||||
|
||||
if (errnoCpy!=EINTR) {
|
||||
ca_printf (
|
||||
"CAC: unexpected select fail: %s\n",
|
||||
strerror(SOCKERRNO));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* get a new time stamp if we have been waiting
|
||||
@@ -123,34 +182,46 @@ int cac_select_io(struct timeval *ptimeout, int flags)
|
||||
cac_gettimeval (&ca_static->currentTime);
|
||||
}
|
||||
|
||||
if (status<0) {
|
||||
if (MYERRNO == EINTR) {
|
||||
}
|
||||
else if (MYERRNO == EWOULDBLOCK) {
|
||||
ca_printf("CAC: blocked at select ?\n");
|
||||
}
|
||||
else if (MYERRNO == ESRCH) {
|
||||
}
|
||||
else {
|
||||
ca_printf (
|
||||
"CAC: unexpected select fail: %s\n",
|
||||
strerror(MYERRNO));
|
||||
}
|
||||
}
|
||||
|
||||
LOCK;
|
||||
if (status>0) {
|
||||
/*
|
||||
* must run through the IIU list even if no IO is pending
|
||||
* if any of the IOCs are in flow control (so that an exit
|
||||
* flow control msg can be sent to each of them that are)
|
||||
*/
|
||||
if (status>0 ||
|
||||
(ca_static->ca_number_iiu_in_fc>0u&&status>=0) ) {
|
||||
for ( piiu = (IIU *) iiuList.node.next;
|
||||
piiu;
|
||||
piiu = (IIU *) piiu->node.next) {
|
||||
|
||||
if (!piiu->conn_up) {
|
||||
if (piiu->state==iiu_disconnected) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (FD_ISSET(piiu->sock_chan,&pfdi->readMask)) {
|
||||
(*piiu->recvBytes)(piiu);
|
||||
/*
|
||||
* if we were not blocking and there is a
|
||||
* message present then start to suspect that
|
||||
* we are getting behind
|
||||
*/
|
||||
if (piiu->sock_proto==IPPROTO_TCP) {
|
||||
if (ptimeout->tv_sec==0
|
||||
|| ptimeout->tv_usec==0) {
|
||||
flow_control_on(piiu);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (piiu->recvPending) {
|
||||
/*
|
||||
* if we are looking for incoming messages
|
||||
* and there are none then we are certain that
|
||||
* we are not getting behind
|
||||
*/
|
||||
if (piiu->sock_proto==IPPROTO_TCP) {
|
||||
flow_control_off(piiu);
|
||||
}
|
||||
}
|
||||
|
||||
if (FD_ISSET(piiu->sock_chan,&pfdi->writeMask)) {
|
||||
(*piiu->sendBytes)(piiu);
|
||||
|
||||
59
src/ca/ca.def
Normal file
59
src/ca/ca.def
Normal file
@@ -0,0 +1,59 @@
|
||||
LIBRARY ca
|
||||
|
||||
VERSION 13
|
||||
CODE PRELOAD MOVEABLE DISCARDABLE
|
||||
DATA PRELOAD SINGLE
|
||||
|
||||
|
||||
EXPORTS
|
||||
|
||||
ca_version
|
||||
ca_test_event
|
||||
ca_task_initialize
|
||||
ca_task_exit
|
||||
ca_search_and_connect
|
||||
ca_build_and_connect
|
||||
ca_change_connection_event
|
||||
ca_replace_access_rights_event
|
||||
ca_add_exception_event
|
||||
ca_clear_channel
|
||||
ca_array_put
|
||||
ca_array_put_callback
|
||||
ca_array_get
|
||||
ca_array_get_callback
|
||||
ca_add_masked_array_event
|
||||
ca_clear_event
|
||||
ca_pend
|
||||
ca_repeater
|
||||
ca_test_io
|
||||
ca_flush_io
|
||||
ca_signal
|
||||
ca_signal_with_file_and_lineno
|
||||
ca_host_name_function
|
||||
ca_add_fd_registration
|
||||
ca_sg_create
|
||||
ca_sg_delete
|
||||
ca_sg_block
|
||||
ca_sg_test
|
||||
ca_sg_reset
|
||||
ca_sg_array_get
|
||||
ca_sg_array_put
|
||||
ca_modify_user_name
|
||||
ca_modify_host_name
|
||||
ca_v42_ok
|
||||
caFetchPortConfig
|
||||
caAddConfiguredAddr
|
||||
caDiscoverInterfaces
|
||||
ca_printf
|
||||
ca_message_text
|
||||
ca_message
|
||||
cac_gettimeval
|
||||
dbr_value_size
|
||||
dbr_value_offset
|
||||
dbf_text
|
||||
dbf_text_invalid
|
||||
dbf_text_dim
|
||||
dbr_text
|
||||
dbr_text_invalid
|
||||
dbr_text_dim
|
||||
dbr_size
|
||||
248
src/ca/caProto.h
Normal file
248
src/ca/caProto.h
Normal file
@@ -0,0 +1,248 @@
|
||||
/*
|
||||
* $Id$
|
||||
*
|
||||
* Author Jeffrey O. Hill
|
||||
* johill@lanl.gov
|
||||
* 505 665 1831
|
||||
*
|
||||
* Experimental Physics and Industrial Control System (EPICS)
|
||||
*
|
||||
* Copyright 1991, the Regents of the University of California,
|
||||
* and the University of Chicago Board of Governors.
|
||||
*
|
||||
* This software was produced under U.S. Government contracts:
|
||||
* (W-7405-ENG-36) at the Los Alamos National Laboratory,
|
||||
* and (W-31-109-ENG-38) at Argonne National Laboratory.
|
||||
*
|
||||
* Initial development by:
|
||||
* The Controls and Automation Group (AT-8)
|
||||
* Ground Test Accelerator
|
||||
* Accelerator Technology Division
|
||||
* Los Alamos National Laboratory
|
||||
*
|
||||
* Co-developed with
|
||||
* The Controls and Computing Group
|
||||
* Accelerator Systems Division
|
||||
* Advanced Photon Source
|
||||
* Argonne National Laboratory
|
||||
*
|
||||
*
|
||||
* History
|
||||
* $Log$
|
||||
* Revision 1.2 1996/09/16 16:32:49 jhill
|
||||
* added CA version string
|
||||
*
|
||||
* Revision 1.1 1996/06/20 18:02:22 jhill
|
||||
* installed into CVS
|
||||
*
|
||||
* Revision 1.1.1.1 1996/06/20 00:28:15 jhill
|
||||
* ca server installation
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef __CAPROTO__
|
||||
/* $Id$ */
|
||||
/*
|
||||
* History
|
||||
* .01 01xx90 joh removed status field in favor of a independent m_cmmd-
|
||||
* saves space on every successful operation
|
||||
*
|
||||
* .02 041390 joh moved server ports to above IPPORT_USERRESERVED
|
||||
* see in.h
|
||||
*
|
||||
* .03 060391 joh Bumped protocol version to 4 to support changes for
|
||||
* SPARC alignment in db_access.h
|
||||
*
|
||||
* .04 071291 joh New command added - claim channel in use block
|
||||
*
|
||||
* .05 011294 joh New command added - write notify
|
||||
*
|
||||
* .06 020194 joh New command added for CA V4.1 - client name
|
||||
*
|
||||
* .07 041194 joh New command added for CA V4.2 - access rights
|
||||
*
|
||||
* .08 050594 joh New command added for CA V4.3 - echo request
|
||||
*
|
||||
* .09 050594 joh New command added for CA V4.3 - repeater fanout regis
|
||||
*
|
||||
* .10 050594 joh New command added for CA V4.3 - wakeup the server
|
||||
* $Log$
|
||||
* Revision 1.2 1996/09/16 16:32:49 jhill
|
||||
* added CA version string
|
||||
*
|
||||
* Revision 1.1 1996/06/20 18:02:22 jhill
|
||||
* installed into CVS
|
||||
*
|
||||
* Revision 1.1.1.1 1996/06/20 00:28:15 jhill
|
||||
* ca server installation
|
||||
*
|
||||
*
|
||||
*/
|
||||
|
||||
#define __CAPROTO__
|
||||
|
||||
/*
|
||||
* CA protocol number
|
||||
* TCP/UDP port number (bumped each major protocol change)
|
||||
*/
|
||||
#define CA_PROTOCOL_VERSION 4u
|
||||
#define CA_MINOR_VERSION 7u
|
||||
#define CA_VERSION_STRING "4.7"
|
||||
#define CA_UKN_MINOR_VERSION 0u /* unknown minor version */
|
||||
#if CA_PROTOCOL_VERSION == 4u
|
||||
#define CA_V41(MAJOR,MINOR) ((MINOR)>=1u)
|
||||
#define CA_V42(MAJOR,MINOR) ((MINOR)>=2u)
|
||||
#define CA_V43(MAJOR,MINOR) ((MINOR)>=3u)
|
||||
#define CA_V44(MAJOR,MINOR) ((MINOR)>=4u)
|
||||
#define CA_V45(MAJOR,MINOR) ((MINOR)>=5u)
|
||||
#define CA_V46(MAJOR,MINOR) ((MINOR)>=6u)
|
||||
#define CA_V47(MAJOR,MINOR) ((MINOR)>=7u)
|
||||
#elif CA_PROTOCOL_VERSION > 4u
|
||||
#define CA_V41(MAJOR,MINOR) ( 1u )
|
||||
#define CA_V42(MAJOR,MINOR) ( 1u )
|
||||
#define CA_V43(MAJOR,MINOR) ( 1u )
|
||||
#define CA_V44(MAJOR,MINOR) ( 1u )
|
||||
#define CA_V45(MAJOR,MINOR) ( 1u )
|
||||
#define CA_V46(MAJOR,MINOR) ( 1u )
|
||||
#define CA_V47(MAJOR,MINOR) ( 1u )
|
||||
#else
|
||||
#define CA_V41(MAJOR,MINOR) ( 0u )
|
||||
#define CA_V42(MAJOR,MINOR) ( 0u )
|
||||
#define CA_V43(MAJOR,MINOR) ( 0u )
|
||||
#define CA_V44(MAJOR,MINOR) ( 0u )
|
||||
#define CA_V45(MAJOR,MINOR) ( 0u )
|
||||
#define CA_V46(MAJOR,MINOR) ( 0u )
|
||||
#define CA_V47(MAJOR,MINOR) ( 0u )
|
||||
#endif
|
||||
|
||||
/*
|
||||
* NOTE: These port numbers are only used if the CA repeater and
|
||||
* CA server port numbers cant be obtained from the EPICS
|
||||
* environment variables "EPICS_CA_REPEATER_PORT" and
|
||||
* "EPICS_CA_SERVER_PORT"
|
||||
*/
|
||||
#define CA_PORT_BASE IPPORT_USERRESERVED + 56U
|
||||
#define CA_SERVER_PORT (CA_PORT_BASE+CA_PROTOCOL_VERSION*2u)
|
||||
#define CA_REPEATER_PORT (CA_PORT_BASE+CA_PROTOCOL_VERSION*2u+1u)
|
||||
|
||||
#define MAX_UDP 1024u
|
||||
#define MAX_TCP (MAX_UDP*16u) /* so waveforms fit */
|
||||
#define MAX_MSG_SIZE (MAX_TCP) /* the larger of tcp and udp max */
|
||||
|
||||
/*
|
||||
* architecture independent types
|
||||
*
|
||||
* (so far this works on all archs we have ported to)
|
||||
*/
|
||||
typedef unsigned short ca_uint16_t;
|
||||
typedef unsigned int ca_uint32_t;
|
||||
typedef float ca_float32_t;
|
||||
typedef ca_uint32_t caResId;
|
||||
|
||||
/* values for m_cmmd */
|
||||
#define CA_PROTO_NOOP 0u /* do nothing, but verify TCP */
|
||||
#define CA_PROTO_EVENT_ADD 1u /* add an event */
|
||||
#define CA_PROTO_EVENT_CANCEL 2u /* cancel an event */
|
||||
#define CA_PROTO_READ 3u /* read and return a channel value*/
|
||||
#define CA_PROTO_WRITE 4u /* write a channel value */
|
||||
#define CA_PROTO_SNAPSHOT 5u /* snapshot of the system */
|
||||
#define CA_PROTO_SEARCH 6u /* IOC channel search */
|
||||
#define CA_PROTO_BUILD 7u /* build - obsolete */
|
||||
#define CA_PROTO_EVENTS_OFF 8u /* flow control */
|
||||
#define CA_PROTO_EVENTS_ON 9u /* flow control */
|
||||
#define CA_PROTO_READ_SYNC 10u /* purge old reads */
|
||||
#define CA_PROTO_ERROR 11u /* an operation failed */
|
||||
#define CA_PROTO_CLEAR_CHANNEL 12u /* free chan resources */
|
||||
#define CA_PROTO_RSRV_IS_UP 13u /* CA server has joined the net */
|
||||
#define CA_PROTO_NOT_FOUND 14u /* channel not found */
|
||||
#define CA_PROTO_READ_NOTIFY 15u /* add a one shot event */
|
||||
#define CA_PROTO_READ_BUILD 16u /* read and build - obsolete */
|
||||
#define REPEATER_CONFIRM 17u /* registration confirmation */
|
||||
#define CA_PROTO_CLAIM_CIU 18u /* client claims resource in server */
|
||||
#define CA_PROTO_WRITE_NOTIFY 19u /* notify after write chan value */
|
||||
#define CA_PROTO_CLIENT_NAME 20u /* CA V4.1 identify client */
|
||||
#define CA_PROTO_HOST_NAME 21u /* CA V4.1 identify client */
|
||||
#define CA_PROTO_ACCESS_RIGHTS 22u /* CA V4.2 asynch access rights chg */
|
||||
#define CA_PROTO_ECHO 23u /* CA V4.3 connection verify */
|
||||
#define REPEATER_REGISTER 24u /* registr for repeater fan out */
|
||||
#define CA_PROTO_SIGNAL 25u /* knock the server out of select */
|
||||
#define CA_PROTO_CLAIM_CIU_FAILED 26u /* unable to create chan resource in server */
|
||||
#define CA_PROTO_SERVER_DISCONN 27u /* server deletes PV (or channel) */
|
||||
|
||||
#define CA_PROTO_LAST_CMMD CA_PROTO_CLAIM_CIU_FAILED
|
||||
|
||||
/*
|
||||
* for use with search and not_found (if search fails and
|
||||
* its not a broadcast tell the client to look elesewhere)
|
||||
*/
|
||||
#define DOREPLY 10u
|
||||
#define DONTREPLY 5u
|
||||
|
||||
/* size of object in bytes rounded up to nearest oct word */
|
||||
#define OCT_ROUND(A) ((((unsigned long)(A))+7u)>>3u)
|
||||
#define OCT_SIZEOF(A) (OCT_ROUND(sizeof(A)))
|
||||
|
||||
/* size of object in bytes rounded up to nearest long word */
|
||||
#define QUAD_ROUND(A) (((unsigned long)(A))+3u)>>2u)
|
||||
#define QUAD_SIZEOF(A) (QUAD_ROUND(sizeof(A)))
|
||||
|
||||
/* size of object in bytes rounded up to nearest short word */
|
||||
#define BI_ROUND(A) ((((unsigned long)(A))+1u)>>1u)
|
||||
#define BI_SIZEOF(A) (BI_ROUND(sizeof(A)))
|
||||
|
||||
/*
|
||||
* For communicating access rights to the clients
|
||||
*
|
||||
* (placed in m_available hdr field of CA_PROTO_ACCESS_RIGHTS cmmd
|
||||
*/
|
||||
#define CA_PROTO_ACCESS_RIGHT_READ (1u<<0u)
|
||||
#define CA_PROTO_ACCESS_RIGHT_WRITE (1u<<1u)
|
||||
|
||||
/*
|
||||
* All structures passed in the protocol must have individual
|
||||
* fields aligned on natural boundaries.
|
||||
*
|
||||
* NOTE: all structures declared in this file must have a
|
||||
* byte count which is evenly divisible by 8 matching
|
||||
* the largest atomic data type in db_access.h.
|
||||
*/
|
||||
#define CA_MESSAGE_ALIGN(A) (OCT_ROUND(A)<<3u)
|
||||
|
||||
/*
|
||||
* the common part of each message sent/recv by the
|
||||
* CA server.
|
||||
*/
|
||||
typedef struct ca_hdr {
|
||||
ca_uint16_t m_cmmd; /* operation to be performed */
|
||||
ca_uint16_t m_postsize; /* size of message extension */
|
||||
ca_uint16_t m_type; /* operation data type */
|
||||
ca_uint16_t m_count; /* operation data count */
|
||||
ca_uint32_t m_cid; /* channel identifier */
|
||||
ca_uint32_t m_available; /* undefined message location for use
|
||||
* by client processes */
|
||||
}caHdr;
|
||||
|
||||
/*
|
||||
* for monitor (event) message extension
|
||||
*/
|
||||
struct mon_info{
|
||||
ca_float32_t m_lval; /* low delta */
|
||||
ca_float32_t m_hval; /* high delta */
|
||||
ca_float32_t m_toval; /* period btween samples */
|
||||
ca_uint16_t m_mask; /* event select mask */
|
||||
ca_uint16_t m_pad; /* extend to 32 bits */
|
||||
};
|
||||
|
||||
struct monops { /* monitor req opi to ioc */
|
||||
caHdr m_header;
|
||||
struct mon_info m_info;
|
||||
};
|
||||
|
||||
/*
|
||||
* PV names greater than this length assumed to be invalid
|
||||
*/
|
||||
#define unreasonablePVNameSize 500u
|
||||
|
||||
#endif /* __CAPROTO__ */
|
||||
|
||||
@@ -19,11 +19,12 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#include <iocinf.h>
|
||||
#include "iocinf.h"
|
||||
|
||||
main()
|
||||
int main()
|
||||
{
|
||||
ca_repeater ();
|
||||
assert (0);
|
||||
return (0);
|
||||
}
|
||||
|
||||
|
||||
1120
src/ca/cadef.h
1120
src/ca/cadef.h
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user