Compare commits
332 Commits
PSI-7.0.5.
...
April2022
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1c3aa01846 | ||
|
|
191ff137f1 | ||
|
|
156945c458 | ||
|
|
31fcb77412 | ||
|
|
631f514c7c | ||
|
|
6e496e80d1 | ||
|
|
2256c979b0 | ||
|
|
7529577e3b | ||
|
|
1c96fd1cb4 | ||
|
|
8d078a0c7d | ||
|
|
8a4051964f | ||
|
|
5ef537684e | ||
|
|
c1dcd728d7 | ||
|
|
78684e0e57 | ||
|
|
f57acd2c10 | ||
|
|
ba5ade1852 | ||
|
|
8a0fc0373b | ||
|
|
4340e76445 | ||
|
|
ce910f52c3 | ||
|
|
219ab33625 | ||
|
|
e9e576f4bb | ||
|
|
5bb1138b87 | ||
|
|
955dcfc7b5 | ||
|
|
07a371703f | ||
|
|
1950a8240c | ||
|
|
a662cae239 | ||
|
|
2b3c6f2e26 | ||
|
|
b1d9c57101 | ||
|
|
446e0d4af8 | ||
|
|
2f51653a9e | ||
|
|
b9899213d4 | ||
|
|
0c12b02d4f | ||
|
|
ac12ccad38 | ||
|
|
8fdaa13c97 | ||
|
|
29fa0621d7 | ||
|
|
465920fcf1 | ||
|
|
b9e9537376 | ||
|
|
fb46786ccb | ||
|
|
abfe30ef13 | ||
|
|
9895ee8b53 | ||
|
|
78b7441383 | ||
|
|
48d070d29d | ||
|
|
a5864e152b | ||
|
|
b6da758275 | ||
|
|
59ee7b32bc | ||
|
|
3f43b0bb8a | ||
|
|
e867b0a095 | ||
|
|
dabcf893f7 | ||
|
|
bf2cdc9f61 | ||
|
|
2ce583ffff | ||
|
|
98aac49a8b | ||
|
|
66ff5a7bb6 | ||
|
|
23e55bf247 | ||
|
|
687dad47da | ||
|
|
7d2ca62a78 | ||
|
|
3d09106b51 | ||
|
|
5cddcea829 | ||
|
|
9b69e63a69 | ||
|
|
422513990e | ||
|
|
3313860691 | ||
|
|
2b8eb97b79 | ||
|
|
9842bd1b20 | ||
|
|
e7ea81c7a2 | ||
|
|
c528948f45 | ||
|
|
00e9ecf7b5 | ||
|
|
65b34874bd | ||
|
|
939d84f31a | ||
|
|
fe4050b8c9 | ||
|
|
1fd7190cf5 | ||
|
|
8e2f78caf5 | ||
|
|
33ffabaa93 | ||
|
|
9c1340d7d5 | ||
|
|
420fb45fbc | ||
|
|
7ce69155a9 | ||
|
|
f6e8a75026 | ||
|
|
88079c9107 | ||
|
|
82ec539e49 | ||
|
|
e34b6c5c0c | ||
| 42d06d6a38 | |||
|
|
21e7e4ddfb | ||
|
|
4efa937429 | ||
|
|
a0ab5aa4a3 | ||
|
|
7c6d049698 | ||
|
|
8175cc8e64 | ||
|
|
72626cd5dd | ||
|
|
8beb7bd2c8 | ||
|
|
cb8c7998b6 | ||
|
|
7c991f3f2a | ||
|
|
32d76623f2 | ||
|
|
540a5c87d9 | ||
|
|
a667cc7aa4 | ||
|
|
78d2f20fa8 | ||
|
|
3091f7c56f | ||
|
|
ec87b2a867 | ||
|
|
7a6aa3edd1 | ||
|
|
16c3202992 | ||
| 8e11406fc6 | |||
|
|
967846b950 | ||
|
|
e5aece682e | ||
|
|
f801ca0501 | ||
|
|
9363052956 | ||
|
|
f5cb3cf8f6 | ||
|
|
5912445991 | ||
|
|
67bf1a72e7 | ||
|
|
ba3550c287 | ||
|
|
c0cfeb249a | ||
|
|
710c50b5ed | ||
|
|
8e7d3e9216 | ||
|
|
e2d3b9a246 | ||
|
|
5feb18b0b0 | ||
|
|
7ca25d3c88 | ||
|
|
dff72029f1 | ||
|
|
f2ac69604d | ||
|
|
f92b4b456a | ||
|
|
67fcd65656 | ||
|
|
3be67aca3c | ||
|
|
ebf4a155d7 | ||
|
|
28531b0dbb | ||
|
|
5c3ecf9054 | ||
|
|
c7e2acb1a6 | ||
|
|
51c1a33687 | ||
|
|
e8c5748f89 | ||
|
|
4dad8ca503 | ||
| c36485ab2e | |||
|
|
1cacd058cd | ||
|
|
ce876d6f11 | ||
|
|
cb5f68994f | ||
| ac6eb5e212 | |||
| b5265ed853 | |||
|
|
983f77e119 | ||
|
|
ca2ea14082 | ||
|
|
b35064d26c | ||
|
|
256babf961 | ||
|
|
b471e8388f | ||
|
|
f825136f65 | ||
|
|
3c329c1b48 | ||
|
|
6c7214ee06 | ||
|
|
b42a145824 | ||
|
|
c98e5085c3 | ||
|
|
5ccc11569b | ||
|
|
dcee3b2c33 | ||
|
|
b5a3e4aea5 | ||
|
|
0f90793d17 | ||
|
|
a17c30e51f | ||
|
|
462916f9e4 | ||
|
|
6d96ea06d0 | ||
|
|
5e61f7e499 | ||
|
|
ead24c4fd6 | ||
|
|
f3da6e9464 | ||
|
|
8e468da4cc | ||
|
|
1b825da9ec | ||
|
|
c6247329ab | ||
|
|
c5c6facc3e | ||
|
|
57fab5104f | ||
|
|
c7eb41abbc | ||
|
|
ac0693f2f2 | ||
|
|
e8512ceba0 | ||
|
|
e4ce0ec255 | ||
|
|
e3e9d9bb37 | ||
|
|
75caf83194 | ||
|
|
38c146d89d | ||
|
|
457febb3a6 | ||
| b777233efb | |||
|
|
08b741ed05 | ||
|
|
a9457fc02b | ||
|
|
f8e720da28 | ||
| 555e671246 | |||
|
|
5f1eb1dd9e | ||
|
|
8adf03f74a | ||
|
|
379a68b93c | ||
|
|
1b8a1ebd07 | ||
|
|
de3cdcef39 | ||
|
|
315fb3df69 | ||
|
|
fa9fb0a3ca | ||
|
|
857527280b | ||
|
|
d1ddbad053 | ||
|
|
2952d114f5 | ||
|
|
1db35d9edc | ||
|
|
cc3e1039ce | ||
|
|
e20502fb4c | ||
|
|
9cca12936d | ||
|
|
28f3239b32 | ||
|
|
6a9d92f8f4 | ||
|
|
b55c019f10 | ||
|
|
31584e52be | ||
|
|
dc03d519fb | ||
|
|
2eb5af3167 | ||
|
|
f02884d996 | ||
|
|
71a1ff1292 | ||
|
|
c07ebcee5c | ||
|
|
b00130493f | ||
|
|
4c63cb79dd | ||
|
|
67bbc0fa21 | ||
|
|
58a9767aa4 | ||
|
|
54d40a398a | ||
|
|
cbab8daae0 | ||
|
|
e3d04e9cd8 | ||
|
|
cde7d3d254 | ||
|
|
e2a9678b15 | ||
|
|
e2313d0c58 | ||
|
|
e812323792 | ||
|
|
396624fefc | ||
|
|
f727d16b0d | ||
|
|
348d1bba17 | ||
|
|
0edf986c31 | ||
|
|
3f4432b7bd | ||
|
|
f69b938401 | ||
|
|
bd3ecf1cbc | ||
|
|
b94afaa045 | ||
|
|
1ceb26eeb8 | ||
|
|
633859d7ab | ||
|
|
aad3476c04 | ||
|
|
12f1818b39 | ||
|
|
4ca765d813 | ||
|
|
5143c71a43 | ||
|
|
a12684e7ad | ||
|
|
d19586fdfd | ||
|
|
892a361de7 | ||
|
|
235f8ed2fb | ||
|
|
91b2b65c68 | ||
|
|
614961da17 | ||
|
|
dd09afc4e8 | ||
|
|
417821ddc0 | ||
|
|
0f428ea334 | ||
|
|
c829ca39d8 | ||
|
|
51cdfe9e8e | ||
|
|
6ed6dc11bb | ||
|
|
0d2228b536 | ||
|
|
3eeebb74cd | ||
|
|
1bd041745b | ||
|
|
fa069b0845 | ||
|
|
e5aab6561c | ||
|
|
c78db512f2 | ||
|
|
1c6b02b9be | ||
|
|
f9ea6a5bff | ||
|
|
fc4379595e | ||
|
|
af2d4de942 | ||
|
|
3874c1bcfc | ||
|
|
29e9843056 | ||
|
|
c140a0a804 | ||
|
|
5f94ab6d9f | ||
|
|
c6af4a245d | ||
|
|
01cc99ac87 | ||
|
|
c0886b3037 | ||
|
|
31ade32004 | ||
|
|
c606048e57 | ||
|
|
f69ff5afde | ||
|
|
102e30eaa9 | ||
|
|
75063a69ec | ||
|
|
f34d744f5f | ||
|
|
8e50b3109a | ||
|
|
79242da515 | ||
|
|
11fedecefc | ||
|
|
17b0c69dd6 | ||
|
|
e2d37bc70d | ||
|
|
45907d6553 | ||
|
|
317828fd74 | ||
|
|
35ec367eac | ||
|
|
c4944b5357 | ||
|
|
2c29dd0c7e | ||
|
|
9a8e56d83e | ||
|
|
cd6e642eee | ||
|
|
25b9655f60 | ||
|
|
f5eb5033f2 | ||
|
|
633055aa56 | ||
|
|
a1d073955f | ||
|
|
dc1bf9106e | ||
|
|
74fa27d316 | ||
|
|
3bdfb9ec45 | ||
|
|
a934570cce | ||
|
|
6965f86298 | ||
|
|
af88e9f6c6 | ||
|
|
a309912c8b | ||
|
|
b0dfb76871 | ||
|
|
125fc08993 | ||
|
|
e38a8b15d4 | ||
|
|
c628db82ac | ||
|
|
4755d6c7f0 | ||
|
|
3fd9ffc995 | ||
|
|
a8262573f5 | ||
|
|
e4b17bdab5 | ||
|
|
ea40041b45 | ||
|
|
6bf26782a0 | ||
|
|
c523fe7a3e | ||
|
|
ce264306b8 | ||
|
|
188f46f74b | ||
|
|
518ac1d7c1 | ||
|
|
0adaa7fcf1 | ||
|
|
d21c6d5545 | ||
|
|
5c792687a6 | ||
|
|
347d24a2a8 | ||
|
|
cd0e6a4f9a | ||
|
|
8d7c98aac4 | ||
|
|
54c91f1458 | ||
|
|
9cac0b6410 | ||
|
|
a5604ccbf0 | ||
|
|
e2927417c3 | ||
|
|
277e9050a8 | ||
|
|
fe3e2c60a5 | ||
|
|
e4885d2446 | ||
|
|
08b7dd1208 | ||
|
|
25a072540f | ||
|
|
399c63ec5c | ||
|
|
341ca91229 | ||
|
|
97e6f0a53d | ||
|
|
54f2d8887f | ||
|
|
4127f6efec | ||
|
|
97ce6aecc7 | ||
|
|
a718357211 | ||
|
|
9f387b9675 | ||
|
|
8ef4d29c48 | ||
|
|
1b6b32e9ca | ||
|
|
761ebff6d7 | ||
|
|
f685b0edb4 | ||
|
|
14140acd78 | ||
|
|
9c01c55f08 | ||
|
|
ec94351a5e | ||
|
|
708cecfadc | ||
|
|
b2c4f0d015 | ||
|
|
8b766f767f | ||
|
|
629f958427 | ||
|
|
bb860ae001 | ||
|
|
75548c95d1 | ||
|
|
8a2f336f8f | ||
|
|
4d69b7621d | ||
|
|
2b28d97063 | ||
|
|
5a5345d44a | ||
|
|
10aff42da6 | ||
|
|
8366770d72 | ||
|
|
e2e606d53f | ||
|
|
bba7d8c8f8 | ||
|
|
077b41e6c1 |
@@ -31,6 +31,8 @@ skip_commits:
|
||||
- 'documentation/*'
|
||||
- 'startup/*'
|
||||
- '.github/*'
|
||||
- '.tools/*'
|
||||
- '.gitattributes'
|
||||
- '**/*.html'
|
||||
- '**/*.md'
|
||||
|
||||
@@ -64,6 +66,7 @@ environment:
|
||||
- CMP: vs2012
|
||||
- CMP: vs2010
|
||||
- CMP: gcc
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
|
||||
# Platform: processor architecture
|
||||
platform:
|
||||
@@ -104,11 +107,11 @@ build_script:
|
||||
|
||||
test_script:
|
||||
- cmd: python -m ci_core_dumper install
|
||||
- cmd: python .ci/cue.py test
|
||||
- cmd: python .ci/cue.py -T 20M test
|
||||
|
||||
on_finish:
|
||||
- ps: Get-ChildItem *.tap -Recurse -Force | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
|
||||
- cmd: python .ci/cue.py build test-results -s
|
||||
- cmd: python .ci/cue.py -T 5M test-results
|
||||
|
||||
on_failure:
|
||||
- cmd: python -m ci_core_dumper report
|
||||
|
||||
@@ -38,6 +38,8 @@ skip_commits:
|
||||
- 'documentation/*'
|
||||
- 'startup/*'
|
||||
- '.github/*'
|
||||
- '.tools/*'
|
||||
- '.gitattributes'
|
||||
- '**/*.html'
|
||||
- '**/*.md'
|
||||
|
||||
@@ -111,11 +113,11 @@ build_script:
|
||||
|
||||
test_script:
|
||||
- cmd: python -m ci_core_dumper install
|
||||
- cmd: python .ci/cue.py test
|
||||
- cmd: python .ci/cue.py -T 20M test
|
||||
|
||||
on_finish:
|
||||
- ps: Get-ChildItem *.tap -Recurse -Force | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
|
||||
- cmd: python .ci/cue.py build test-results -s
|
||||
- cmd: python .ci/cue.py -T 5M test-results
|
||||
|
||||
on_failure:
|
||||
- cmd: python -m ci_core_dumper report
|
||||
|
||||
2
.ci
2
.ci
Submodule .ci updated: 3db08b5977...75bae77c1d
@@ -1,19 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e -u -x
|
||||
|
||||
env|grep TRAVIS
|
||||
|
||||
[ "$TRAVIS_OS_NAME" = "linux" ] || exit 0
|
||||
|
||||
# Ensure there is an interface with a (correct) broadcast address
|
||||
# eg. 'trusty' VMs have interface broadcast address mis-configured
|
||||
# (why oh why do people insist on setting this explicitly?)
|
||||
|
||||
sudo ip tuntap add dev tap42 mode tap
|
||||
|
||||
sudo ip addr add 192.168.240.1/24 broadcast + dev tap42
|
||||
|
||||
sudo ip link set dev tap42 up
|
||||
|
||||
# note that this device will be UP but not RUNNING
|
||||
# so java will see it as not UP since java confuses UP and RUNNING
|
||||
22
.gitattributes
vendored
22
.gitattributes
vendored
@@ -1,5 +1,25 @@
|
||||
.ci/ export-ignore
|
||||
.tools/ export-ignore
|
||||
.github/ export-ignore
|
||||
.appveyor/ export-ignore
|
||||
.appveyor.yml export-ignore
|
||||
.travis.yml export-ignore
|
||||
README export-subst
|
||||
|
||||
#Which files need CRLF handling
|
||||
# default to automatic
|
||||
* text=auto
|
||||
|
||||
# batch script parser on windows requires CRLF
|
||||
*.bat text eol=crlf
|
||||
|
||||
# extensions for scripts which may be executable via. "#!..." must have LF
|
||||
*.pl text eol=lf
|
||||
*.plt text eol=lf
|
||||
*.sh text eol=lf
|
||||
*.cmd text eol=lf
|
||||
# .cmd in unexpanded templates
|
||||
*.cmd@* text eol=lf
|
||||
# executable scripts w/o extensions
|
||||
modules/ca/src/client/S99caRepeater@ text eol=lf
|
||||
modules/libcom/src/log/S99logServer@ text eol=lf
|
||||
startup/EpicsHostArch text eol=lf
|
||||
|
||||
204
.github/workflows/ci-scripts-build.yml
vendored
204
.github/workflows/ci-scripts-build.yml
vendored
@@ -14,9 +14,19 @@ on:
|
||||
- 'documentation/*'
|
||||
- 'startup/*'
|
||||
- '.appveyor/*'
|
||||
- '.tools/*'
|
||||
- '.gitattributes'
|
||||
- '**/*.html'
|
||||
- '**/*.md'
|
||||
pull_request:
|
||||
paths-ignore:
|
||||
- 'documentation/*'
|
||||
- 'startup/*'
|
||||
- '.appveyor/*'
|
||||
- '.tools/*'
|
||||
- '.gitattributes'
|
||||
- '**/*.html'
|
||||
- '**/*.md'
|
||||
|
||||
env:
|
||||
SETUP_PATH: .ci-local:.ci
|
||||
@@ -24,7 +34,7 @@ env:
|
||||
EPICS_TEST_IMPRECISE_TIMING: YES
|
||||
|
||||
jobs:
|
||||
build-base:
|
||||
native:
|
||||
name: ${{ matrix.name }}
|
||||
runs-on: ${{ matrix.os }}
|
||||
# Set environment variables from matrix parameters
|
||||
@@ -33,7 +43,9 @@ jobs:
|
||||
BCFG: ${{ matrix.configuration }}
|
||||
WINE: ${{ matrix.wine }}
|
||||
RTEMS: ${{ matrix.rtems }}
|
||||
RTEMS_TARGET: ${{ matrix.rtems_target }}
|
||||
EXTRA: ${{ matrix.extra }}
|
||||
TEST: ${{ matrix.test }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
@@ -57,10 +69,10 @@ jobs:
|
||||
extra: "CMD_CXXFLAGS=-std=c++11"
|
||||
name: "Ub-20 gcc-9 C++11, static"
|
||||
|
||||
- os: ubuntu-16.04
|
||||
- os: ubuntu-20.04
|
||||
cmp: clang
|
||||
configuration: default
|
||||
name: "Ub-16 clang-9"
|
||||
name: "Ub-20 clang-10"
|
||||
|
||||
- os: ubuntu-20.04
|
||||
cmp: clang
|
||||
@@ -68,46 +80,70 @@ jobs:
|
||||
extra: "CMD_CXXFLAGS=-std=c++11"
|
||||
name: "Ub-20 clang-10 C++11"
|
||||
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
rtems: "5"
|
||||
rtems_target: RTEMS-pc686-qemu
|
||||
name: "Ub-20 gcc-9 + RT-5.1 pc686"
|
||||
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
rtems: "5"
|
||||
rtems_target: RTEMS-beatnik
|
||||
test: NO
|
||||
name: "Ub-20 gcc-9 + RT-5.1 beatnik"
|
||||
|
||||
# Only build one RTEMS target per CPU family
|
||||
# unless it's running the tests
|
||||
#
|
||||
# - os: ubuntu-20.04
|
||||
# cmp: gcc
|
||||
# configuration: default
|
||||
# rtems: "5"
|
||||
# rtems_target: RTEMS-mvme3100
|
||||
# test: NO
|
||||
# name: "Ub-20 gcc-9 + RT-5.1 mvme3100"
|
||||
#
|
||||
# - os: ubuntu-20.04
|
||||
# cmp: gcc
|
||||
# configuration: default
|
||||
# rtems: "5"
|
||||
# rtems_target: RTEMS-qoriq_e500
|
||||
# test: NO
|
||||
# name: "Ub-20 gcc-9 + RT-5.1 qoriq_e500"
|
||||
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
rtems: "5"
|
||||
rtems_target: RTEMS-xilinx_zynq_a9_qemu
|
||||
test: NO
|
||||
name: "Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu"
|
||||
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
rtems: "5"
|
||||
rtems_target: RTEMS-uC5282
|
||||
test: NO
|
||||
name: "Ub-20 gcc-9 + RT-5.1 uC5282"
|
||||
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
rtems: "4.10"
|
||||
name: "Ub-20 gcc-9 + RT-4.10"
|
||||
rtems_target: RTEMS-pc386-qemu
|
||||
test: NO
|
||||
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
rtems: "4.9"
|
||||
name: "Ub-20 gcc-9 + RT-4.9"
|
||||
|
||||
- os: ubuntu-16.04
|
||||
cmp: gcc-4.8
|
||||
utoolchain: "4.8"
|
||||
configuration: default
|
||||
name: "Ub-16 gcc-4.8"
|
||||
|
||||
- os: ubuntu-16.04
|
||||
cmp: gcc-4.9
|
||||
utoolchain: "4.9"
|
||||
configuration: default
|
||||
name: "Ub-16 gcc-4.9"
|
||||
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc-8
|
||||
utoolchain: "8"
|
||||
configuration: default
|
||||
name: "Ub-20 gcc-8"
|
||||
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc-9
|
||||
utoolchain: "9"
|
||||
configuration: default
|
||||
name: "Ub-20 gcc-9"
|
||||
|
||||
- os: ubuntu-20.04
|
||||
cmp: clang
|
||||
configuration: default
|
||||
name: "Ub-20 clang-10"
|
||||
rtems_target: RTEMS-pc386-qemu
|
||||
|
||||
- os: macos-latest
|
||||
cmp: clang
|
||||
@@ -124,6 +160,11 @@ jobs:
|
||||
configuration: static
|
||||
name: "Win2019 MSC-19, static"
|
||||
|
||||
- os: windows-2019
|
||||
cmp: vs2019
|
||||
configuration: debug
|
||||
name: "Win2019 MSC-19, debug"
|
||||
|
||||
- os: windows-2019
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
@@ -140,25 +181,104 @@ jobs:
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install qemu-system-x86 g++-mingw-w64-x86-64 gdb
|
||||
if: runner.os == 'Linux'
|
||||
- name: "apt-get install ${{ matrix.cmp }}"
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install software-properties-common
|
||||
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
|
||||
sudo apt-get update
|
||||
sudo apt-get -y install g++-${{ matrix.utoolchain }}
|
||||
if: matrix.utoolchain
|
||||
- name: Prepare and compile dependencies
|
||||
run: python .ci/cue.py prepare
|
||||
- name: Build main module
|
||||
run: python .ci/cue.py build
|
||||
- name: Run main module tests
|
||||
run: python .ci/cue.py test
|
||||
run: python .ci/cue.py -T 60M test
|
||||
- name: Upload tapfiles Artifact
|
||||
if: ${{ always() }}
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: tapfiles ${{ matrix.name }}
|
||||
path: '**/O.*/*.tap'
|
||||
if-no-files-found: ignore
|
||||
- name: Collect and show test results
|
||||
run: python .ci/cue.py test-results
|
||||
if: ${{ always() }}
|
||||
run: python .ci/cue.py -T 5M test-results
|
||||
|
||||
docker:
|
||||
name: ${{ matrix.name }}
|
||||
runs-on: ubuntu-latest
|
||||
container:
|
||||
image: ${{ matrix.image }}
|
||||
# Set environment variables from matrix parameters
|
||||
env:
|
||||
CMP: ${{ matrix.cmp }}
|
||||
BCFG: ${{ matrix.configuration }}
|
||||
EXTRA: ${{ matrix.extra }}
|
||||
TEST: ${{ matrix.test }}
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
# Job names also name artifacts, character limitations apply
|
||||
include:
|
||||
- name: "CentOS-7"
|
||||
image: centos:7
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
|
||||
- name: "CentOS-8"
|
||||
image: centos:8
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
|
||||
- name: "Fedora-33"
|
||||
image: fedora:33
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
|
||||
- name: "Fedora-latest"
|
||||
image: fedora:latest
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
|
||||
steps:
|
||||
- name: "Build newer Git"
|
||||
# actions/checkout@v2 wants git >=2.18
|
||||
# centos:7 has 1.8
|
||||
if: matrix.image=='centos:7'
|
||||
run: |
|
||||
yum -y install curl make gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
|
||||
curl https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.29.0.tar.gz | tar -xz
|
||||
cd git-*
|
||||
make -j2 prefix=/usr/local all
|
||||
make prefix=/usr/local install
|
||||
cd ..
|
||||
rm -rf git-*
|
||||
type -a git
|
||||
git --version
|
||||
- name: "Redhat setup"
|
||||
run: |
|
||||
dnfyum() {
|
||||
dnf -y "$@" || yum -y "$@"
|
||||
return $?
|
||||
}
|
||||
dnfyum install python3 gdb make perl gcc-c++ glibc-devel readline-devel ncurses-devel perl-devel perl-Test-Simple
|
||||
git --version || dnfyum install git
|
||||
# rather than just bite the bullet and link python3 -> python,
|
||||
# people would rather just break all existing scripts...
|
||||
[ -e /usr/bin/python ] || ln -sf python3 /usr/bin/python
|
||||
python --version
|
||||
- uses: actions/checkout@v2
|
||||
with:
|
||||
submodules: true
|
||||
- name: Automatic core dumper analysis
|
||||
uses: mdavidsaver/ci-core-dumper@master
|
||||
- name: Prepare and compile dependencies
|
||||
run: python .ci/cue.py prepare
|
||||
- name: Build main module
|
||||
run: python .ci/cue.py build
|
||||
- name: Run main module tests
|
||||
run: python .ci/cue.py -T 20M test
|
||||
- name: Upload tapfiles Artifact
|
||||
if: ${{ always() }}
|
||||
uses: actions/upload-artifact@v2
|
||||
with:
|
||||
name: tapfiles ${{ matrix.name }}
|
||||
path: '**/O.*/*.tap'
|
||||
if-no-files-found: ignore
|
||||
- name: Collect and show test results
|
||||
if: ${{ always() }}
|
||||
run: python .ci/cue.py -T 5M test-results
|
||||
|
||||
@@ -16,6 +16,10 @@ ifneq ($(wildcard $(TOP)/configure/CONFIG_BASE_VERSION),)
|
||||
CONFIG = $(TOP)/configure
|
||||
BASE_TOP=YES
|
||||
else
|
||||
ifneq ($(origin EPICS_BASE),file)
|
||||
# Essential for the EPICS build system, see convertRelease.pl
|
||||
$(error EPICS_BASE must be set in a configure/RELEASE file)
|
||||
endif
|
||||
CONFIG ?= $(EPICS_BASE)/configure
|
||||
endif
|
||||
|
||||
@@ -62,6 +66,9 @@ include $(CONFIG)/os/CONFIG.$(EPICS_HOST_ARCH).Common
|
||||
RELEASE_TOPS := $(shell $(CONVERTRELEASE) -T $(TOP) releaseTops)
|
||||
|
||||
ifdef T_A
|
||||
# Information from the target's compiler
|
||||
#
|
||||
-include $(EPICS_BASE)/cfg/TOOLCHAIN.$(EPICS_HOST_ARCH).$(T_A)
|
||||
|
||||
# Cross compile specific definitions
|
||||
#
|
||||
|
||||
@@ -50,14 +50,13 @@ CODE_LDFLAGS += $(ASAN_LDFLAGS_$(ENABLE_ASAN))
|
||||
|
||||
PIPE_CFLAGS_YES_YES = -pipe
|
||||
PIPE_CFLAGS = $(PIPE_CFLAGS_$(GCC_PIPE)_$(GNU))
|
||||
PIPE_CXXFLAGS = $(PIPE_CFLAGS)
|
||||
|
||||
STATIC_LDFLAGS_YES = -static
|
||||
STATIC_LDFLAGS_NO =
|
||||
|
||||
SHRLIB_CFLAGS = -fPIC
|
||||
SHRLIB_LDFLAGS = -shared -fPIC
|
||||
LOADABLE_SHRLIB_LDFLAGS = -shared -fPIC
|
||||
SHRLIB_LDFLAGS = -shared -fPIC -Wl,-h$@
|
||||
LOADABLE_SHRLIB_LDFLAGS = -shared -fPIC -Wl,-h$@
|
||||
|
||||
GNU_LDLIBS_YES = -lgcc
|
||||
|
||||
|
||||
@@ -31,10 +31,12 @@ endif # BASE_TOP
|
||||
# Where to find the installed build tools
|
||||
# Windows does not like commands with relative paths starting ../
|
||||
# so TOOLS must be an absolute path, although Perl scripts are OK.
|
||||
# FIND_TOOL is for scripts run before the build reaches src/tools.
|
||||
# FIND_TOOL is for scripts run before the build reaches src/tools
|
||||
# and must also work in submodules when EPICS_BASE is not built.
|
||||
|
||||
TOOLS = $(abspath $(EPICS_BASE_HOST_BIN))
|
||||
FIND_TOOL = $(firstword $(wildcard $(TOOLS)/$(1) $(EPICS_BASE)/src/tools/$(1)))
|
||||
FIND_TOOL = $(firstword $(wildcard $(TOOLS)/$(1) \
|
||||
$(TOP)/src/tools/$(1)) $(EPICS_BASE)/src/tools/$(1))
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# EPICS Base build tools and tool flags
|
||||
|
||||
@@ -48,11 +48,11 @@ EPICS_VERSION = 7
|
||||
EPICS_REVISION = 0
|
||||
|
||||
# EPICS_MODIFICATION must be a number >=0 and <256
|
||||
EPICS_MODIFICATION = 5
|
||||
EPICS_MODIFICATION = 6
|
||||
|
||||
# EPICS_PATCH_LEVEL must be a number (win32 resource file requirement)
|
||||
# Not included in the official EPICS version number if zero
|
||||
EPICS_PATCH_LEVEL = 1
|
||||
EPICS_PATCH_LEVEL = 2
|
||||
|
||||
# Immediately after an official release the EPICS_PATCH_LEVEL is incremented
|
||||
# and the -DEV suffix is added (similar to the Maven -SNAPSHOT versions)
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
# Version number for the Channel Access API and shared library
|
||||
|
||||
EPICS_CA_MAJOR_VERSION = 4
|
||||
EPICS_CA_MINOR_VERSION = 13
|
||||
EPICS_CA_MAINTENANCE_VERSION = 9
|
||||
EPICS_CA_MINOR_VERSION = 14
|
||||
EPICS_CA_MAINTENANCE_VERSION = 2
|
||||
|
||||
# Development flag, set to zero for release versions
|
||||
|
||||
|
||||
@@ -56,6 +56,7 @@ GNU_DIR = /usr
|
||||
# Directories
|
||||
|
||||
INSTALL_LOCATION = $(TOP)
|
||||
INSTALL_ABSOLUTE = $(abspath $(INSTALL_LOCATION))
|
||||
|
||||
INSTALL_LOCATION_LIB = $(INSTALL_LOCATION)/lib
|
||||
INSTALL_LOCATION_BIN = $(INSTALL_LOCATION)/bin
|
||||
@@ -71,11 +72,14 @@ INSTALL_DBD = $(INSTALL_LOCATION)/dbd
|
||||
INSTALL_DB = $(INSTALL_LOCATION)/db
|
||||
INSTALL_CONFIG = $(INSTALL_LOCATION)/configure
|
||||
|
||||
# Directory for OS independant build created files
|
||||
COMMON_DIR = ../O.Common
|
||||
#-------------------------------------------------------
|
||||
# These are default settings that may be overridden later
|
||||
|
||||
# IOC's absolute path to $(TOP), may be overridden inside the application
|
||||
IOCS_APPL_TOP = $(shell $(FULLPATHNAME) $(INSTALL_LOCATION))
|
||||
# Eventual install path (to be compiled into binaries)
|
||||
FINAL_LOCATION = $(INSTALL_ABSOLUTE)
|
||||
|
||||
# IOC's view of install path
|
||||
IOCS_APPL_TOP = $(INSTALL_ABSOLUTE)
|
||||
|
||||
#-------------------------------------------------------
|
||||
# Silencing the build - suppress messages during 'make -s'
|
||||
@@ -131,6 +135,8 @@ LIB_SUFFIX =
|
||||
SHRLIB_PREFIX = $(LIB_PREFIX)
|
||||
DLLSTUB_PREFIX = $(LIB_PREFIX)
|
||||
DLLSTUB_SUFFIX = $(LIB_SUFFIX)
|
||||
LOADABLE_SHRLIB_PREFIX = $(SHRLIB_PREFIX)
|
||||
LOADABLE_SHRLIB_SUFFIX = $(SHRLIB_SUFFIX)
|
||||
|
||||
BUILDLIB_PREFIX_YES = $(DLLSTUB_PREFIX)
|
||||
BUILDLIB_PREFIX_NO = $(LIB_PREFIX)
|
||||
@@ -142,20 +148,23 @@ BUILDLIB_SUFFIX = $(BUILDLIB_SUFFIX_$(SHARED_LIBRARIES))
|
||||
#--------------------------------------------------
|
||||
# vpath directories
|
||||
POSIX_YES = os/posix
|
||||
OS_IMPL_DIRS = $(if $(OS_API),os/$(OS_CLASS)-$(OS_API),) os/$(OS_CLASS)
|
||||
GENERIC_SRC_DIRS = .. $(SRC_DIRS)
|
||||
OS_SRC_DIRS += . $(foreach dir, .. $(SRC_DIRS), \
|
||||
$(addprefix $(dir)/, os/$(OS_CLASS) $(POSIX_$(POSIX)) os/default ))
|
||||
$(addprefix $(dir)/, $(OS_IMPL_DIRS) $(POSIX_$(POSIX)) os/default ))
|
||||
CMPLR_SRC_DIRS += . $(foreach dir, .. $(SRC_DIRS), \
|
||||
$(addprefix $(dir)/, compiler/$(CMPLR_CLASS) compiler/default ))
|
||||
ALL_SRC_DIRS = $(CMPLR_SRC_DIRS) $(OS_SRC_DIRS) $(GENERIC_SRC_DIRS)
|
||||
|
||||
#--------------------------------------------------
|
||||
# Directory for OS independant build created files
|
||||
COMMON_DIR = ../O.Common
|
||||
|
||||
# compile line include directories
|
||||
INSTALL_INCLUDES += \
|
||||
-I$(INSTALL_INCLUDE)/compiler/$(CMPLR_CLASS) \
|
||||
-I$(INSTALL_INCLUDE)/os/$(OS_CLASS) \
|
||||
-I$(INSTALL_INCLUDE)
|
||||
SRC_INCLUDES = -I$(COMMON_DIR) $(addprefix -I, $(wildcard $(ALL_SRC_DIRS)))
|
||||
INSTALL_INCLUDE_DIRS = $(INSTALL_INCLUDE)/compiler/$(CMPLR_CLASS) \
|
||||
$(INSTALL_INCLUDE)/os/$(OS_CLASS) $(INSTALL_INCLUDE)
|
||||
INSTALL_INCLUDES += $(addprefix -I, $(INSTALL_INCLUDE_DIRS))
|
||||
SRC_INCLUDES = $(addprefix -I, $(COMMON_DIR) $(wildcard $(ALL_SRC_DIRS)))
|
||||
|
||||
#--------------------------------------------------
|
||||
# Target filename definitions
|
||||
@@ -169,23 +178,27 @@ TESTSHRLIBNAME = $(TESTSHRLIBNAME_$(SHARED_LIBRARIES))
|
||||
#--------------------------------------------------
|
||||
# obj files
|
||||
|
||||
TARGET_OBJS = $($*_LDOBJS) $(addsuffix $(OBJ),$(basename $($*_OBJS) $($*_SRCS)))
|
||||
TARGET_OBJS = $($*_LDOBJS) $(addsuffix $(OBJ), \
|
||||
$(basename $($*_OBJS) $($*_SRCS)))
|
||||
|
||||
PRODUCT_OBJS = $(addsuffix $(OBJ),$(basename $(SRCS) $(USR_SRCS) $(PROD_SRCS) $(USR_OBJS) $(PROD_OBJS)))
|
||||
PRODUCT_OBJS = $(addsuffix $(OBJ), \
|
||||
$(basename $(SRCS) $(USR_SRCS) $(PROD_SRCS) $(USR_OBJS) $(PROD_OBJS)))
|
||||
PROD_LD_OBJS = $(TARGET_OBJS) $(PRODUCT_OBJS)
|
||||
|
||||
LIBRARY_OBJS = $(addsuffix $(OBJ),$(basename $(SRCS) $(USR_SRCS) $(LIB_SRCS) $(LIBSRCS) $(USR_OBJS) $(LIB_OBJS)))
|
||||
LIBRARY_OBJS = $(addsuffix $(OBJ), \
|
||||
$(basename $(SRCS) $(USR_SRCS) $(LIB_SRCS) $(LIBSRCS) $(USR_OBJS) $(LIB_OBJS)))
|
||||
LIBRARY_LD_OBJS = $(TARGET_OBJS) $(LIBRARY_OBJS)
|
||||
|
||||
#--------------------------------------------------
|
||||
# Windows resource files
|
||||
|
||||
TARGET_RESS = $(if $(RES),$(addsuffix $(RES),$(basename $($*_RCS))),)
|
||||
TARGET_RESS = $(if $(RES), $(addsuffix $(RES), $(basename $($*_RCS))))
|
||||
|
||||
PROD_RESS = $(if $(RES),$(addsuffix $(RES),$(basename $(RCS) $(PROD_RCS))),)
|
||||
PROD_RESS = $(if $(RES), $(addsuffix $(RES), $(basename $(RCS) $(PROD_RCS))))
|
||||
PROD_LD_RESS = $(TARGET_RESS) $(PROD_RESS)
|
||||
|
||||
LIBRARY_RESS = $(if $(RES),$(addsuffix $(RES),$(basename $(RCS) $(LIB_RCS) $(LIBRARY_RCS))),)
|
||||
LIBRARY_RESS = $(if $(RES), $(addsuffix $(RES), \
|
||||
$(basename $(RCS) $(LIB_RCS) $(LIBRARY_RCS))))
|
||||
LIBRARY_LD_RESS = $(TARGET_RESS) $(LIBRARY_RESS)
|
||||
|
||||
#--------------------------------------------------
|
||||
@@ -257,20 +270,21 @@ OPT_CXXFLAGS = $(OPT_CXXFLAGS_$($(BUILD_CLASS)_OPT))
|
||||
|
||||
# Static build flags
|
||||
STATIC_CFLAGS = $(STATIC_CFLAGS_$(STATIC_BUILD))
|
||||
STATIC_CXXCFLAGS = $(STATIC_CXXFLAGS_$(STATIC_BUILD))
|
||||
STATIC_CXXFLAGS = $(STATIC_CXXFLAGS_$(STATIC_BUILD))
|
||||
STATIC_LDFLAGS = $(STATIC_LDFLAGS_$(STATIC_BUILD))
|
||||
STATIC_LDLIBS = $(STATIC_LDLIBS_$(STATIC_BUILD))
|
||||
|
||||
#--------------------------------------------------
|
||||
# cflags for shared library src files (from SHRLIB_CFLAGS)
|
||||
LIBRARY_SRCS=$(basename $(foreach lib,$(LIBRARY) $(TESTLIBRARY) $(LOADABLE_LIBRARY),$($(lib)_OBJSNAME) $(LIBRARY_OBJS)))
|
||||
LIBRARY_SRC_CFLAGS=$($(patsubst $*,SHRLIB,$(findstring $*,$(LIBRARY_SRCS)))_CFLAGS)
|
||||
# cflags for shared library src files
|
||||
LIBRARY_SRCS = $(basename $(foreach lib, \
|
||||
$(LIBRARY) $(TESTLIBRARY) $(LOADABLE_LIBRARY), \
|
||||
$($(lib)_OBJSNAME) $(LIBRARY_OBJS)))
|
||||
LIBRARY_SRC_CFLAGS = $(if $(findstring $*, $(LIBRARY_SRCS)), $(SHRLIB_CFLAGS))
|
||||
|
||||
#--------------------------------------------------
|
||||
# prefix, suffix, and ldflags for loadable shared libraries
|
||||
TARGET_LIB_LDFLAGS=$($(patsubst $*,LOADABLE_,$(findstring $*,$(LOADABLE_LIBRARY)))SHRLIB_LDFLAGS)
|
||||
LOADABLE_SHRLIB_PREFIX=$(SHRLIB_PREFIX)
|
||||
LOADABLE_SHRLIB_SUFFIX=$(SHRLIB_SUFFIX)
|
||||
# ldflags for loadable and shared libraries
|
||||
TARGET_LIB_LDFLAGS = $(if $(findstring $*, $(LOADABLE_LIBRARY)), \
|
||||
$(LOADABLE_SHRLIB_LDFLAGS), $(SHRLIB_LDFLAGS))
|
||||
|
||||
#--------------------------------------------------
|
||||
# Command-line input support default
|
||||
@@ -282,31 +296,31 @@ RUNTIME_LDFLAGS += $(RUNTIME_LDFLAGS_$(COMMANDLINE_LIBRARY))
|
||||
#--------------------------------------------------
|
||||
# Flags
|
||||
|
||||
INCLUDES = -I. $(SRC_INCLUDES) $(INSTALL_INCLUDES) $(RELEASE_INCLUDES)\
|
||||
$(TARGET_INCLUDES) $(USR_INCLUDES) $(CMD_INCLUDES) $(OP_SYS_INCLUDES)\
|
||||
$($(BUILD_CLASS)_INCLUDES)
|
||||
INCLUDES = -I. $(SRC_INCLUDES) $(INSTALL_INCLUDES) $(RELEASE_INCLUDES) \
|
||||
$(TARGET_INCLUDES) $(USR_INCLUDES) $(CMD_INCLUDES) $(OP_SYS_INCLUDES) \
|
||||
$($(BUILD_CLASS)_INCLUDES)
|
||||
|
||||
CFLAGS = $($(BUILD_CLASS)_CFLAGS) $(POSIX_CFLAGS) $(OPT_CFLAGS)\
|
||||
$(DEBUG_CFLAGS) $(PIPE_CFLAGS) $(WARN_CFLAGS) $(TARGET_CFLAGS)\
|
||||
$(USR_CFLAGS) $(CMD_CFLAGS) $(ARCH_DEP_CFLAGS) $(CODE_CFLAGS)\
|
||||
$(STATIC_CFLAGS) $(OP_SYS_CFLAGS) $(LIBRARY_SRC_CFLAGS)
|
||||
CFLAGS = $($(BUILD_CLASS)_CFLAGS) $(POSIX_CFLAGS) $(OPT_CFLAGS) \
|
||||
$(DEBUG_CFLAGS) $(PIPE_CFLAGS) $(WARN_CFLAGS) $(TARGET_CFLAGS) \
|
||||
$(USR_CFLAGS) $(CMD_CFLAGS) $(ARCH_DEP_CFLAGS) $(CODE_CFLAGS) \
|
||||
$(STATIC_CFLAGS) $(OP_SYS_CFLAGS) $(LIBRARY_SRC_CFLAGS)
|
||||
|
||||
CXXFLAGS = $($(BUILD_CLASS)_CXXFLAGS) $(POSIX_CXXFLAGS) $(OPT_CXXFLAGS)\
|
||||
$(DEBUG_CXXFLAGS) $(PIPE_CFLAGS) $(WARN_CXXFLAGS) $(TARGET_CXXFLAGS)\
|
||||
$(USR_CXXFLAGS) $(CMD_CXXFLAGS) $(ARCH_DEP_CXXFLAGS) $(CODE_CXXFLAGS)\
|
||||
$(STATIC_CXXCFLAGS) $(OP_SYS_CXXFLAGS) $(LIBRARY_SRC_CFLAGS)
|
||||
CXXFLAGS = $($(BUILD_CLASS)_CXXFLAGS) $(POSIX_CXXFLAGS) $(OPT_CXXFLAGS) \
|
||||
$(DEBUG_CXXFLAGS) $(PIPE_CFLAGS) $(WARN_CXXFLAGS) $(TARGET_CXXFLAGS) \
|
||||
$(USR_CXXFLAGS) $(CMD_CXXFLAGS) $(ARCH_DEP_CXXFLAGS) $(CODE_CXXFLAGS) \
|
||||
$(STATIC_CXXFLAGS) $(OP_SYS_CXXFLAGS) $(LIBRARY_SRC_CFLAGS)
|
||||
|
||||
LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(CMD_LDFLAGS)\
|
||||
$(POSIX_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(DEBUG_LDFLAGS) $(OP_SYS_LDFLAGS)\
|
||||
$($(BUILD_CLASS)_LDFLAGS) $(RUNTIME_LDFLAGS) $(CODE_LDFLAGS)
|
||||
LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(CMD_LDFLAGS) \
|
||||
$(POSIX_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(DEBUG_LDFLAGS) $(OP_SYS_LDFLAGS) \
|
||||
$($(BUILD_CLASS)_LDFLAGS) $(RUNTIME_LDFLAGS) $(CODE_LDFLAGS)
|
||||
|
||||
LDLIBS = $(POSIX_LDLIBS) $(ARCH_DEP_LDLIBS) $(DEBUG_LDLIBS) $(OP_SYS_LDLIBS)\
|
||||
$(GNU_LDLIBS_$(GNU))
|
||||
LDLIBS = $(POSIX_LDLIBS) $(ARCH_DEP_LDLIBS) $(DEBUG_LDLIBS) $(OP_SYS_LDLIBS) \
|
||||
$(GNU_LDLIBS_$(GNU))
|
||||
|
||||
CPPFLAGS = $($(BUILD_CLASS)_CPPFLAGS) $(POSIX_CPPFLAGS) $(OPT_CPPFLAGS)\
|
||||
$(DEBUG_CPPFLAGS) $(WARN_CPPFLAGS) $(BASE_CPPFLAGS) $(TARGET_CPPFLAGS)\
|
||||
$(USR_CPPFLAGS) $(CMD_CPPFLAGS) $(ARCH_DEP_CPPFLAGS) $(OP_SYS_CPPFLAGS)\
|
||||
$(OP_SYS_INCLUDE_CPPFLAGS) $(CODE_CPPFLAGS) $(API_CPPFLAGS)
|
||||
CPPFLAGS = $($(BUILD_CLASS)_CPPFLAGS) $(POSIX_CPPFLAGS) $(OPT_CPPFLAGS) \
|
||||
$(DEBUG_CPPFLAGS) $(WARN_CPPFLAGS) $(BASE_CPPFLAGS) $(TARGET_CPPFLAGS) \
|
||||
$(USR_CPPFLAGS) $(CMD_CPPFLAGS) $(ARCH_DEP_CPPFLAGS) $(OP_SYS_CPPFLAGS) \
|
||||
$(OP_SYS_INCLUDE_CPPFLAGS) $(CODE_CPPFLAGS) $(API_CPPFLAGS)
|
||||
|
||||
#--------------------------------------------------
|
||||
# ar definition default
|
||||
@@ -393,7 +407,7 @@ INSTALL_DOCS = $(DOCS:%= $(INSTALL_DOC)/%)
|
||||
INSTALL_HTMLS = $(HTMLS:%= $(INSTALL_HTML)/$(HTMLS_DIR)/%)
|
||||
|
||||
INSTALL_TEMPLATE = $(addprefix $(INSTALL_TEMPLATES_SUBDIR)/, \
|
||||
$(subst $(CONFIG),top/configure,$(TEMPLATES)))
|
||||
$(subst $(CONFIG),top/configure,$(TEMPLATES)))
|
||||
INSTALL_CONFIGS = $(CONFIGS:%= $(INSTALL_CONFIG)/%)
|
||||
|
||||
INSTALL_BIN_INSTALLS = $(addprefix $(INSTALL_BIN)/,$(notdir $(BIN_INSTALLS)))
|
||||
@@ -428,42 +442,41 @@ INSTALL_INC += $(foreach inc, $(INC), \
|
||||
$(CMPLR_INSTALL_INC) \
|
||||
$(OS_INSTALL_INC) \
|
||||
$(GENERIC_INSTALL_INC) \
|
||||
$(GENERATED_INSTALL_INC) ) )
|
||||
INSTALL_INC += $(addprefix $(INSTALL_INCLUDE)/os/$(OS_CLASS)/, $(INC_$(OS_CLASS)) )
|
||||
$(GENERATED_INSTALL_INC)))
|
||||
INSTALL_INC += $(addprefix $(INSTALL_INCLUDE)/os/$(OS_CLASS)/, $(INC_$(OS_CLASS)))
|
||||
|
||||
#
|
||||
# Rule 0
|
||||
#
|
||||
CMPLR_INSTALL_INC = $(addprefix $(INSTALL_INCLUDE)/compiler/$(CMPLR_CLASS)/, $(INSTALL_INC_jjj) )
|
||||
INSTALL_INC_jjj = $(foreach dir, $(CMPLR_SRC_DIRS), $(INSTALL_INC_iii) )
|
||||
INSTALL_INC_iii = $(subst $(dir)/, , $(INSTALL_INC_hhh) )
|
||||
INSTALL_INC_hhh = $(wildcard $(addsuffix /$(inc), $(dir)) )
|
||||
CMPLR_INSTALL_INC = $(addprefix $(INSTALL_INCLUDE)/compiler/$(CMPLR_CLASS)/, \
|
||||
$(foreach dir, $(CMPLR_SRC_DIRS), \
|
||||
$(subst $(dir)/,, $(wildcard $(addsuffix /$(inc), $(dir))))))
|
||||
|
||||
#
|
||||
# Rule 1
|
||||
#
|
||||
OS_INSTALL_INC = $(addprefix $(INSTALL_INCLUDE)/os/$(OS_CLASS)/, $(INSTALL_INC_ggg) )
|
||||
INSTALL_INC_ggg = $(foreach dir, $(OS_SRC_DIRS), $(INSTALL_INC_fff) )
|
||||
INSTALL_INC_fff = $(subst $(dir)/, , $(INSTALL_INC_eee) )
|
||||
INSTALL_INC_eee = $(wildcard $(addsuffix /$(inc), $(dir)) )
|
||||
OS_INSTALL_INC = $(addprefix $(INSTALL_INCLUDE)/os/$(OS_CLASS)/, \
|
||||
$(foreach dir, $(OS_SRC_DIRS), \
|
||||
$(subst $(dir)/,, $(wildcard $(addsuffix /$(inc), $(dir))))))
|
||||
|
||||
#
|
||||
# Rule 2
|
||||
#
|
||||
GENERIC_INSTALL_INC = $(addprefix $(INSTALL_INCLUDE)/, $(INSTALL_INC_ccc) )
|
||||
INSTALL_INC_ccc = $(foreach dir, .. $(SRC_DIRS), $(INSTALL_INC_bbb) )
|
||||
INSTALL_INC_bbb = $(subst $(dir)/, , $(INSTALL_INC_aaa) )
|
||||
INSTALL_INC_aaa = $(wildcard $(addsuffix /$(inc), $(dir)) )
|
||||
GENERIC_INSTALL_INC = $(addprefix $(INSTALL_INCLUDE)/, \
|
||||
$(foreach dir, .. $(SRC_DIRS), \
|
||||
$(subst $(dir)/,, $(wildcard $(addsuffix /$(inc), $(dir))))))
|
||||
|
||||
#
|
||||
# Rule 3
|
||||
#
|
||||
GENERATED_INSTALL_INC = $(INSTALL_INCLUDE)/$(inc)
|
||||
|
||||
COMMON_INC += $(filter $(COMMON_DIR)/%, $(foreach file, $(INC), \
|
||||
$(firstword $(SOURCE_INC) $(COMMON_DIR)/$(file) ) ) )
|
||||
SOURCE_INC = $(wildcard $(file) $(SOURCE_INC_bbb) )
|
||||
SOURCE_INC_bbb = $(foreach dir, $(ALL_SRC_DIRS), $(SOURCE_INC_aaa) )
|
||||
SOURCE_INC_aaa = $(addsuffix /$(file), $(dir) )
|
||||
#---------------------------------------------------------------
|
||||
# Files listed in INC that must first be created in O.Common
|
||||
COMMON_INC += $(filter $(COMMON_DIR)/%, \
|
||||
$(foreach file, $(INC), \
|
||||
$(firstword $(wildcard $(file) \
|
||||
$(foreach dir, $(ALL_SRC_DIRS), \
|
||||
$(addsuffix /$(file), $(dir)))) $(COMMON_DIR)/$(file))))
|
||||
|
||||
endif
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Version number for the database APIs and shared library
|
||||
|
||||
EPICS_DATABASE_MAJOR_VERSION = 3
|
||||
EPICS_DATABASE_MINOR_VERSION = 19
|
||||
EPICS_DATABASE_MINOR_VERSION = 21
|
||||
EPICS_DATABASE_MAINTENANCE_VERSION = 1
|
||||
|
||||
# Development flag, set to zero for release versions
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
# Version number for the libcom APIs and shared library
|
||||
|
||||
EPICS_LIBCOM_MAJOR_VERSION = 3
|
||||
EPICS_LIBCOM_MINOR_VERSION = 19
|
||||
EPICS_LIBCOM_MINOR_VERSION = 21
|
||||
EPICS_LIBCOM_MAINTENANCE_VERSION = 1
|
||||
|
||||
# Development flag, set to zero for release versions
|
||||
|
||||
@@ -17,9 +17,8 @@
|
||||
# Currently Supporting:
|
||||
# cygwin-x86 (cygwin compiler used for host builds)
|
||||
# cygwin-x86_64 (cygwin compiler used for host builds)
|
||||
# darwin-ppc (PowerPC based Apple running OSX)
|
||||
# darwin-ppcx86 (Universal binaries for both CPUs)
|
||||
# darwin-x86 (Intel based Apple running OSX)
|
||||
# darwin-aarch64 (M1 based Apple using CLANG compiler)
|
||||
# darwin-x86 (Intel based Apple using CLANG compiler)
|
||||
# freebsd-x86 (GNU compiler used for host builds)
|
||||
# freebsd-x86_64 (GNU compiler used for host builds)
|
||||
# linux-aarch64 (GNU compiler used for host builds)
|
||||
@@ -62,16 +61,8 @@
|
||||
|
||||
# ios-arm (darwin-x86 host)
|
||||
# ios-386 (darwin-x86 host)
|
||||
# linux-386 (linux-x86 host)
|
||||
# linux-486 (linux-x86 host)
|
||||
# linux-586 (linux-x86 host)
|
||||
# linux-686 (linux-x86 host)
|
||||
# linux-arm (linux-x86 or -x86_64 host)
|
||||
# linux-aarch64 (linux-x86_64 host)
|
||||
# linux-athlon (linux-x86 host)
|
||||
# linux-cris (Axis GNU crosscompiler on linux-x86 host)
|
||||
# linux-cris_v10 (Axis GNU crosscompiler on linux-x86 host)
|
||||
# linux-cris_v32 (Axis GNU crosscompiler on linux-x86 host)
|
||||
# linux-microblaze
|
||||
# linux-xscale_be
|
||||
# vxWorks-486
|
||||
@@ -85,18 +76,20 @@
|
||||
# vxWorks-ppc604_altivec
|
||||
# vxWorks-mpc8540
|
||||
# vxWorks-mpc8548
|
||||
# RTEMS-at91rm9200ek
|
||||
# RTEMS-beagleboneblack
|
||||
# RTEMS-beatnik
|
||||
# RTEMS-gen68360
|
||||
# RTEMS-mcp750
|
||||
# RTEMS-mvme167
|
||||
# RTEMS-mvme2100
|
||||
# RTEMS-mvme2700
|
||||
# RTEMS-mvme3100
|
||||
# RTEMS-mvme5500
|
||||
# RTEMS-pc386
|
||||
# RTEMS-psim
|
||||
# RTEMS-pc386 (RTEMS 4)
|
||||
# RTEMS-pc386-qemu (RTEMS 4)
|
||||
# RTEMS-pc686 (RTEMS 5)
|
||||
# RTEMS-pc686-qemu (RTEMS 5)
|
||||
# RTEMS-qoriq_e500
|
||||
# RTEMS-uC5282
|
||||
# RTEMS-xilinx-zynq-a9_qemu
|
||||
# RTEMS-xilinx_zynq_zedboard
|
||||
# win32-x86-mingw (linux-x86 or -x86_64 host)
|
||||
#
|
||||
|
||||
@@ -104,7 +97,6 @@
|
||||
# Definitions in configure/os/CONFIG_SITE.<host>.Common
|
||||
# may override this setting.
|
||||
CROSS_COMPILER_TARGET_ARCHS=
|
||||
#CROSS_COMPILER_TARGET_ARCHS=vxWorks-ppc32
|
||||
|
||||
# If only some of your host architectures can compile the
|
||||
# above CROSS_COMPILER_TARGET_ARCHS specify those host
|
||||
@@ -151,6 +143,14 @@ CROSS_WARN=YES
|
||||
# different location then uncomment and set this.
|
||||
#INSTALL_LOCATION=<fullpathname>
|
||||
|
||||
# The location from which files placed in INSTALL_LOCATION will actually run.
|
||||
# This path is compiled into executables, and so should be an absolute.
|
||||
# May be used to achieve the effect of autotools. eg.
|
||||
# ./configure --prefix=<FINAL_LOCATION>
|
||||
# make DESTDIR=<INSTALL_LOCATION>
|
||||
# Defaults to the absolute expansion of $(INSTALL_LOCATION)
|
||||
#FINAL_LOCATION=
|
||||
|
||||
# Use POSIX thread priority scheduling (if available).
|
||||
# Must be either YES or NO
|
||||
USE_POSIX_THREAD_PRIORITY_SCHEDULING = YES
|
||||
|
||||
@@ -15,7 +15,8 @@ include $(TOP)/configure/CONFIG
|
||||
TOOLS = $(TOP)/src/tools
|
||||
|
||||
CONFIGS += $(subst ../,,$(wildcard ../CONFIG*))
|
||||
CONFIGS += $(subst ../,,$(wildcard ../os/CONFIG*))
|
||||
CONFIGS += $(subst ../,,$(wildcard ../os/CONFIG.*))
|
||||
CONFIGS += $(subst ../,,$(wildcard ../os/CONFIG_SITE.*))
|
||||
|
||||
CONFIGS += $(subst ../,,$(wildcard ../RELEASE*))
|
||||
CONFIGS += $(subst ../,,$(wildcard ../RULES*))
|
||||
@@ -29,5 +30,9 @@ CFG += CONFIG_CA_VERSION
|
||||
CFG += CONFIG_DATABASE_MODULE
|
||||
CFG += CONFIG_DATABASE_VERSION
|
||||
|
||||
CFG += TOOLCHAIN.$(EPICS_HOST_ARCH).$(T_A)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
TOOLCHAIN.$(EPICS_HOST_ARCH).$(T_A): toolchain.c
|
||||
$(PREPROCESS.cpp)
|
||||
|
||||
@@ -455,7 +455,7 @@ $(COMMON_DIR)/%.html: ../%.pl
|
||||
$(PODTOHTML) -s -o $(notdir $@) $<
|
||||
@$(MV) $(notdir $@) $@
|
||||
|
||||
.PRECIOUS: $(COMMON_DIR)/%.html %.html
|
||||
.PRECIOUS: $(COMMON_DIR)/%.html
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# DB files
|
||||
|
||||
@@ -383,6 +383,8 @@ endif
|
||||
|
||||
tapfiles: $(TAPFILES)
|
||||
junitfiles: $(JUNITFILES)
|
||||
# prevent deletion of partial output from failing tests
|
||||
.PRECIOUS: $(TAPFILES) $(JUNITFILES)
|
||||
|
||||
test-results: tap-results
|
||||
tap-results: $(TAPFILES)
|
||||
@@ -561,6 +563,10 @@ $(INSTALL_DOC)/%: ../%
|
||||
$(ECHO) "Installing doc $@"
|
||||
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(INSTALL_DOC)
|
||||
|
||||
$(INSTALL_HTML)/$(HTMLS_DIR)/%: $(COMMON_DIR)/%
|
||||
$(ECHO) "Installing generated html $@"
|
||||
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(@D)
|
||||
|
||||
$(INSTALL_HTML)/$(HTMLS_DIR)/%: %
|
||||
$(ECHO) "Installing html $@"
|
||||
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(@D)
|
||||
@@ -569,10 +575,6 @@ $(INSTALL_HTML)/$(HTMLS_DIR)/%: ../%
|
||||
$(ECHO) "Installing html $@"
|
||||
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(@D)
|
||||
|
||||
$(INSTALL_HTML)/$(HTMLS_DIR)/%: $(COMMON_DIR)/%
|
||||
$(ECHO) "Installing generated html $@"
|
||||
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(@D)
|
||||
|
||||
$(INSTALL_TEMPLATES_SUBDIR)/%: ../%
|
||||
$(ECHO) "Installing $@"
|
||||
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(@D)
|
||||
|
||||
@@ -28,7 +28,6 @@ DIRS += $(LIVE_SUBMODULES)
|
||||
|
||||
include $(CONFIG)/RULES_DIRS
|
||||
|
||||
INSTALL_LOCATION_ABS := $(abspath $(INSTALL_LOCATION))
|
||||
RELEASE_LOCAL := RELEASE.$(EPICS_HOST_ARCH).local
|
||||
|
||||
# Ensure that RELEASE.<host>.local exists before doing anything else
|
||||
@@ -40,8 +39,8 @@ RELEASE.host: $(RELEASE_LOCAL)
|
||||
|
||||
$(RELEASE_LOCAL): Makefile CONFIG_SITE.local
|
||||
$(ECHO) Creating $@ with
|
||||
$(ECHO) " $(PARENT_MODULE) = $(INSTALL_LOCATION_ABS)"
|
||||
@echo $(PARENT_MODULE) = $(INSTALL_LOCATION_ABS)> $@
|
||||
$(ECHO) " $(PARENT_MODULE) = $(INSTALL_ABSOLUTE)"
|
||||
@echo $(PARENT_MODULE) = $(INSTALL_ABSOLUTE)> $@
|
||||
realclean:
|
||||
$(RM) $(wildcard RELEASE.*.local)
|
||||
|
||||
|
||||
@@ -28,12 +28,13 @@ ifneq ($(CONFIG),$(TOP)/configure)
|
||||
endif
|
||||
|
||||
#--------------------------------------------------
|
||||
# Set RTEMS_BSP from T_A if not already done
|
||||
# Set RTEMS_BSP and GNU_TARGET if not already done
|
||||
RTEMS_BSP ?= $(subst RTEMS-,,$(T_A))
|
||||
GNU_TARGET ?= $(RTEMS_TARGET_CPU)-rtems
|
||||
|
||||
#-------------------------------------------------------
|
||||
# Pick up the RTEMS tool/path definitions from the RTEMS BSP directory.
|
||||
include $(RTEMS_BASE)/$(RTEMS_TARGET_CPU)-rtems$(RTEMS_VERSION)/$(RTEMS_BSP)/Makefile.inc
|
||||
include $(RTEMS_BASE)/$(GNU_TARGET)$(RTEMS_VERSION)/$(RTEMS_BSP)/Makefile.inc
|
||||
include $(RTEMS_CUSTOM)
|
||||
include $(CONFIG.CC)
|
||||
|
||||
@@ -41,7 +42,7 @@ include $(CONFIG.CC)
|
||||
# RTEMS cross-development tools
|
||||
CC = $(RTEMS_TOOLS)/bin/$(CC_FOR_TARGET) $(GCCSPECS) -fasm
|
||||
CCC = $(RTEMS_TOOLS)/bin/$(CXX)
|
||||
CPP = $(RTEMS_TOOLS)/bin/$(CC_FOR_TARGET) -x c -E
|
||||
CPP = $(RTEMS_TOOLS)/bin/$(CC_FOR_TARGET) -x c -E $(GCCSPECS)
|
||||
AR = $(RTEMS_TOOLS)/bin/$(AR_FOR_TARGET)
|
||||
LD = $(RTEMS_TOOLS)/bin/$(LD_FOR_TARGET) -r
|
||||
|
||||
@@ -62,7 +63,7 @@ CFLAGS = $($(BUILD_CLASS)_CFLAGS) $(POSIX_CFLAGS) $(OPT_CFLAGS)\
|
||||
CXXFLAGS = $($(BUILD_CLASS)_CXXFLAGS) $(POSIX_CXXFLAGS) $(OPT_CXXFLAGS)\
|
||||
$(DEBUG_CXXFLAGS) $(PIPE_CFLAGS) $(WARN_CXXFLAGS) $(TARGET_CXXFLAGS)\
|
||||
$(USR_CXXFLAGS) $(CMD_CXXFLAGS) $(ARCH_DEP_CXXFLAGS) $(CODE_CXXFLAGS)\
|
||||
$(STATIC_CXXCFLAGS) $(OP_SYS_CXXFLAGS) $(LIBRARY_SRC_CFLAGS)
|
||||
$(STATIC_CXXFLAGS) $(OP_SYS_CXXFLAGS) $(LIBRARY_SRC_CFLAGS)
|
||||
|
||||
LDFLAGS = $(OPT_LDFLAGS) $(TARGET_LDFLAGS) $(USR_LDFLAGS) $(CMD_LDFLAGS)\
|
||||
$(POSIX_LDFLAGS) $(ARCH_DEP_LDFLAGS) $(DEBUG_LDFLAGS) $(OP_SYS_LDFLAGS)\
|
||||
@@ -78,6 +79,9 @@ CPPFLAGS += $($(BUILD_CLASS)_CPPFLAGS) $(POSIX_CPPFLAGS) $(OPT_CPPFLAGS)\
|
||||
|
||||
ECHO = @$(if $(filter -s,$(MFLAGS)),$(NOP),echo)
|
||||
|
||||
# Originally set in os/CONFIG.UnixCommon.Common
|
||||
MKDIR = mkdir -p
|
||||
|
||||
#--------------------------------------------------
|
||||
# Although RTEMS uses gcc, it wants to use gcc its own way
|
||||
CROSS_CPPFLAGS =
|
||||
@@ -95,20 +99,39 @@ MODEXT=.obj
|
||||
OS_CLASS = RTEMS
|
||||
|
||||
#--------------------------------------------------
|
||||
# Operating system flags
|
||||
OP_SYS_LDLIBS += -lrtemsCom -lc -lrtemscpu -lCom -lnfs -lm
|
||||
OP_SYS_LDFLAGS += $(CPU_CFLAGS) -u Init \
|
||||
# Operating system compile & link flags
|
||||
OP_SYS_CFLAGS += -D__LINUX_ERRNO_EXTENSIONS__
|
||||
|
||||
OP_SYS_CFLAGS_NET_yes = -DRTEMS_LEGACY_STACK
|
||||
OP_SYS_CFLAGS += $(OP_SYS_CFLAGS_NET_$(RTEMS_HAS_NETWORKING))
|
||||
|
||||
ifeq ($(RTEMS_HAS_POSIX_API),yes)
|
||||
POSIX_CPPFLAGS = -D_GNU_SOURCE -D_DEFAULT_SOURCE
|
||||
endif
|
||||
|
||||
OP_SYS_LDLIBS_posix_NET_yes = -ltftpfs -lnfs -lz -ltelnetd
|
||||
OP_SYS_LDLIBS_posix_NET_no = -ltftpfs -lbsd -lz
|
||||
OP_SYS_LDLIBS_score_NET_yes = -lnfs
|
||||
OP_SYS_LDLIBS_score_NET_no = -lnfs
|
||||
OP_SYS_LDLIBS += -lrtemsCom -lCom
|
||||
OP_SYS_LDLIBS += $(OP_SYS_LDLIBS_$(OS_API)_NET_$(RTEMS_HAS_NETWORKING))
|
||||
OP_SYS_LDLIBS += -lrtemscpu -lc -lm
|
||||
|
||||
OP_SYS_LDFLAGS_posix = -u POSIX_Init
|
||||
OP_SYS_LDFLAGS_score = -u Init \
|
||||
$(PROJECT_RELEASE)/lib/no-dpmem.rel \
|
||||
$(PROJECT_RELEASE)/lib/no-mp.rel \
|
||||
$(PROJECT_RELEASE)/lib/no-part.rel \
|
||||
$(PROJECT_RELEASE)/lib/no-signal.rel \
|
||||
$(PROJECT_RELEASE)/lib/no-rtmon.rel
|
||||
OP_SYS_LDFLAGS += $(CPU_CFLAGS) $(OP_SYS_LDFLAGS_$(OS_API))
|
||||
|
||||
# Settings for GeSys
|
||||
MOD_SYS_LDFLAGS += $(CPU_CFLAGS) -Wl,-r -nostdlib
|
||||
|
||||
# Do not link against libraries which are part of the Generic Image
|
||||
GESYS_LIBS += -lgcc
|
||||
GESYS_LIBS += -lc -lm -lrtemscpu -lrtemsbsp -lrtems++ -lbspExt
|
||||
GESYS_LIBS += -lc -lm -lrtemscpu -lrtemsbsp -lrtems++
|
||||
GESYS_LIBS += -lcexp -ltecla_r -lspencer_regexp -lpmelf -lpmbfd
|
||||
GESYS_LIBS += -lnfs -ltelnetd -lrtems-gdb-stub
|
||||
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
#
|
||||
# CONFIG.Common.RTEMS-at91rm9200ek
|
||||
# Author: Ralf Hartmann
|
||||
# BESSY
|
||||
# Ralf.Hartmann@bessy.de
|
||||
#
|
||||
# Atmel AT91RM9200-EK evaluation kit
|
||||
# using the AT91RM9200 ARM9-based 32-bit RISC microcontroller
|
||||
#
|
||||
# All RTEMS targets use the same Makefile fragment
|
||||
#
|
||||
RTEMS_BSP = at91rm9200ek
|
||||
RTEMS_TARGET_CPU = arm
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
18
configure/os/CONFIG.Common.RTEMS-beagleboneblack
Normal file
18
configure/os/CONFIG.Common.RTEMS-beagleboneblack
Normal file
@@ -0,0 +1,18 @@
|
||||
#
|
||||
# CONFIG.Common.RTEMS-beaglebineblack
|
||||
# Author: Heinz Junkes <junkes@fhi-berlin.mpg.de>
|
||||
#
|
||||
# All RTEMS targets use the same Makefile fragment
|
||||
#
|
||||
#EXE = .elf
|
||||
RTEMS_BSP = beagleboneblack
|
||||
RTEMS_TARGET_CPU = arm
|
||||
GNU_TARGET = arm-rtems
|
||||
|
||||
OP_SYS_LDLIBS += -Wl,--gc-sections
|
||||
ARCH_DEP_LDFLAGS = -L$(RTEMS_BASE)/$(GNU_TARGET)$(RTEMS_VERSION)/beagleboneblack/lib/
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
|
||||
|
||||
|
||||
@@ -8,14 +8,16 @@ EXE = .elf
|
||||
RTEMS_BSP = beatnik
|
||||
RTEMS_TARGET_CPU = powerpc
|
||||
GNU_TARGET = powerpc-rtems
|
||||
ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL
|
||||
# optimization trouble in postfix.c
|
||||
ARCH_DEP_CFLAGS += -DRTEMS_HAS_ALTIVEC
|
||||
#will use bootp
|
||||
#ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL
|
||||
ARCH_DEP_CFLAGS += -DHAVE_MOTLOAD
|
||||
ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_MBUF_SPACE=2048
|
||||
ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_CLUSTER_SPACE=5120
|
||||
|
||||
OP_SYS_LDLIBS += -lbspExt
|
||||
|
||||
MUNCH_SUFFIX = .boot
|
||||
MUNCHNAME = $(PRODNAME:%$(EXE)=%$(MUNCH_SUFFIX))
|
||||
define MUNCH_CMD
|
||||
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary $< $@
|
||||
endef
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
#
|
||||
# Author: W. Eric Norum
|
||||
# Canadian Light Source
|
||||
# eric@cls.usask.ca
|
||||
#
|
||||
# All RTEMS targets use the same Makefile fragment
|
||||
#
|
||||
RTEMS_BSP = gen68360
|
||||
RTEMS_TARGET_CPU = m68k
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
@@ -1,10 +0,0 @@
|
||||
#
|
||||
# Author: W. Eric Norum
|
||||
# Canadian Light Source
|
||||
# eric@cls.usask.ca
|
||||
#
|
||||
# All RTEMS targets use the same Makefile fragment
|
||||
#
|
||||
RTEMS_BSP = mcp750
|
||||
RTEMS_TARGET_CPU = ppc
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
@@ -1,10 +0,0 @@
|
||||
#
|
||||
# Author: W. Eric Norum
|
||||
# Canadian Light Source
|
||||
# eric@cls.usask.ca
|
||||
#
|
||||
# All RTEMS targets use the same Makefile fragment
|
||||
#
|
||||
RTEMS_BSP = mvme167
|
||||
RTEMS_TARGET_CPU = m68k
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
@@ -11,8 +11,6 @@ GNU_TARGET = powerpc-rtems
|
||||
ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL
|
||||
ARCH_DEP_CFLAGS += -DHAVE_PPCBUG
|
||||
|
||||
OP_SYS_LDLIBS += -lbspExt
|
||||
|
||||
MUNCH_SUFFIX = .boot
|
||||
define MUNCH_CMD
|
||||
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary -R .comment -S $< rtems
|
||||
@@ -21,6 +19,7 @@ define MUNCH_CMD
|
||||
$(PROJECT_RELEASE)/lib/bootloader.o \
|
||||
--just-symbols=$< \
|
||||
-b binary rtems.gz \
|
||||
--no-warn-mismatch \
|
||||
-T $(PROJECT_RELEASE)/lib/ppcboot.lds \
|
||||
-Map $<.map
|
||||
rm -f rtems.gz
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
#
|
||||
# Author: Matt Rippa
|
||||
#
|
||||
RTEMS_BSP = mvme2700
|
||||
RTEMS_BSP = mvme2307
|
||||
RTEMS_TARGET_CPU = powerpc
|
||||
ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL
|
||||
ARCH_DEP_CFLAGS += -DHAVE_PPCBUG
|
||||
@@ -15,11 +15,10 @@ define MUNCH_CMD
|
||||
$(PROJECT_RELEASE)/lib/bootloader.o \
|
||||
--just-symbols=$< \
|
||||
-b binary rtems.gz \
|
||||
--no-warn-mismatch \
|
||||
-T $(PROJECT_RELEASE)/lib/ppcboot.lds \
|
||||
-Map $<.map
|
||||
rm -f rtems.gz
|
||||
endef
|
||||
|
||||
OP_SYS_LDLIBS += -lbspExt
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
|
||||
@@ -13,8 +13,6 @@ ARCH_DEP_CFLAGS += -DHAVE_MOTLOAD
|
||||
ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_MBUF_SPACE=2048
|
||||
ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_CLUSTER_SPACE=5120
|
||||
|
||||
OP_SYS_LDLIBS += -lbspExt
|
||||
|
||||
MUNCH_SUFFIX = .boot
|
||||
define MUNCH_CMD
|
||||
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary $< $@
|
||||
|
||||
@@ -14,13 +14,9 @@ ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_MBUF_SPACE=2048
|
||||
ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_CLUSTER_SPACE=5120
|
||||
ARCH_DEP_CFLAGS += -DBSP_NVRAM_BASE_ADDR=0xf1110000
|
||||
|
||||
OP_SYS_LDLIBS += -lbspExt
|
||||
|
||||
MUNCH_SUFFIX = .boot
|
||||
define MUNCH_CMD
|
||||
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary $< $@
|
||||
endef
|
||||
|
||||
OP_SYS_LDLIBS += -lbspExt
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
|
||||
@@ -1,12 +1,13 @@
|
||||
# CONFIG.Common.RTEMS-pc386
|
||||
#
|
||||
# Author: W. Eric Norum
|
||||
# Canadian Light Source
|
||||
# eric@cls.usask.ca
|
||||
#
|
||||
# All RTEMS targets use the same Makefile fragment
|
||||
# Definitions for the RTEMS-pc386 target, RTEMS 4.x only
|
||||
# Site-specific overrides go in CONFIG_SITE.Common.RTEMS-pc386
|
||||
#
|
||||
#-------------------------------------------------------
|
||||
|
||||
RTEMS_BSP = pc386
|
||||
RTEMS_TARGET_CPU = i386
|
||||
GNU_TARGET = i386-rtems
|
||||
|
||||
MUNCH_SUFFIX = .boot
|
||||
define MUNCH_CMD
|
||||
@@ -22,3 +23,10 @@ include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
# Put text segment where it will work with etherboot
|
||||
#
|
||||
OP_SYS_LDFLAGS += -Wl,-Ttext,0x100000
|
||||
|
||||
# This check must appear after the above include
|
||||
ifeq ($(RTEMS_VERSION),5)
|
||||
$(info *** This target is not compatible with the configured RTEMS version.)
|
||||
$(info *** Build the RTEMS-pc686 (-qemu) target for RTEMS 5.x)
|
||||
$(error Can't continue)
|
||||
endif
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions from RTEMS-pc386
|
||||
# For Tests overwrite it with pc686
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS-pc386
|
||||
|
||||
RTEMS_QEMU_FIXUPS = YES
|
||||
|
||||
39
configure/os/CONFIG.Common.RTEMS-pc686
Normal file
39
configure/os/CONFIG.Common.RTEMS-pc686
Normal file
@@ -0,0 +1,39 @@
|
||||
# CONFIG.Common.RTEMS-pc686
|
||||
#
|
||||
# Definitions for the RTEMS-pc686 target, RTEMS 5.x only
|
||||
# Site-specific overrides go in CONFIG_SITE.Common.RTEMS-pc686
|
||||
#
|
||||
#-------------------------------------------------------
|
||||
#
|
||||
# Author: W. Eric Norum
|
||||
# Canadian Light Source
|
||||
# eric@cls.usask.ca
|
||||
#
|
||||
# All RTEMS targets use the same Makefile fragment
|
||||
#
|
||||
RTEMS_BSP = pc686
|
||||
RTEMS_TARGET_CPU = i386
|
||||
GNU_TARGET = i386-rtems
|
||||
|
||||
MUNCH_SUFFIX = .boot
|
||||
define MUNCH_CMD
|
||||
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary -R .comment -S $< $@
|
||||
endef
|
||||
|
||||
OP_SYS_LDLIBS += -Wl,--gc-sections
|
||||
ARCH_DEP_LDFLAGS = -L$(RTEMS_BASE)/$(GNU_TARGET)$(RTEMS_VERSION)/pc686/lib/
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
|
||||
#
|
||||
# Put text segment where it will work with etherboot
|
||||
#
|
||||
OP_SYS_LDFLAGS += -Wl,-Ttext,0x100000
|
||||
|
||||
|
||||
# This check must appear after the above include
|
||||
ifneq ($(RTEMS_VERSION),5)
|
||||
$(info *** This target is not compatible with the configured RTEMS version.)
|
||||
$(info *** Build the RTEMS-pc386 (-qemu) target for RTEMS 4.x)
|
||||
$(error Can't continue)
|
||||
endif
|
||||
11
configure/os/CONFIG.Common.RTEMS-pc686-qemu
Normal file
11
configure/os/CONFIG.Common.RTEMS-pc686-qemu
Normal file
@@ -0,0 +1,11 @@
|
||||
# CONFIG.Common.RTEMS-pc686-qemu
|
||||
#
|
||||
# Definitions for the RTEMS-pc686-qemu target
|
||||
# Site-specific overrides go in CONFIG_SITE.Common.RTEMS-pc686-qemu
|
||||
#
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions from RTEMS-pc686
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS-pc686
|
||||
|
||||
RTEMS_QEMU_FIXUPS = YES
|
||||
@@ -1,10 +0,0 @@
|
||||
#
|
||||
# Author: W. Eric Norum
|
||||
# University of Saskatchewan
|
||||
# eric.norum@usask.ca
|
||||
#
|
||||
# All RTEMS targets use the same Makefile fragment
|
||||
#
|
||||
RTEMS_BSP = psim
|
||||
RTEMS_TARGET_CPU = ppc
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
48
configure/os/CONFIG.Common.RTEMS-qoriq_e500
Normal file
48
configure/os/CONFIG.Common.RTEMS-qoriq_e500
Normal file
@@ -0,0 +1,48 @@
|
||||
#
|
||||
# CONFIG.Common.RTEMS-qoriq_e500
|
||||
# Author: Heinz Junkes <junkes@fhi-berlin.mpg.de>
|
||||
#
|
||||
# All RTEMS targets use the same Makefile fragment
|
||||
#
|
||||
EXE = .elf
|
||||
RTEMS_BSP = qoriq_e500
|
||||
RTEMS_TARGET_CPU = powerpc
|
||||
GNU_TARGET = powerpc-rtems
|
||||
# optimization trouble in postfix.c
|
||||
ARCH_DEP_CFLAGS += -DRTEMS_HAS_ALTIVEC
|
||||
#will use bootp
|
||||
#ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL
|
||||
|
||||
#ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_MBUF_SPACE=2048
|
||||
#ARCH_DEP_CFLAGS += -DRTEMS_NETWORK_CONFIG_CLUSTER_SPACE=5120
|
||||
|
||||
#netbsdlib
|
||||
#ARCH_DEP_CFLAGS += -I$(RTEMS_BASE)/powerpc-rtems5/qoriq_e500/lib/include
|
||||
|
||||
#OP_SYS_LDLIBS += -lbspExt #does not use posix stuff ... want to ignore
|
||||
OP_SYS_LDLIBS += -Wl,--gc-sections
|
||||
#ARCH_DEP_LDFLAGS = -mcpu=8540 -meabi -msdata=sysv -mstrict-align -mspe -mabi=spe -mfloat-gprs=double
|
||||
ARCH_DEP_LDFLAGS = -L$(RTEMS_BASE)/powerpc-rtems5/qoriq_e500/lib
|
||||
|
||||
MUNCH_SUFFIX = .img
|
||||
MUNCHNAME = $(PRODNAME:%$(EXE)=%$(MUNCH_SUFFIX))
|
||||
define MUNCH_CMD
|
||||
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary $< $@
|
||||
gzip -9 -f $@
|
||||
$(RTEMS_TOOLS)/bin/mkimage.py -A ppc -O linux -T kernel -a 0x4000 -e 0x4000 -n $* -d $@.gz $*.img
|
||||
endef
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
|
||||
RTEMSSYMS=$(PRODNAME:%$(EXE)=%.sym)
|
||||
RTEMSIMGS=$(PRODNAME:%$(EXE)=%.bin)
|
||||
INSTALL_RTEMSSYMS=$(RTEMSSYMS:%=$(INSTALL_BIN)/%)
|
||||
INSTALL_RTEMSIMGS=$(RTEMSIMGS:%=$(INSTALL_BIN)/%)
|
||||
|
||||
%.sym: %$(EXE)
|
||||
$(XSYMS) $^ $@
|
||||
|
||||
%.bin: %$(EXE)
|
||||
$(OBJCOPY) -Obinary $^ $@
|
||||
|
||||
#PRODTARGETS+=$(INSTALL_RTEMSSYMS) $(INSTALL_RTEMSIMGS)
|
||||
@@ -9,6 +9,10 @@ RTEMS_BSP = uC5282
|
||||
RTEMS_TARGET_CPU = m68k
|
||||
ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL
|
||||
|
||||
# Hopefully a temporary fix:
|
||||
ARCH_DEP_CXXFLAGS_5 = -std=c++98
|
||||
ARCH_DEP_CXXFLAGS += $(ARCH_DEP_CXXFLAGS_$(RTEMS_VERSION))
|
||||
|
||||
MUNCH_SUFFIX = .boot
|
||||
define MUNCH_CMD
|
||||
$(RTEMS_TOOLS)/bin/$(OBJCOPY_FOR_TARGET) -O binary -R .comment -S $< $@
|
||||
|
||||
20
configure/os/CONFIG.Common.RTEMS-xilinx_zynq_a9_qemu
Normal file
20
configure/os/CONFIG.Common.RTEMS-xilinx_zynq_a9_qemu
Normal file
@@ -0,0 +1,20 @@
|
||||
#
|
||||
# CONFIG.Common.RTEMS-xilinx_zynq_a9_qemu
|
||||
# Author: Heinz Junkes <junkes@fhi-berlin.mpg.de>
|
||||
#
|
||||
# All RTEMS targets use the same Makefile fragment
|
||||
#
|
||||
#EXE = .elf
|
||||
RTEMS_BSP = xilinx_zynq_a9_qemu
|
||||
RTEMS_TARGET_CPU = arm
|
||||
GNU_TARGET = arm-rtems
|
||||
|
||||
#use dhcp/bootp
|
||||
ARCH_DEP_CFLAGS += -DMY_DO_BOOTP=NULL
|
||||
|
||||
OP_SYS_LDLIBS += -Wl,--gc-sections
|
||||
ARCH_DEP_LDFLAGS = -L$(RTEMS_BASE)/$(GNU_TARGET)$(RTEMS_VERSION)/xilinx_zynq_a9_qemu/lib/
|
||||
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
|
||||
19
configure/os/CONFIG.Common.RTEMS-xilinx_zynq_zedboard
Normal file
19
configure/os/CONFIG.Common.RTEMS-xilinx_zynq_zedboard
Normal file
@@ -0,0 +1,19 @@
|
||||
#
|
||||
# CONFIG.Common.RTEMS-xilinx_zynq_zedboard
|
||||
# Author: Heinz Junkes <junkes@fhi-berlin.mpg.de>
|
||||
#
|
||||
# All RTEMS targets use the same Makefile fragment
|
||||
#
|
||||
#EXE = .elf
|
||||
RTEMS_BSP = xilinx_zynq_zedboard
|
||||
RTEMS_TARGET_CPU = arm
|
||||
GNU_TARGET = arm-rtems
|
||||
|
||||
OP_SYS_LDLIBS += -Wl,--gc-sections
|
||||
ARCH_DEP_LDFLAGS = -L$(RTEMS_BASE)/$(GNU_TARGET)$(RTEMS_VERSION)/xilinx_zynq_zedboard/lib/
|
||||
|
||||
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS
|
||||
|
||||
|
||||
|
||||
@@ -56,7 +56,7 @@ SHRLIB_LDLIBS = $(addprefix -l, $($*_LDLIBS) $(LIB_LIBS) $(USR_LIBS)) \
|
||||
|
||||
SHRLIB_DEPLIB_DIRS = $(foreach word, \
|
||||
$(sort $(INSTALL_LIB)/ $(dir $($*_DEPLIBS) $(SHRLIB_DEPLIBS))), \
|
||||
$(shell $(FULLPATHNAME) $(word)))
|
||||
$(abspath $(word)))
|
||||
|
||||
SHRLIBDIR_LDFLAGS += $(SHRLIB_DEPLIB_DIRS:%=-L%)
|
||||
|
||||
@@ -85,7 +85,7 @@ PROD_LDLIBS += $($(firstword $(LDLIBS_STATIC_$(STATIC_BUILD)) \
|
||||
|
||||
PROD_DEPLIB_DIRS = $(foreach word, \
|
||||
$(sort $(INSTALL_LIB)/ $(dir $($*_DEPLIBS) $(PROD_DEPLIBS))), \
|
||||
$(shell $(FULLPATHNAME) $(word)))
|
||||
$(abspath $(word)))
|
||||
|
||||
PRODDIR_LDFLAGS += $(PROD_DEPLIB_DIRS:%=-L%)
|
||||
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
# CONFIG.Common.darwin-ppc
|
||||
#
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for darwin-ppc target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.darwin-ppc
|
||||
#-------------------------------------------------------
|
||||
|
||||
#
|
||||
# To build universal binaries, configure ARCH_CLASS
|
||||
# in the file CONFIG_SITE.Common.darwin-ppc
|
||||
|
||||
# Include definitions common to all Darwin targets
|
||||
include $(CONFIG)/os/CONFIG.darwinCommon.darwinCommon
|
||||
@@ -1,14 +0,0 @@
|
||||
# CONFIG.Common.darwin-ppcx86
|
||||
#
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for Darwin universal PowerPC + x86 target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.darwin-ppcx86
|
||||
#-------------------------------------------------------
|
||||
|
||||
#
|
||||
# To build universal binaries, configure ARCH_CLASS
|
||||
# in the file CONFIG_SITE.Common.darwin-ppcx86
|
||||
|
||||
# Include definitions common to all Darwin targets
|
||||
include $(CONFIG)/os/CONFIG.darwinCommon.darwinCommon
|
||||
@@ -77,7 +77,7 @@ OP_SYS_LDFLAGS += -dynamic -Z -L$(SDK_DIR)/usr/lib -L$(SDK_DIR)/usr/lib/system
|
||||
# Shared libraries
|
||||
SHRLIB_VERSION = $(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)
|
||||
SHRLIB_LDFLAGS = -dynamiclib -flat_namespace -undefined suppress \
|
||||
-install_name $(shell $(FULLPATHNAME) $(INSTALL_LIB))/$@ \
|
||||
-install_name $(abspath $(INSTALL_LIB))/$@ \
|
||||
-compatibility_version $(EPICS_VERSION).$(EPICS_REVISION) \
|
||||
-current_version $(SHRLIB_VERSION)
|
||||
SHRLIB_SUFFIX_BASE = .dylib
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
# CONFIG.Common.linux-386
|
||||
#
|
||||
# This file is maintained by the build community.
|
||||
#
|
||||
# Definitions for linux-386 target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.linux-386
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all linux x86 targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-x86
|
||||
|
||||
ARCH_DEP_CFLAGS = -march=i386
|
||||
|
||||
ifeq ($(BUILD_CLASS),CROSS)
|
||||
VALID_BUILDS = Ioc Command
|
||||
endif
|
||||
|
||||
# If your crosscompiler name has a GNU target prefix like <gnutarget>-gcc,
|
||||
# e.g. i386-pc-linux-gnu-gcc, put a GNU_TARGET definition in
|
||||
# CONFIG_SITE.<host>.linux-386 file, e.g. GNU_TARGET=i386-pc-linux-gnu
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
# CONFIG.Common.linux-486
|
||||
#
|
||||
# Definitions for linux-486 target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.linux-486
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all linux x86 targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-x86
|
||||
|
||||
ARCH_DEP_CFLAGS = -march=i486
|
||||
|
||||
ifeq ($(BUILD_CLASS),CROSS)
|
||||
VALID_BUILDS = Ioc Command
|
||||
endif
|
||||
|
||||
# If your crosscompiler name has a GNU target prefix like <gnutarget>-gcc,
|
||||
# e.g. i486-pc-linux-gnu-gcc, put a GNU_TARGET definition in
|
||||
# CONFIG_SITE.<host>.linux-486 file, e.g. GNU_TARGET=i486-pc-linux-gnu
|
||||
|
||||
@@ -1,21 +0,0 @@
|
||||
# CONFIG.Common.linux-586
|
||||
#
|
||||
# Definitions for linux-586 target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.linux-586
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all linux x86 targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-x86
|
||||
|
||||
# i586 is equivalent to pentium
|
||||
ARCH_DEP_CFLAGS = -march=i586
|
||||
|
||||
ifeq ($(BUILD_CLASS),CROSS)
|
||||
VALID_BUILDS = Ioc Command
|
||||
endif
|
||||
|
||||
# If your crosscompiler name has a GNU target prefix like <gnutarget>-gcc,
|
||||
# e.g. i586-pc-linux-gnu-gcc, put a GNU_TARGET definition in
|
||||
# CONFIG_SITE.<host>.linux-586 file, e.g. GNU_TARGET=i586-pc-linux-gnu
|
||||
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
# CONFIG.Common.linux-686
|
||||
#
|
||||
# Definitions for linux-686 target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.linux-686
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all linux x86 targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-x86
|
||||
|
||||
# i686 is euivalent to pentiumpro
|
||||
ARCH_DEP_CFLAGS = -march=i686
|
||||
|
||||
ifeq ($(BUILD_CLASS),CROSS)
|
||||
VALID_BUILDS = Ioc Command
|
||||
endif
|
||||
|
||||
# If your crosscompiler name has a GNU target prefix like <gnutarget>-gcc,
|
||||
# e.g. i686-pc-linux-gnu-gcc, put a GNU_TARGET definition in
|
||||
# CONFIG_SITE.<host>.linux-686 file, e.g. GNU_TARGET=i686-pc-linux-gnu
|
||||
|
||||
@@ -1,19 +0,0 @@
|
||||
# CONFIG.Common.linux-athlon
|
||||
#
|
||||
# Definitions for linux-athlon target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.linux-athlon
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all linux x86 targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-x86
|
||||
|
||||
ARCH_DEP_CFLAGS += -march=athlon-mp -mfpmath=sse
|
||||
|
||||
ifeq ($(BUILD_CLASS),CROSS)
|
||||
VALID_BUILDS = Ioc Command
|
||||
endif
|
||||
|
||||
# If your crosscompiler name has a GNU target prefix like <gnutarget>-gcc,
|
||||
# e.g. athlon-pc-linux-gnu-gcc, put a GNU_TARGET definition in
|
||||
# CONFIG_SITE.<host>.linux-athlon file, e.g. GNU_TARGET=athlon-pc-linux-gnu
|
||||
|
||||
@@ -1,58 +0,0 @@
|
||||
# CONFIG.Common.linux-cris
|
||||
#
|
||||
# Author: Peter Zumbruch
|
||||
# GSI
|
||||
# P.Zumbruch@gsi.de
|
||||
#
|
||||
# Definitions for linux-cris target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.linux-cris
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
ARCH_CLASS = cris
|
||||
|
||||
ifeq ($(BUILD_CLASS),CROSS)
|
||||
GNU_TARGET = cris-axis-linux-gnu
|
||||
|
||||
# prefix of compiler tools
|
||||
CMPLR_SUFFIX =
|
||||
CMPLR_PREFIX = $(addsuffix -,$(GNU_TARGET))
|
||||
|
||||
# CROSS_TOP_DIR
|
||||
# usually AXIS_TOP_DIR is defined via
|
||||
# the init_env script of the SDK provided by Axis
|
||||
#
|
||||
## AXIS_TOP_DIR defined? Make missing mandatory variable visible
|
||||
AXIS_TOP_DIR?=UNDEFINED_ENV__AXIS_TOP_DIR
|
||||
AXIS_SDK_DIR?=$(AXIS_TOP_DIR)
|
||||
|
||||
# CROSS_INCLUDES
|
||||
AXIS_SDK_TARGET_INCLUDE_DIR = $(AXIS_SDK_DIR)/target/$(GNU_TARGET)/include
|
||||
AXIS_SDK_TARGET_INCLUDE_DIR +=$(AXIS_SDK_DIR)/target/$(GNU_TARGET)/usr/include
|
||||
|
||||
CROSS_INCLUDES = $(addprefix -isystem ,$(AXIS_SDK_TARGET_INCLUDE_DIR))
|
||||
|
||||
# CROSS_LDFLAGS
|
||||
AXIS_SDK_TARGET_LIB_DIR = $(AXIS_SDK_DIR)/target/$(GNU_TARGET)/lib
|
||||
AXIS_SDK_TARGET_LIB_DIR += $(AXIS_SDK_DIR)/target/$(GNU_TARGET)/usr/lib
|
||||
|
||||
CROSS_LDFLAGS = $(addprefix -L,$(AXIS_SDK_TARGET_LIB_DIR))
|
||||
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.linux-cris
|
||||
ifeq ($(EPICS_HOST_ARCH), linux-x86)
|
||||
-include $(CONFIG)/os/CONFIG.linux-x86.linux-cris
|
||||
-include $(CONFIG)/os/CONFIG_SITE.linux-x86.linux-cris
|
||||
endif
|
||||
endif
|
||||
|
||||
SHARED_LIBRARIES=NO
|
||||
STATIC_BUILD=YES
|
||||
|
||||
ARCH_DEP_CFLAGS += -mno-mul-bug-workaround
|
||||
OP_SYS_CFLAGS += -mlinux
|
||||
ARCH_DEP_CPPFLAGS += -D_cris_ -mlinux
|
||||
|
||||
#uncomment CRIS_COMPILER_DEBUG for debugging cris-compiled code
|
||||
#CRIS_COMPILER_DEBUG
|
||||
@@ -1,8 +0,0 @@
|
||||
# CONFIG.darwin-ppc.Common
|
||||
#
|
||||
# Definitions for darwin-ppc host builds
|
||||
# Sites may override these definitions in CONFIG_SITE.darwin-ppc.Common
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Include definitions common to unix hosts
|
||||
include $(CONFIG)/os/CONFIG.UnixCommon.Common
|
||||
@@ -1,13 +0,0 @@
|
||||
# CONFIG.darwin-ppc.darwin-ppc-debug
|
||||
#
|
||||
# Definitions for darwin-ppc host - darwin-ppc-debug target build with debug compiler flags
|
||||
# Sites may override these definitions in CONFIG_SITE.darwin-ppc.darwin-ppc-debug
|
||||
#-------------------------------------------------------
|
||||
|
||||
-include $(CONFIG)/os/CONFIG.Common.darwin-ppc
|
||||
-include $(CONFIG)/os/CONFIG.darwin-ppc.darwin-ppc
|
||||
-include $(CONFIG)/os/CONFIG_SITE.Common.darwin-ppc
|
||||
-include $(CONFIG)/os/CONFIG_SITE.darwin-ppc.darwin-ppc
|
||||
|
||||
BUILD_CLASS=HOST
|
||||
HOST_OPT = NO
|
||||
@@ -1,8 +0,0 @@
|
||||
# CONFIG.darwin-ppcx86.Common
|
||||
#
|
||||
# Definitions for Darwin universal PowerPC + x86 host builds
|
||||
# Sites may override these definitions in CONFIG_SITE.darwin-ppcx86.Common
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Include definitions common to unix hosts
|
||||
include $(CONFIG)/os/CONFIG.UnixCommon.Common
|
||||
@@ -3,6 +3,6 @@
|
||||
# Definitions for darwin-x86 host builds
|
||||
# Sites may override these definitions in CONFIG_SITE.darwin-x86.Common
|
||||
#-------------------------------------------------------
|
||||
|
||||
#support for IPv6 etc.
|
||||
#Include definitions common to unix hosts
|
||||
include $(CONFIG)/os/CONFIG.UnixCommon.Common
|
||||
|
||||
@@ -30,6 +30,7 @@ ARCH_DEP_LDFLAGS += $(ARCH_DEP_FLAGS)
|
||||
#
|
||||
# Special flags for Darwin
|
||||
# No common blocks (as required when using shared libraries)
|
||||
# OS provides socket address length
|
||||
#
|
||||
OP_SYS_CFLAGS += -fno-common
|
||||
|
||||
@@ -66,7 +67,7 @@ GNU = NO
|
||||
# Darwin shared libraries
|
||||
#
|
||||
SHRLIB_LDFLAGS = -dynamiclib -flat_namespace -undefined dynamic_lookup \
|
||||
-install_name $(shell $(FULLPATHNAME) $(INSTALL_LIB))/$@ \
|
||||
-install_name $(abspath $(INSTALL_LIB))/$@ \
|
||||
$(addprefix -compatibility_version , $(SHRLIB_VERSION)) \
|
||||
$(addprefix -current_version , $(SHRLIB_VERSION))
|
||||
SHRLIB_SUFFIX_BASE = .dylib
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
# CONFIG.linux-386.Common
|
||||
#
|
||||
# Definitions for linux-386 host builds
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-386.Common
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Include definitions common to unix hosts
|
||||
include $(CONFIG)/os/CONFIG.UnixCommon.Common
|
||||
|
||||
WIND_HOST_TYPE = x86-linux2
|
||||
@@ -1,8 +0,0 @@
|
||||
# CONFIG.linux-386.linux-386
|
||||
#
|
||||
# Definitions for linux-386 host - linux-386 target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-386.linux-386
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include linux-x86 compiler definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
@@ -1,10 +0,0 @@
|
||||
# CONFIG.linux-486.Common
|
||||
#
|
||||
# Definitions for linux-486 host builds
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-486.Common
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Include definitions common to unix hosts
|
||||
include $(CONFIG)/os/CONFIG.UnixCommon.Common
|
||||
|
||||
WIND_HOST_TYPE = x86-linux2
|
||||
@@ -1,9 +0,0 @@
|
||||
# CONFIG.linux-486.linux-486
|
||||
#
|
||||
# Definitions for linux-486 host - linux-486 target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-486.linux-486
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include linux-x86 compiler definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
# CONFIG.linux-586.Common
|
||||
#
|
||||
# Definitions for linux-586 host builds
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-586.Common
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Include definitions common to unix hosts
|
||||
include $(CONFIG)/os/CONFIG.UnixCommon.Common
|
||||
|
||||
WIND_HOST_TYPE = x86-linux2
|
||||
@@ -1,9 +0,0 @@
|
||||
# CONFIG.linux-586.linux-586
|
||||
#
|
||||
# Definitions for linux-586 host - linux-586 target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-586.linux-586
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include linux-x86 compiler definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
|
||||
@@ -1,10 +0,0 @@
|
||||
# CONFIG.linux-686.Common
|
||||
#
|
||||
# Definitions for linux-686 host builds
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-686.Common
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Include definitions common to unix hosts
|
||||
include $(CONFIG)/os/CONFIG.UnixCommon.Common
|
||||
|
||||
WIND_HOST_TYPE = x86-linux2
|
||||
@@ -1,9 +0,0 @@
|
||||
# CONFIG.linux-686.linux-686
|
||||
#
|
||||
# Definitions for linux-686 host - linux-686 target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-686.linux-686
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include linux-x86 compiler definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
|
||||
@@ -1,38 +0,0 @@
|
||||
# CONFIG.linux-x86.linux-cris
|
||||
#
|
||||
# Author: Peter Zumbruch
|
||||
# GSI
|
||||
# P.Zumbruch@gsi.de
|
||||
#
|
||||
# Definitions for linux-x86 host - linux-cris target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-x86.linux-cris
|
||||
#-------------------------------------------------------
|
||||
|
||||
GNU_DIR = $(CRIS_CROSS_COMPILER)
|
||||
|
||||
#STATIC_...
|
||||
STATIC_LDFLAGS_YES= -Wl,-Bstatic
|
||||
|
||||
## debian-gcc Bug#438641
|
||||
GNU_LDLIBS_YES =
|
||||
STATIC_LDFLAGS_YES += -static-libgcc
|
||||
|
||||
# if not in debug mode strip all symbols
|
||||
ifndef CRIS_COMPILER_DEBUG
|
||||
STATIC_LDFLAGS_YES += -Wl,--strip-all
|
||||
endif
|
||||
|
||||
ifeq ($(GNU),YES)
|
||||
STATIC_LDFLAGS_NO = -lgcc
|
||||
else
|
||||
STATIC_LDFLAGS_NO =
|
||||
endif
|
||||
|
||||
STATIC_LDLIBS_YES=
|
||||
STATIC_LDLIBS_NO=
|
||||
|
||||
OPT_CXXFLAGS_YES = -Os
|
||||
|
||||
ifeq ($(STATIC_BUILD), YES)
|
||||
$(shell echo yes)
|
||||
endif
|
||||
@@ -1,20 +0,0 @@
|
||||
# CONFIG.linux-x86.linux-cris_v10
|
||||
#
|
||||
# Author: Peter Zumbruch
|
||||
# GSI
|
||||
# P.Zumbruch@gsi.de
|
||||
#
|
||||
# Definitions for linux-x86 host - linux-cris_v10 target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-x86.linux-cris_v10
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all linux-cris targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-cris
|
||||
|
||||
GNU_TARGET = cris-axis-linux-gnu
|
||||
|
||||
ARCH_DEP_CFLAGS += -march=v10
|
||||
|
||||
# if you are using different places for cris_v10 cris_v32
|
||||
# you have to define for each architecture
|
||||
# AXIS_SDK_DIR=<AXIS_TOP_DIR_v10>
|
||||
@@ -1,20 +0,0 @@
|
||||
# CONFIG.linux-x86.linux-cris_v32
|
||||
#
|
||||
# Author: Peter Zumbruch
|
||||
# GSI
|
||||
# P.Zumbruch@gsi.de
|
||||
#
|
||||
# Definitions for linux-x86 host - linux-cris_v32 target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.linux-x86.linux-cris_v32
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include definitions common to all linux-cris targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-cris
|
||||
|
||||
GNU_TARGET = crisv32-axis-linux-gnu
|
||||
|
||||
ARCH_DEP_CFLAGS += -march=v32
|
||||
|
||||
# if you are using different places for cris_v10 cris_v32
|
||||
# you have to define for each architecture
|
||||
# AXIS_SDK_DIR=<AXIS_TOP_DIR_v32>
|
||||
@@ -11,6 +11,3 @@ STATIC_LDFLAGS_YES= -Wl,-Bstatic
|
||||
STATIC_LDFLAGS_NO=
|
||||
STATIC_LDLIBS_YES= -Wl,-Bdynamic
|
||||
STATIC_LDLIBS_NO=
|
||||
|
||||
SHRLIB_LDFLAGS += -Wl,-h$@
|
||||
LOADABLE_SHRLIB_LDFLAGS += -Wl,-h$@
|
||||
|
||||
@@ -18,6 +18,6 @@ STATIC_LDLIBS_NO=
|
||||
|
||||
OP_SYS_LDFLAGS += -z ignore -z combreloc -z lazyload
|
||||
|
||||
SHRLIB_LDFLAGS += -Wl,-z,defs -Wl,-z,text -Wl,-h,$@
|
||||
LOADABLE_SHRLIB_LDFLAGS += -Wl,-z,text -Wl,-h,$@
|
||||
SHRLIB_LDFLAGS += -Wl,-z,defs -Wl,-z,text
|
||||
LOADABLE_SHRLIB_LDFLAGS += -Wl,-z,text
|
||||
GNU_LDLIBS_YES += -lc
|
||||
|
||||
@@ -49,9 +49,9 @@ OPT_CFLAGS_YES_NO = -Ox -Oy-
|
||||
OPT_CFLAGS_YES = $(OPT_CFLAGS_YES_$(OPT_WHOLE_PROGRAM))
|
||||
|
||||
#
|
||||
# -Zi generate program database for debugging information
|
||||
# -Z7 generate C7 compatible debugging information (inside .obj)
|
||||
# -RTCsu enable run-time error checks
|
||||
OPT_CFLAGS_NO = -Zi -RTCsu
|
||||
OPT_CFLAGS_NO = -Z7 -RTCsu
|
||||
|
||||
# specify object file name and location
|
||||
OBJ_CFLAG = -Fo
|
||||
@@ -119,9 +119,9 @@ OPT_CXXFLAGS_YES_NO = -Ox -Oy-
|
||||
OPT_CXXFLAGS_YES = $(OPT_CXXFLAGS_YES_$(OPT_WHOLE_PROGRAM))
|
||||
|
||||
#
|
||||
# -Zi generate program database for debugging information
|
||||
# -Z7 generate C7 compatible debugging information (inside .obj)
|
||||
# -RTCsu enable run-time error checks
|
||||
OPT_CXXFLAGS_NO = -RTCsu -Zi
|
||||
OPT_CXXFLAGS_NO = -RTCsu -Z7
|
||||
|
||||
# specify object file name and location
|
||||
OBJ_CXXFLAG = -Fo
|
||||
@@ -143,20 +143,6 @@ STATIC_LDLIBS_NO=
|
||||
STATIC_LDFLAGS=
|
||||
RANLIB=
|
||||
|
||||
#
|
||||
# option needed for parallel builds with Visual Studio 2013 onward
|
||||
# VS2012 and above have VisualStudioVersion, so just need to exclude 2012 (11.0)
|
||||
# -FS Force Synchronous PDB Writes
|
||||
#
|
||||
ifneq ($(VisualStudioVersion),)
|
||||
ifneq ($(VisualStudioVersion),11.0)
|
||||
OPT_CXXFLAGS_NO += -FS
|
||||
OPT_CFLAGS_NO += -FS
|
||||
endif
|
||||
endif
|
||||
|
||||
|
||||
#
|
||||
# add -profile here to run the ms profiler
|
||||
# -LTCG whole program optimization
|
||||
# -incremental:no full linking
|
||||
|
||||
@@ -3,11 +3,26 @@
|
||||
# Site-specific information for all RTEMS targets
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Where to find RTEMS
|
||||
# Where to find RTEMS, and what version is it
|
||||
#
|
||||
# RTEMS_BASE must point to the specific installation of RTEMS to
|
||||
# build the target code with.
|
||||
# RTEMS_VERSION is used in the path to the toolsets inside that
|
||||
# installation. For RTEMS 5 only the major version number is
|
||||
# used, but for RTEMS 4.10.2 say all 3 components are required.
|
||||
#
|
||||
|
||||
# FHI:
|
||||
#RTEMS_VERSION = 5
|
||||
#RTEMS_BASE = /home/h1/DBG/rtems
|
||||
#RTEMS_BASE = /home/ad/MVME6100/rtems/$(RTEMS_VERSION)
|
||||
#RTEMS_BASE = /opt/RTEMS/qoriq/rtems/$(RTEMS_VERSION)
|
||||
|
||||
# APS:
|
||||
RTEMS_VERSION = 4.10.2
|
||||
RTEMS_BASE = /usr/local/vw/rtems/rtems-$(RTEMS_VERSION)
|
||||
#RTEMS_VERSION = 4.10.2
|
||||
#RTEMS_BASE = /usr/local/vw/rtems/rtems-4.10.2
|
||||
#RTEMS_VERSION = 5
|
||||
#RTEMS_BASE = /usr/local/vw/rtems/rtems-5.1
|
||||
|
||||
# Cross-compile toolchain in $(RTEMS_TOOLS)/bin
|
||||
#
|
||||
|
||||
@@ -6,4 +6,4 @@
|
||||
# If you're building this architecture you _probably_ want to
|
||||
# run the tests for it under QEMU, but if not you can turn
|
||||
# them off here by commenting out this line:
|
||||
CROSS_COMPILER_RUNTEST_ARCHS += RTEMS-pc386-qemu
|
||||
CROSS_COMPILER_RUNTEST_ARCHS += $(T_A)
|
||||
|
||||
9
configure/os/CONFIG_SITE.Common.RTEMS-pc686-qemu
Normal file
9
configure/os/CONFIG_SITE.Common.RTEMS-pc686-qemu
Normal file
@@ -0,0 +1,9 @@
|
||||
# CONFIG_SITE.Common.RTEMS-pc686-qemu
|
||||
#
|
||||
# Site-specific overrides for the RTEMS-pc686-qemu target
|
||||
#
|
||||
|
||||
# If you're building this architecture you _probably_ want to
|
||||
# run the tests for it under QEMU, but if not you can turn
|
||||
# them off here by commenting out this line:
|
||||
CROSS_COMPILER_RUNTEST_ARCHS += $(T_A)
|
||||
@@ -1,12 +0,0 @@
|
||||
# CONFIG_SITE.Common.darwin-ppc
|
||||
#
|
||||
# Site override definitions for darwin-ppc target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Select which CPU architectures to include in your universal binaries:
|
||||
# ppc
|
||||
# ppc64 - Not tested
|
||||
|
||||
ARCH_CLASS = ppc
|
||||
#ARCH_CLASS = ppc64
|
||||
#ARCH_CLASS = ppc ppc64
|
||||
@@ -1,20 +0,0 @@
|
||||
# CONFIG_SITE.Common.darwin-ppcx86
|
||||
#
|
||||
# Site override definitions for darwin-ppcx86 target builds
|
||||
#----------------------------------------------------------
|
||||
|
||||
# Select which CPU architectures to include in your universal binaries:
|
||||
# ppc
|
||||
# i386
|
||||
# ppc64 - Not tested
|
||||
# x86_64 - Needs MacOS 10.4 with Universal SDK, or 10.5 or later.
|
||||
|
||||
ARCH_CLASS = ppc i386
|
||||
#ARCH_CLASS = ppc x86_64
|
||||
#ARCH_CLASS = ppc i386 x86_64
|
||||
#ARCH_CLASS = ppc64 i386
|
||||
#ARCH_CLASS = ppc64 x86_64
|
||||
#ARCH_CLASS = ppc64 i386 x86_64
|
||||
#ARCH_CLASS = ppc ppc64 i386
|
||||
#ARCH_CLASS = ppc ppc64 x86_64
|
||||
#ARCH_CLASS = ppc ppc64 i386 x86_64
|
||||
@@ -4,14 +4,12 @@
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Select which CPU architecture(s) to include in your MacOS binaries:
|
||||
# i386, x86_64, or both (fat binaries).
|
||||
# x86_64 only, or arm64 as well (fat binaries).
|
||||
|
||||
#ARCH_CLASS = i386
|
||||
ARCH_CLASS = x86_64
|
||||
#ARCH_CLASS = i386 x86_64
|
||||
#ARCH_CLASS = arm64 x86_64
|
||||
|
||||
#
|
||||
# Uncomment the following 3 lines to build with Apple's GCC instead of CLANG.
|
||||
# Uncomment the following 3 lines to build with GCC instead of CLANG.
|
||||
#
|
||||
#CMPLR_CLASS = gcc
|
||||
#CC = gcc
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
# CONFIG_SITE.Common.linux-cris
|
||||
#
|
||||
# Site-specific settings for the linux-cris target
|
||||
|
||||
# NOTE: In most cases if SHARED_LIBRARIES is set to YES the
|
||||
# shared libraries will be found automatically. However if the .so
|
||||
# files are installed at a different path to their compile-time path
|
||||
# then in order to be found at runtime do one of these:
|
||||
# a) LD_LIBRARY_PATH must include the full absolute pathname to
|
||||
# $(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH) when invoking base
|
||||
# executables.
|
||||
# b) Add the runtime path to SHRLIB_DEPLIB_DIRS and PROD_DEPLIB_DIRS, which
|
||||
# will add the named directory to the list contained in the executables.
|
||||
# c) Add the runtime path to /etc/ld.so.conf and run ldconfig
|
||||
# to inform the system of the shared library location.
|
||||
|
||||
|
||||
# Use GNU Readline if the header file is installed
|
||||
COMMANDLINE_LIBRARY = $(strip $(if $(wildcard \
|
||||
$(GNU_DIR)/include/readline/readline.h), READLINE, EPICS))
|
||||
|
||||
# If libreadline needs additional libraries to be linked with it, try
|
||||
# uncommenting each of the lines below in turn, starting with the top
|
||||
# one and working downwards, until the build succeeds. Do a 'make rebuild'
|
||||
# from the top of the Base tree after changing this setting.
|
||||
|
||||
# Needs -lncurses:
|
||||
#COMMANDLINE_LIBRARY = READLINE_NCURSES
|
||||
|
||||
# Needs -lcurses:
|
||||
#COMMANDLINE_LIBRARY = READLINE_CURSES
|
||||
|
||||
# Readline is broken or you don't want use it:
|
||||
#COMMANDLINE_LIBRARY = EPICS
|
||||
@@ -1,4 +0,0 @@
|
||||
# CONFIG_SITE.darwin-ppc.Common
|
||||
#
|
||||
# Site override definitions for darwin-ppc host builds
|
||||
#-------------------------------------------------------
|
||||
@@ -1,4 +0,0 @@
|
||||
# CONFIG_SITE.darwin-ppcx86.Common
|
||||
#
|
||||
# Site override definitions for darwin-ppcx86 host builds
|
||||
#-------------------------------------------------------
|
||||
@@ -3,7 +3,5 @@
|
||||
# Site override definitions for linux-x86 host builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# JBA test override values
|
||||
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040 solaris-sparc
|
||||
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040
|
||||
#CROSS_COMPILER_TARGET_ARCHS = RTEMS-mvme2100 RTEMS-pc386 # RTEMS-mvme5500 RTEMS-mvme167
|
||||
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-ppc32
|
||||
#CROSS_COMPILER_TARGET_ARCHS = RTEMS-mvme2100 RTEMS-pc386-qemu
|
||||
|
||||
@@ -1,14 +0,0 @@
|
||||
# CONFIG_SITE.linux-x86.linux-cris
|
||||
#
|
||||
# Author: Peter Zumbruch
|
||||
# GSI
|
||||
# P.Zumbruch@gsi.de
|
||||
#
|
||||
# Site specific definitions for linux-x86 host - linux-cris target builds
|
||||
#-------------------------------------------------------
|
||||
|
||||
# define site specific location of cris cross compiler's gnu directory
|
||||
# but without bin sub directory, this will be added automatically.
|
||||
|
||||
CRIS_CROSS_COMPILER ?= UNDEFINED_ENV__CRIS_CROSS_COMPILER
|
||||
|
||||
37
configure/toolchain.c
Normal file
37
configure/toolchain.c
Normal file
@@ -0,0 +1,37 @@
|
||||
#ifdef _COMMENT_
|
||||
/* Extract compiler pre-defined macros as Make variables
|
||||
*
|
||||
* Expanded as $(INSTALL_CFG)/TOOLCHAIN.$(EPICS_HOST_ARCH).$(T_A)
|
||||
*
|
||||
* Must be careful not to #include any C definitions
|
||||
* into what is really a Makefile snippet
|
||||
*
|
||||
* cf. https://sourceforge.net/p/predef/wiki/Home/
|
||||
*/
|
||||
/* GCC preprocessor drops C comments from output.
|
||||
* MSVC preprocessor emits C comments in output
|
||||
*/
|
||||
#endif
|
||||
|
||||
#if defined(__GNUC__) && !defined(__clang__)
|
||||
GCC_MAJOR = __GNUC__
|
||||
GCC_MINOR = __GNUC_MINOR__
|
||||
GCC_PATCH = __GNUC_PATCHLEVEL__
|
||||
|
||||
#elif defined(__clang__)
|
||||
CLANG_MAJOR = __clang_major__
|
||||
CLANG_MINOR = __clang_minor__
|
||||
CLANG_PATCH = __clang_patchlevel__
|
||||
|
||||
#elif defined(_MSC_VER)
|
||||
MSVC_VER = _MSC_VER
|
||||
#endif
|
||||
|
||||
#ifdef __rtems__
|
||||
#include <rtems/score/cpuopts.h>
|
||||
# if __RTEMS_MAJOR__>=5
|
||||
OS_API = posix
|
||||
# else
|
||||
OS_API = score
|
||||
# endif
|
||||
#endif
|
||||
@@ -2300,7 +2300,7 @@ PLANTUML_JAR_PATH =
|
||||
# Minimum value: 0, maximum value: 10000, default value: 50.
|
||||
# This tag requires that the tag HAVE_DOT is set to YES.
|
||||
|
||||
DOT_GRAPH_MAX_NODES = 50
|
||||
DOT_GRAPH_MAX_NODES = 100
|
||||
|
||||
# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs
|
||||
# generated by dot. A depth value of 3 means that only nodes reachable from the
|
||||
|
||||
@@ -1,67 +0,0 @@
|
||||
cross compiling EPICS and
|
||||
building IOC Applications for cris architectures
|
||||
(linux-cris_v10, linux-cris_v32)
|
||||
======================================================================
|
||||
|
||||
Please mail questions, comments, corrections, etc. ...
|
||||
to P.Zumbruch@gsi.de
|
||||
November 2007
|
||||
|
||||
Tools needed
|
||||
------------
|
||||
|
||||
o Axis SDK
|
||||
- Overview:
|
||||
http://developer.axis.com/wiki/doku.php?id=axis:sdk
|
||||
- Download:
|
||||
http://www.axis.com/products/dev_sdk/download_dist.php
|
||||
- Install HOWTO:
|
||||
http://developer.axis.com/wiki/doku.php?id=axis:software_distribution_install_howto
|
||||
o Axis GNU gcc release for cross compiling
|
||||
- Download:
|
||||
http://www.axis.com/products/dev_sdk/download_compiler.php
|
||||
- Install HOWTO:
|
||||
http://developer.axis.com/wiki/doku.php?id=axis:compiler_install
|
||||
|
||||
Environment
|
||||
-----------
|
||||
|
||||
o CRIS_CROSS_COMPILER
|
||||
- path to top directory of cris cross compiler,
|
||||
where binaries are in sub directory bin/
|
||||
- if not set, the make process will stop at place
|
||||
UNDEFINED_ENV__CRIS_CROSS_COMPILER
|
||||
o AXIS_TOP_DIR?=UNDEFINED_ENV__AXIS_TOP_DIR
|
||||
- path to axis SDK top directory
|
||||
- if not set compile and link commands will contain references to
|
||||
UNDEFINED_ENV__AXIS_TOP_DIR
|
||||
- to set the necessary variables, execute
|
||||
. ./init_env
|
||||
in the top directory of the SDK provided here.
|
||||
o CRIS_COMPILER_DEBUG
|
||||
- if defined symbols won't be stripped,
|
||||
resulting in comparably large files
|
||||
|
||||
Building
|
||||
--------
|
||||
|
||||
o Edit the CONFIG_SITE files
|
||||
- CONFIG_SITE.linux-x86.Common:
|
||||
for CROSS_COMPILER_TARGET_ARCHS += linux-cris_v10
|
||||
for CROSS_COMPILER_TARGET_ARCHS += linux-cris_v32
|
||||
- optionally CONFIG_SITE.linux-x86.linux-cris
|
||||
for setting CRIS_CROSS_COMPILER
|
||||
- optionally create CONFIG_SITE.linux-x86.linux-cris_v10
|
||||
- optionally create CONFIG_SITE.linux-x86.linux-cris_v32
|
||||
o "make".
|
||||
|
||||
Shared Libraries
|
||||
----------------
|
||||
|
||||
Generating shared libraries is not supported.
|
||||
|
||||
|
||||
Please feel free to contact me if you
|
||||
encounter serious problems.
|
||||
|
||||
Peter
|
||||
@@ -1,184 +0,0 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>Installation notes for EPICS on Mac OS X (Darwin)</title>
|
||||
</head>
|
||||
<body>
|
||||
|
||||
|
||||
<h1>Building EPICS base</h1>
|
||||
<ul>
|
||||
<li>
|
||||
To build base:
|
||||
<ol>
|
||||
<li>
|
||||
Set the EPICS_HOST_ARCH environment variable to darwin-ppc, darwin-x86 or darwin-ppcx86.
|
||||
The scripts in the
|
||||
base/startup directory can automate this. For example, here's part
|
||||
of my Bash login script (~/.bash_login):
|
||||
<pre>
|
||||
#
|
||||
# EPICS
|
||||
#
|
||||
EPICS_BASE="${HOME}/src/EPICS/base"
|
||||
EPICS_EXTENSIONS="${HOME}/src/EPICS/extensions"
|
||||
<strong>.</strong> "${EPICS_BASE}"/startup/unix.sh
|
||||
</pre>
|
||||
</li>
|
||||
<li>
|
||||
<code>cd</code> to the EPICS base top-level source directory.
|
||||
</li>
|
||||
<li>
|
||||
Uncomment the appropriate line in the relevent
|
||||
EPICS_BASE/configure/os/CONFIG_SITE.Common.darwin-xxx file for your EPICS_HOST_ARCH value.
|
||||
Newer versions of OS X (e.g. Snow Leopard) may include only 64 bit versions of some OS libraries,
|
||||
so should only have the x86_64 ARCH_CLASS.
|
||||
</li>
|
||||
<li>
|
||||
Run <code>make</code>.
|
||||
</li>
|
||||
</ol>
|
||||
|
||||
</li>
|
||||
|
||||
<li>
|
||||
As distributed, EPICS on Mac OS X uses the readline command line input
|
||||
routines. IOC applications are more pleasant to interact with if
|
||||
either the readline or libtecla library is used. The easiest
|
||||
way to get either or both of these libraries on to your system is to
|
||||
download and install them using the either the DarwinPorts
|
||||
distribution or the Fink package manager. If you don't want to install
|
||||
the readline library, set the COMMANDLINE_LIBRARY variable in one of
|
||||
the CONFIG_SITE files to EPICS.
|
||||
<p>
|
||||
Information on DarwinPorts is available from
|
||||
<a href="http://www.opendarwin.org/projects/darwinports/">the DarwinPorts
|
||||
project page</a>.
|
||||
DarwinPorts binary packages are available from
|
||||
<a href="http://packages.opendarwin.org/">here</a>.
|
||||
<p>
|
||||
Fink may be downloaded from
|
||||
<a href="http://fink.sourceforge.net/">the Source Forge</a>.
|
||||
</li>
|
||||
|
||||
<li>
|
||||
If broadcasts are not seen locally, try adding "localhost" (127.0.0.1)
|
||||
to the EPICS_CA_ADDR_LIST.
|
||||
</li>
|
||||
</ul>
|
||||
|
||||
<h1>Building EPICS extensions</h1>
|
||||
<p>
|
||||
Many extensions build and run properly on OS X. To build and run medm, first
|
||||
obtain the X11 run-time and developer packages from Apple and the OpenMotif3
|
||||
package from Fink.
|
||||
|
||||
<h1>Objective-C and AppleScript</h1>
|
||||
<p>
|
||||
Code written in Objective-C can be included in host or IOC applications.
|
||||
Here are a couple of short Objective-C examples which can be used to send
|
||||
AppleScript events to other applications on the OS X machine.
|
||||
|
||||
<pre>
|
||||
/*
|
||||
* exampleAppleScriptRecord.m
|
||||
*
|
||||
* Simple Objective-C/AppleScript subroutine record
|
||||
*
|
||||
* To use this record in an application:
|
||||
*
|
||||
* 1) Make the following changes to the application Makefile:
|
||||
* - Add exampleAppleScriptRecord.m to the application SRCS.
|
||||
* - Add -framework Foundation to the application LDFLAGS.
|
||||
* 2) Add the following line to the application database description:
|
||||
* registrar(registerExampleAppleScript)
|
||||
* 3) Add a record to the application database:
|
||||
* record(sub,"setVolume")
|
||||
* {
|
||||
* field(SNAM,"exampleAppleScriptProcess")
|
||||
* }
|
||||
*/
|
||||
#import <Foundation/Foundation.h>
|
||||
#include <registryFunction.h>
|
||||
#include <subRecord.h>
|
||||
#include <alarm.h>
|
||||
#include <errlog.h>
|
||||
#include <recGbl.h>
|
||||
#include <epicsExport.h>
|
||||
|
||||
/*
|
||||
* Shim between EPICS and NSAppleScript class.
|
||||
*/
|
||||
static long
|
||||
exampleAppleScriptProcess(struct subRecord *psub)
|
||||
{
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
NSDictionary *err;
|
||||
NSAppleScript *nsa;
|
||||
|
||||
nsa = [[NSAppleScript alloc] initWithSource:[NSString stringWithFormat:
|
||||
@"tell application \"Finder\" to set volume %g\n", psub->a]];
|
||||
if ([nsa executeAndReturnError:&err] == nil) {
|
||||
errlogPrintf("Failed to run AppleScript: %s\n",
|
||||
[[err objectForKey:NSAppleScriptErrorMessage] cString]);
|
||||
recGblSetSevr(psub, SOFT_ALARM, INVALID_ALARM);
|
||||
}
|
||||
[nsa release];
|
||||
[pool release];
|
||||
return 0;
|
||||
}
|
||||
|
||||
static registryFunctionRef subRef[] = {
|
||||
{"exampleAppleScriptProcess",(REGISTRYFUNCTION)exampleAppleScriptProcess}
|
||||
};
|
||||
|
||||
static void registerExampleAppleScript(void)
|
||||
{
|
||||
registryFunctionRefAdd(subRef,NELEMENTS(subRef));
|
||||
}
|
||||
epicsExportRegistrar(registerExampleAppleScript);
|
||||
|
||||
|
||||
==============================================================================
|
||||
/*
|
||||
* runAppleScript.m
|
||||
*
|
||||
* Simple Objective-C/AppleScript shim to allow EPICS application to
|
||||
* send arbitrary AppleScript messages to other applications.
|
||||
*
|
||||
* To use this subroutine in an application make the following
|
||||
* changes to the application Makefile:
|
||||
* - Add runAppleScript.m to the application SRCS.
|
||||
* - Add -framework Foundation to the application LDFLAGS.
|
||||
*/
|
||||
#import <Foundation/Foundation.h>
|
||||
#include <errlog.h>
|
||||
|
||||
int
|
||||
runAppleScript(const char *format, ...)
|
||||
{
|
||||
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
|
||||
NSString *script;
|
||||
NSMutableDictionary *err;
|
||||
NSAppleScript *nsa;
|
||||
va_list args;
|
||||
int ret = 0;
|
||||
|
||||
va_start(args, format);
|
||||
script = [[NSString alloc] initWithFormat:
|
||||
[NSString stringWithCString:format] arguments:args];
|
||||
va_end(args);
|
||||
err = [NSMutableDictionary dictionaryWithCapacity:10];
|
||||
nsa = [[NSAppleScript alloc] initWithSource:script];
|
||||
if ([nsa executeAndReturnError:&err] == nil) {
|
||||
errlogPrintf("Failed to run AppleScript: %s\n",
|
||||
[[err objectForKey:NSAppleScriptErrorMessage] cString]);
|
||||
ret = -1;
|
||||
}
|
||||
[script release];
|
||||
[nsa release];
|
||||
[pool release];
|
||||
return ret;
|
||||
}
|
||||
</pre>
|
||||
</body>
|
||||
</html>
|
||||
@@ -1,27 +1,28 @@
|
||||
# Installation Instructions {#install}
|
||||
|
||||
## EPICS Base Release 7.0.5
|
||||
## EPICS Base Release 7.0.x
|
||||
|
||||
-----
|
||||
|
||||
### Table of Contents
|
||||
|
||||
- [What is EPICS base?](#0_0_1)
|
||||
- [What is new in this release?](#0_0_2)
|
||||
- [Copyright](#0_0_3)
|
||||
- [Supported platforms](#0_0_4)
|
||||
- [Supported compilers](#0_0_5)
|
||||
- [Software requirements](#0_0_6)
|
||||
- [Documentation](#0_0_8)
|
||||
- [Directory Structure](#0_0_10)
|
||||
- [Build related components](#0_0_11)
|
||||
- [Building EPICS base (Unix and Win32)](#0_0_12)
|
||||
- [Example application and extension](#0_0_13)
|
||||
- [Multiple host platforms](#0_0_14)
|
||||
- [What is EPICS base?](#what-is-epics-base?)
|
||||
- [What is new in this release?](#what-is-new-in-this-release?)
|
||||
- [Copyright](#copyright)
|
||||
- [Supported platforms](#supported-platforms)
|
||||
- [Supported compilers](#supported-compilers)
|
||||
- [Software requirements](#software-requirements)
|
||||
- [Host system storage requirements](#host-system-storage-requirements)
|
||||
- [Documentation](#documentation)
|
||||
- [Directory Structure](#directory-structure)
|
||||
- [Site-specific build configuration](#site-specific-build-configuration)
|
||||
- [Building EPICS base](#building-epics-base)
|
||||
- [Example application and extension](#example-application-and-extension)
|
||||
- [Multiple host platforms](#multiple-host-platforms)
|
||||
|
||||
-----
|
||||
|
||||
### <span id="0_0_1">What is EPICS base?</span>
|
||||
### What is EPICS base?
|
||||
|
||||
The Experimental Physics and Industrial Control Systems (EPICS) is an
|
||||
extensible set of software components and tools with which application
|
||||
@@ -33,17 +34,17 @@ function. EPICS base allows an arbitrary number of target systems,
|
||||
IOCs (input/output controllers), and host systems, OPIs (operator
|
||||
interfaces) of various types.
|
||||
|
||||
### <span id="0_0_2">What is new in this release?</span>
|
||||
### What is new in this release?
|
||||
|
||||
Please check the `RELEASE_NOTES` file in the distribution for
|
||||
Please check the `documentation/RELEASE_NOTES.md` file for
|
||||
description of changes and release migration details.
|
||||
|
||||
### <span id="0_0_3">Copyright Licenses</span>
|
||||
### Copyright
|
||||
|
||||
Please review the LICENSE file included in the distribution for legal
|
||||
terms of usage.
|
||||
Please review the `LICENSE` file included in the distribution for
|
||||
legal terms of usage.
|
||||
|
||||
### <span id="0_0_4">Supported platforms</span>
|
||||
### Supported platforms
|
||||
|
||||
The list of platforms supported by this version of EPICS base is given
|
||||
in the `configure/CONFIG_SITE` file. If you are trying to build EPICS
|
||||
@@ -54,7 +55,7 @@ base/configure/os/directory. You can start by copying existing
|
||||
configuration files in the configure/os directory and then make
|
||||
changes for your new platforms.
|
||||
|
||||
### <span id="0_0_5">Supported compilers</span>
|
||||
### Supported compilers
|
||||
|
||||
This version of EPICS base has been built and tested using the host
|
||||
vendor's C and C++ compilers, as well as the GNU gcc and g++
|
||||
@@ -63,27 +64,33 @@ targets. You may need the C and C++ compilers to be in your search
|
||||
path to do EPICS builds; check the definitions of CC and CCC in
|
||||
`base/configure/os/CONFIG.<host>.<host>` if you have problems.
|
||||
|
||||
### <span id="0_0_6">Software requirements</span>
|
||||
### Software requirements
|
||||
|
||||
**GNU make**
|
||||
You must use GNU make, gnumake, for any EPICS builds. Set your path so
|
||||
that a gnumake version 4.1 or later is available.
|
||||
#### GNU make
|
||||
|
||||
**Perl**
|
||||
You must have Perl version 5.10 or later installed. The EPICS
|
||||
You must use the GNU version of `make` for EPICS builds. Set your path
|
||||
so that version 4.1 or later is available. The macOS version of `make`
|
||||
is older but does still work.
|
||||
|
||||
#### Perl
|
||||
|
||||
You must have Perl version 5.10.1 or later installed. The EPICS
|
||||
configuration files do not specify the perl full pathname, so the perl
|
||||
executable must be found through your normal search path.
|
||||
|
||||
**Unzip and tar (Winzip on WIN32 systems)**
|
||||
#### Unzip and tar (Winzip on WIN32 systems)
|
||||
|
||||
You must have tools available to unzip and untar the EPICS base
|
||||
distribution file.
|
||||
|
||||
**Target systems**
|
||||
#### Target systems
|
||||
|
||||
EPICS supports IOCs running on embedded platforms such as VxWorks and
|
||||
RTEMS built using a cross-compiler, and also supports soft IOCs
|
||||
running as processes on the host platform.
|
||||
|
||||
**vxWorks**
|
||||
#### vxWorks
|
||||
|
||||
You must have vxWorks 6.8 or later installed if any of your target
|
||||
systems are vxWorks systems; the C++ compiler from older versions cannot
|
||||
compile recently developed code. The vxWorks installation provides the
|
||||
@@ -96,127 +103,146 @@ Consult the [vxWorks 6.x](https://epics.anl.gov/base/vxWorks6.php) EPICS
|
||||
web pages about and the vxWorks documentation for information about
|
||||
configuring your vxWorks operating system for use with EPICS.
|
||||
|
||||
**RTEMS**
|
||||
#### RTEMS
|
||||
|
||||
For RTEMS targets, you need RTEMS core and toolset version 4.9.x or
|
||||
4.10.x (4.11 or 5.x are not yet supported).
|
||||
4.10.x. RTEMS 5 is experimental in EPICS 7.0.6.
|
||||
|
||||
**GNU readline or Tecla library**
|
||||
GNU readline and Tecla libraries can be used by the IOC shell to
|
||||
provide command line editing and command line history recall and edit.
|
||||
GNU readline (or Tecla library) must be installed on your target
|
||||
system when `COMMANDLINE_LIBRARY` is set to READLINE (or TECLA) for
|
||||
that target. EPICS (EPICS shell) is the default specified in
|
||||
`CONFIG_COMMON`. A READLINE override is defined for linux-x86 in the
|
||||
EPICS distribution. Comment out `COMMANDLINE_LIBRARY=READLINE` in
|
||||
`configure/os/CONFIG_SITE.Common.linux-x86` if readline is not
|
||||
installed on linux-x86. Command-line editing and history will then be
|
||||
those supplied by the os. On vxWorks the ledLib command-line input
|
||||
library is used instead.
|
||||
#### Command Line Editing
|
||||
|
||||
### <span id="0_0_8">Documentation</span>
|
||||
GNU readline and other similar libraries can be used by the IOC shell
|
||||
to provide command line editing and command line history recall. The
|
||||
GNU readline development package (or Apple's emulator on macOS) must
|
||||
be installed for a target when its build configuration variable
|
||||
`COMMANDLINE_LIBRARY` is set to `READLINE`. The default specified in
|
||||
`CONFIG_COMMON` is `EPICS`, but most linux target builds can detect if
|
||||
readline is available and will then use it. RTEMS targets may be
|
||||
configured to use `LIBTECLA` if available, and on vxWorks the OS's
|
||||
ledLib line-editing library is normally used.
|
||||
|
||||
EPICS documentation is available through the [EPICS
|
||||
website](https://epics.anl.gov/) at Argonne.
|
||||
### Host system storage requirements
|
||||
|
||||
The compressed tar file is approximately 3 MB in size. The
|
||||
distribution source tree takes up approximately 21 MB. A 64-bit host
|
||||
architecture may need around 610 MB to compile, while cross-compiled
|
||||
targets are somewhat smaller.
|
||||
|
||||
### Documentation
|
||||
|
||||
EPICS documentation is available through the [EPICS website](https://epics.anl.gov/) at Argonne.
|
||||
|
||||
Release specific documentation can also be found in the
|
||||
base/documentation directory of the distribution.
|
||||
`base/documentation` directory of the distribution.
|
||||
|
||||
### <span id="0_0_10">Directory Structure</span>
|
||||
### Directory Structure
|
||||
|
||||
#### Distribution directory structure:
|
||||
#### Distribution directory structure
|
||||
|
||||
```
|
||||
base Root directory of the base distribution
|
||||
base/configure Operating system independent build config files
|
||||
base/configure/os Operating system dependent build config files
|
||||
base/documentation Distribution documentation
|
||||
base/src Source code in various subdirectories
|
||||
base/startup Scripts for setting up path and environment
|
||||
base Root directory of the distribution
|
||||
base/configure Build rules and OS-independent config files
|
||||
base/configure/os OS-dependent build config files
|
||||
base/documentation Distribution documentation
|
||||
base/src Source code in various subdirectories
|
||||
base/startup Scripts for setting up path and environment
|
||||
```
|
||||
|
||||
#### Install directories created by the build:
|
||||
#### Directories created by the build
|
||||
|
||||
These are created in the root directory of the installation (`base`
|
||||
above) or under the directory pointed to by the `INSTALL_LOCATION`
|
||||
configuration variable if that has been set.
|
||||
|
||||
```
|
||||
bin Installed scripts and executables in subdirs
|
||||
cfg Installed build configuration files
|
||||
db Installed data bases
|
||||
dbd Installed data base definitions
|
||||
doc Installed documentation files
|
||||
html Installed html documentation
|
||||
include Installed header files
|
||||
include/os Installed os specific header files in subdirs
|
||||
include/compiler Installed compiler-specific header files
|
||||
lib Installed libraries in arch subdirectories
|
||||
lib/perl Installed perl modules
|
||||
templates Installed templates
|
||||
bin Installed scripts and executables in subdirs
|
||||
cfg Installed build configuration files
|
||||
db Installed database files
|
||||
dbd Installed database definition files
|
||||
html Installed html documentation
|
||||
include Installed header files
|
||||
include/os Installed OS-specific header files in subdirs
|
||||
include/compiler Installed compiler-specific header files
|
||||
lib Installed libraries in arch subdirectories
|
||||
lib/perl Installed perl modules
|
||||
templates Installed templates
|
||||
```
|
||||
|
||||
### <span id="0_0_11">Build related components</span>
|
||||
#### `base/documentation` Directory
|
||||
|
||||
#### base/documentation directory - contains setup, build, and install documents
|
||||
This contains documents on how to setup, build, and install EPICS.
|
||||
|
||||
```
|
||||
README.md Instructions for setup and building epics base
|
||||
README.darwin.html Installation notes for Mac OS X (Darwin)
|
||||
RELEASE_NOTES.html Notes on release changes
|
||||
KnownProblems.html List of known problems and workarounds
|
||||
README.md This file
|
||||
RELEASE_NOTES.md Notes on release changes
|
||||
KnownProblems.html List of known problems and workarounds
|
||||
```
|
||||
|
||||
#### base/startup directory - contains scripts to set environment and path
|
||||
#### `base/startup` Directory
|
||||
|
||||
This contains several example scripts that show how to set up the
|
||||
build environment and PATH for using EPICS. Sites would usually copy and/or modify these files as appropriate for their environment; they are not used by the build system at all.
|
||||
|
||||
```
|
||||
EpicsHostArch Shell script to set EPICS_HOST_ARCH env variable
|
||||
unix.csh C shell script to set path and env variables
|
||||
unix.sh Bourne shell script to set path and env variables
|
||||
win32.bat Bat file example to configure win32-x86 target
|
||||
windows.bat Bat file example to configure windows-x64 target
|
||||
EpicsHostArch Shell script to set EPICS_HOST_ARCH env variable
|
||||
unix.csh C shell script to set path and env variables
|
||||
unix.sh Bourne shell script to set path and env variables
|
||||
win32.bat Bat file example to configure win32-x86 target
|
||||
windows.bat Bat file example to configure windows-x64 target
|
||||
```
|
||||
|
||||
#### base/configure directory - contains build definitions and rules
|
||||
#### `base/configure` directory
|
||||
|
||||
This contains build-system files providing definitions and rules
|
||||
required by GNU Make to build EPICS. Users should only need to modify the `CONFIG_SITE` files to configure the EPICS build.
|
||||
|
||||
```
|
||||
CONFIG Includes configure files and allows variable overrides
|
||||
CONFIG.CrossCommon Cross build definitions
|
||||
CONFIG.gnuCommon Gnu compiler build definitions for all archs
|
||||
CONFIG_ADDONS Definitions for <osclass> and DEFAULT options
|
||||
CONFIG_APP_INCLUDE
|
||||
CONFIG_BASE EPICS base tool and location definitions
|
||||
CONFIG_BASE_VERSION Definitions for EPICS base version number
|
||||
CONFIG_COMMON Definitions common to all builds
|
||||
CONFIG_ENV Definitions of EPICS environment variables
|
||||
CONFIG_FILE_TYPE
|
||||
CONFIG_SITE Site specific make definitions
|
||||
CONFIG_SITE_ENV Site defaults for EPICS environment variables
|
||||
MAKEFILE Installs CONFIG* RULES* creates
|
||||
RELEASE Location of external products
|
||||
RULES Includes appropriate rules file
|
||||
RULES.Db Rules for database and database definition files
|
||||
RULES.ioc Rules for application iocBoot/ioc* directory
|
||||
RULES_ARCHS Definitions and rules for building architectures
|
||||
RULES_BUILD Build and install rules and definitions
|
||||
RULES_DIRS Definitions and rules for building subdirectories
|
||||
RULES_EXPAND
|
||||
RULES_FILE_TYPE
|
||||
RULES_TARGET
|
||||
RULES_TOP Rules specific to a <top> dir (uninstall and tar)
|
||||
Sample.Makefile Sample makefile with comments
|
||||
CONFIG Main entry point for building EPICS
|
||||
CONFIG.CrossCommon Cross build definitions
|
||||
CONFIG.gnuCommon Gnu compiler build definitions for all archs
|
||||
CONFIG_ADDONS Definitions for <osclass> and DEFAULT options
|
||||
CONFIG_APP_INCLUDE
|
||||
CONFIG_BASE EPICS base tool and location definitions
|
||||
CONFIG_BASE_VERSION Definitions for EPICS base version number
|
||||
CONFIG_COMMON Definitions common to all builds
|
||||
CONFIG_ENV Definitions of EPICS environment variables
|
||||
CONFIG_FILE_TYPE
|
||||
CONFIG_SITE Site specific make definitions
|
||||
CONFIG_SITE_ENV Site defaults for EPICS environment variables
|
||||
MAKEFILE Installs CONFIG* RULES* creates
|
||||
RELEASE Location of external products
|
||||
RULES Includes appropriate rules file
|
||||
RULES.Db Rules for database and database definition files
|
||||
RULES.ioc Rules for application iocBoot/ioc* directory
|
||||
RULES_ARCHS Definitions and rules for building architectures
|
||||
RULES_BUILD Build and install rules and definitions
|
||||
RULES_DIRS Definitions and rules for building subdirectories
|
||||
RULES_EXPAND
|
||||
RULES_FILE_TYPE
|
||||
RULES_TARGET
|
||||
RULES_TOP Rules specific to a <top> dir only
|
||||
Sample.Makefile Sample makefile with comments
|
||||
```
|
||||
|
||||
#### base/configure/os directory - contains os-arch specific definitions
|
||||
#### `base/configure/os` Directory
|
||||
|
||||
Files in here provide definitions that are shared by or specific to particular host and/or target architectures. Users should only need to modify the `CONFIG_SITE` files in this directory to configure the EPICS build.
|
||||
|
||||
```
|
||||
CONFIG.<host>.<target> Specific host-target build definitions
|
||||
CONFIG.Common.<target> Specific target definitions for all hosts
|
||||
CONFIG.<host>.Common Specific host definitions for all targets
|
||||
CONFIG.UnixCommon.Common Definitions for Unix hosts and all targets
|
||||
CONFIG.Common.UnixCommon Definitions for Unix targets and all hosts
|
||||
CONFIG.Common.vxWorksCommon Specific host definitions for all vx targets
|
||||
CONFIG_SITE.<host>.<target> Site specific host-target definitions
|
||||
CONFIG_SITE.Common.<target> Site specific target defs for all hosts
|
||||
CONFIG_SITE.<host>.Common Site specific host defs for all targets
|
||||
CONFIG.<host>.<target> Definitions for a specific host-target combination
|
||||
CONFIG.Common.<target> Definitions for a specific target, any host
|
||||
CONFIG.<host>.Common Definitions for a specific host, any target
|
||||
CONFIG.UnixCommon.Common Definitions for Unix hosts, any target
|
||||
CONFIG.Common.UnixCommon Definitions for Unix targets, any host
|
||||
CONFIG.Common.RTEMS Definitions for all RTEMS targets, any host
|
||||
CONFIG.Common.vxWorksCommon Definitions for all vxWorks targets, any host
|
||||
CONFIG_SITE.<host>.<target> Local settings for a specific host-target combination
|
||||
CONFIG_SITE.Common.<target> Local settings for a specific target, any host
|
||||
CONFIG_SITE.<host>.Common Local settings for a specific host, any target
|
||||
CONFIG_SITE.Common.RTEMS Local settings for all RTEMS targets, any host
|
||||
CONFIG_SITE.Common.vxWorksCommon Local settings for all vxWorks targets, any host
|
||||
```
|
||||
|
||||
### <span id="0_0_12">Building EPICS base (Unix and Win32)</span>
|
||||
### Building EPICS base
|
||||
|
||||
#### Unpack file
|
||||
|
||||
@@ -228,74 +254,79 @@ systems.
|
||||
Files in the base/startup directory have been provided to help set
|
||||
required path and other environment variables.
|
||||
|
||||
* `EPICS_HOST_ARCH`
|
||||
Before you can build or use this EPICS base, the environment variable
|
||||
`EPICS_HOST_ARCH` must be defined. A perl script EpicsHostArch.pl in
|
||||
the base/startup directory has been provided to help set
|
||||
`EPICS_HOST_ARCH.` You should have `EPICS_HOST_ARCH` set to your
|
||||
host operating system followed by a dash and then your host
|
||||
architecture, e.g. linux-x86_64. If you are not using the OS
|
||||
vendor's c/c++ compiler for host builds, you will need another dash
|
||||
followed by the alternate compiler name (e.g. "-gnu" for GNU c/c++
|
||||
compilers on a solaris host or "-mingw" for MinGW c/c++ compilers on
|
||||
Windows). See `configure/CONFIG_SITE` for a list of supported
|
||||
`EPICS_HOST_ARCH` values.
|
||||
* **`EPICS_HOST_ARCH`**
|
||||
|
||||
* `PATH`
|
||||
As already mentioned, you must have the perl executable and you may
|
||||
need C and C++ compilers in your search path. For building base you
|
||||
also must have echo in your search path. For Unix host builds you
|
||||
also need ln, cpp, cp, rm, mv, and mkdir in your search path and
|
||||
/bin/chmod must exist. On some Unix systems you may also need ar and
|
||||
ranlib in your path, and the C compiler may require as and ld in
|
||||
your path. On solaris systems you need uname in your path.
|
||||
Some host builds of EPICS require that the environment variable
|
||||
`EPICS_HOST_ARCH` be defined. The perl script `EpicsHostArch.pl` in the
|
||||
`base/startup` directory prints the value which the build will use if
|
||||
the variable is not set before the build starts. Architecture names
|
||||
start with the operating system followed by a dash and the host CPU
|
||||
architecture, e.g. `linux-x86_64`. Some architecture names have another
|
||||
dash followed by another keyword, for example when building for Windows
|
||||
but using the MinGW compiler the name must be `windows-x64-mingw`. See
|
||||
`configure/CONFIG_SITE` for a list of supported host architecture names.
|
||||
|
||||
* `LD_LIBRARY_PATH`
|
||||
EPICS shared libraries and executables normally contain the full
|
||||
path to any libraries they require. However, if you move the EPICS
|
||||
files or directories from their build-time location then in order
|
||||
for the shared libraries to be found at runtime `LD_LIBRARY_PATH`
|
||||
must include the full pathname to
|
||||
`$(INSTALL_LOCATION)/lib/$(EPICS_HOST_ARCH)` when invoking
|
||||
executables, or some equivalent OS-specific mechanism (such as
|
||||
/etc/ld.so.conf on Linux) must be used. Shared libraries are now
|
||||
built by default on all Unix type hosts.
|
||||
* **`PATH`**
|
||||
As already mentioned, you must have the `perl` executable and you may
|
||||
need C and C++ compilers in your search path. When building base you
|
||||
must have `echo` in your search path. For Unix host builds you will
|
||||
also need `cp`, `rm`, `mv`, and `mkdir` in your search path. Some Unix
|
||||
systems may also need `ar` and `ranlib`, and the C/C++ compilers may
|
||||
require `as` and `ld` in your path. On Solaris systems you need
|
||||
`uname` in your path.
|
||||
|
||||
#### Do site-specific build configuration
|
||||
* **`LD_LIBRARY_PATH`**
|
||||
EPICS shared libraries and executables normally contain the full path
|
||||
to any libraries they require, so setting this variable is not usually
|
||||
necessary. However, if you move the EPICS installation to a new
|
||||
location after building it then in order for the shared libraries to
|
||||
be found at runtime it may need to be set, or some equivalent
|
||||
OS-specific mechanism such as `/etc/ld.so.conf` on Linux must be used.
|
||||
Shared libraries are now built by default on all Unix type hosts.
|
||||
|
||||
**Site configuration**
|
||||
To configure EPICS, you may want to modify the default definitions
|
||||
in the following files:
|
||||
### Site-specific build configuration
|
||||
|
||||
#### Site configuration
|
||||
|
||||
To configure EPICS, you may want to modify some values set in the
|
||||
following files:
|
||||
>>>>>>> mirror/3.15
|
||||
|
||||
```
|
||||
configure/CONFIG_SITE Build choices. Specify target archs.
|
||||
configure/CONFIG_SITE_ENV Environment variable defaults
|
||||
configure/RELEASE TORNADO2 full path location
|
||||
configure/CONFIG_SITE Build settings. Specify target archs.
|
||||
configure/CONFIG_SITE_ENV Environment variable defaults
|
||||
```
|
||||
|
||||
**Host configuration**
|
||||
To configure each host system, you may override the default
|
||||
definitions by adding a new file in the configure/os directory with
|
||||
override definitions. The new file should have the same name as the
|
||||
distribution file to be overridden except with CONFIG in the name
|
||||
changed to `CONFIG_SITE`.
|
||||
#### Host configuration
|
||||
|
||||
To configure each host system, you can override the default
|
||||
definitions by adding a new settings file (or editing an existing
|
||||
settings file) in the `configure/os` directory with your override
|
||||
definitions. The settings file has the same name as the definitions
|
||||
file to be overridden except with `CONFIG` in the name changed to
|
||||
`CONFIG_SITE`.
|
||||
|
||||
```
|
||||
configure/os/CONFIG.<host>.<host> Host build settings
|
||||
configure/os/CONFIG.<host>.Common Host common build settings
|
||||
configure/os/CONFIG.<host>.<host> Host self-build definitions
|
||||
configure/os/CONFIG.<host>.Common Host common build definitions
|
||||
configure/os/CONFIG_SITE.<host>.<host> Host self-build overrides
|
||||
configure/os/CONFIG_SITE.<host>.Common Host common build overrides
|
||||
```
|
||||
|
||||
**Target configuration**
|
||||
#### Target configuration
|
||||
|
||||
To configure each target system, you may override the default
|
||||
definitions by adding a new file in the configure/os directory with
|
||||
override definitions. The new file should have the same name as the
|
||||
distribution file to be overridden except with CONFIG in the name
|
||||
replaced by `CONFIG_SITE`. This step is necessary even if the host
|
||||
system is the only target system.
|
||||
definitions by adding a new settings file (or editing an existing
|
||||
settings file) in the `configure/os` directory with your override
|
||||
definitions. The settings file has the same name as the definitions
|
||||
file to be overridden except with `CONFIG` in the name changed to
|
||||
`CONFIG_SITE`.
|
||||
|
||||
```
|
||||
configure/os/CONFIG.Common.<target> Target common settings
|
||||
configure/os/CONFIG.<host>.<target> Host-target settings
|
||||
configure/os/CONFIG.Common.<target> Target common definitions
|
||||
configure/os/CONFIG.<host>.<target> Host-target definitions
|
||||
configure/os/CONFIG_SITE.Common.<target> Target common overrides
|
||||
configure/os/CONFIG_SITE.<host>.<target> Host-target overrides
|
||||
```
|
||||
|
||||
#### Build EPICS base
|
||||
@@ -305,24 +336,29 @@ by issuing the following commands in the distribution's root
|
||||
directory (base):
|
||||
|
||||
```
|
||||
gnumake clean uninstall
|
||||
gnumake
|
||||
make distclean
|
||||
make
|
||||
```
|
||||
|
||||
The command "gnumake clean uninstall" will remove all files and
|
||||
directories generated by a previous build. The command "gnumake"
|
||||
The command `make distclean` will remove all files and
|
||||
directories generated by a previous build. The command `make`
|
||||
will build and install everything for the configured host and
|
||||
targets.
|
||||
|
||||
It is recommended that you do a "gnumake clean uninstall" at the
|
||||
It is recommended that you do a `make distclean` at the
|
||||
root directory of an EPICS directory structure before each complete
|
||||
rebuild to ensure that all components will be rebuilt.
|
||||
|
||||
### <span id="0_0_13">Example application and extension</span>
|
||||
In some cases GNU Make may have been installed as `gmake` or
|
||||
`gnumake`, in which case the above commands will have to be adjusted
|
||||
to match.
|
||||
|
||||
A perl tool, makeBaseApp.pl is included in the distribution file. This
|
||||
script will create a sample application that can be built and then
|
||||
executed to try out this release of base.
|
||||
### Example application and extension
|
||||
|
||||
A perl tool `makeBaseApp.pl` and several template applications are
|
||||
included in the distribution. This script instantiates the selected
|
||||
template into an empty directory to provide an example application
|
||||
that can be built and then executed to try out this release of base.
|
||||
|
||||
Instructions for building and executing the EPICS example application
|
||||
can be found in the section "Example Application" of Chapter 2,
|
||||
@@ -335,26 +371,30 @@ application as a host-based IOC, you will be able to quickly implement
|
||||
a complete EPICS system and be able to run channel access clients on
|
||||
the host system.
|
||||
|
||||
A perl script, makeBaseExt.pl, is included in the distribution file.
|
||||
This script will create a sample extension that can be built and
|
||||
executed. The makeBaseApp.pl and makeBaseExt.pl scripts are installed
|
||||
into the install location `bin/<hostarch>` directory during the base
|
||||
build.
|
||||
Another perl script `makeBaseExt.pl` is also included in the
|
||||
distribution file for creating an extensions tree and sample
|
||||
application that can also be built and executed. Both these scripts
|
||||
are installed into the install location `bin/<hostarch>` directory
|
||||
during the base build.
|
||||
|
||||
### <span id="0_0_14">Multiple host platforms</span>
|
||||
### Multiple host platforms
|
||||
|
||||
You can build using a single EPICS directory structure on multiple
|
||||
host systems and for multiple cross target systems. The intermediate
|
||||
and binary files generated by the build will be created in separate
|
||||
subdirectories and installed into the appropriate separate host/target
|
||||
install directories. EPICS executables and perl scripts are installed
|
||||
into the `$(INSTALL_LOCATION)/bin/<arch>` directories. Libraries are
|
||||
installed into $`(INSTALL_LOCATION)/lib/<arch>`. The default
|
||||
definition for `$(INSTALL_LOCATION)` is `$(TOP)` which is the root
|
||||
directory in the distribution directory structure, base. Created
|
||||
object files are stored in `O.<arch>` source subdirectories, This
|
||||
allows objects for multiple cross target architectures to be
|
||||
maintained at the same time. To build EPICS base for a specific
|
||||
install directories.
|
||||
|
||||
EPICS executables and perl scripts are installed into the
|
||||
`$(INSTALL_LOCATION)/bin/<arch>` directories. Libraries are installed
|
||||
into $`(INSTALL_LOCATION)/lib/<arch>`. The default definition for
|
||||
`$(INSTALL_LOCATION)` is `$(TOP)` which is the root directory in the
|
||||
distribution directory structure, `base`. Intermediate object files
|
||||
are stored in `O.<arch>` source subdirectories during the build
|
||||
process, to allow objects for multiple cross target architectures
|
||||
to be maintained at the same time.
|
||||
|
||||
To build EPICS base for a specific
|
||||
host/target combination you must have the proper host/target C/C++
|
||||
cross compiler and target header files and the base/configure/os
|
||||
directory must have the appropriate configure files.
|
||||
|
||||
@@ -2,21 +2,357 @@
|
||||
|
||||
These release notes describe changes that have been made since the previous
|
||||
release of this series of EPICS Base. **Note that changes which were merged up
|
||||
from commits to new releases in an older Base series are not described at the
|
||||
top of this file but have entries that appear lower down, under the series to
|
||||
which they were originally committed.** Thus it is important to read more than
|
||||
just the first section to understand everything that has changed in each
|
||||
release.
|
||||
from commits to the 3.15 branch are not described at the top of this file but
|
||||
lower down, under the 3.15 release to which they were originally committed.**
|
||||
Thus it is important to read more than just the first section to understand
|
||||
everything that has changed in each release.
|
||||
|
||||
The PVA submodules each have their own individual sets of release notes which
|
||||
should also be read to understand what has changed since earlier releases.
|
||||
|
||||
**This version of EPICS has not been released yet.**
|
||||
|
||||
## Changes made on the 7.0 branch since 7.0.5
|
||||
## Changes made on the 7.0 branch since 7.0.6.1
|
||||
|
||||
<!-- Insert new items immediately below here ... -->
|
||||
|
||||
### Fix for `undefined` in configure/RELEASE files
|
||||
|
||||
Prevents `Use of uninitialized value` warnings from convertRelease.pl.
|
||||
|
||||
### Colorized Messages for errlog
|
||||
|
||||
Many internal error messages now emit ANSI escape sequences to highlight the
|
||||
words "ERROR" and "WARNING" in an attempt to make occurrences more noticeable
|
||||
during IOC startup.
|
||||
|
||||
The macros `ERL_ERROR` and `ERL_WARNING` are defined for external usage,
|
||||
and expand as string constants. eg.
|
||||
|
||||
```c
|
||||
#include <errlog.h>
|
||||
#ifndef ERL_ERROR
|
||||
# define ERL_ERROR "ERROR"
|
||||
#endif
|
||||
void fn() {
|
||||
...
|
||||
errlogPrintf(ERL_ERROR ": something bad happens :(\n");
|
||||
```
|
||||
|
||||
ANSI escapes are automatically removed from errlog output not destined
|
||||
for a terminal. For example, for logClient, if stderr is redirected,
|
||||
or if unsupported (`$TERM` not set, or Windows < 10).
|
||||
|
||||
### `dbnd` filter pass through `DBE_ALARM|DBE_PROPERTY`
|
||||
|
||||
The `dbnd` server side filter now passes through alarm and property
|
||||
change events, even when not exceeding the deadband.
|
||||
|
||||
-----
|
||||
|
||||
## EPICS Release 7.0.6.1
|
||||
|
||||
### `mbboDirectRecord` enhancements
|
||||
|
||||
The bit fields `B0` - `B1F` of this record are now always updated and have a
|
||||
monitor posted when the `VAL` field is set and the record processed. It is now
|
||||
possible to initialize the record's value by setting the bit fields inside a
|
||||
database file as long as no other method was used to initialize it (suc as
|
||||
setting `VAL` directly, using `DOL`, or by an initial readback from device
|
||||
support). A new internal field `OBIT` was added to store information about
|
||||
monitors posted on the bit fields.
|
||||
|
||||
### Minimum Perl Version is now 5.10.1
|
||||
|
||||
Some scripts now make use of features that were introduced to this Perl version
|
||||
that was released in 2009.
|
||||
|
||||
### DB Links to DBF_MENU fields fixed
|
||||
|
||||
[GH:183](https://github.com/epics-base/epics-base/issues/183)
|
||||
These were broken in a previous release, but now work again.
|
||||
|
||||
### Long String access to CALC fields fixed
|
||||
|
||||
[GH:194](https://github.com/epics-base/epics-base/issues/194)
|
||||
This was broken in a previous release, but now works again.
|
||||
|
||||
### Minor Changes
|
||||
|
||||
+ Many code comments have been spell-checked and corrected.
|
||||
+ Passing a `-DDEBUG` compiler flag no longer breaks the build.
|
||||
+ Parallel builds of RTEMS-mvme2100 and RTEMS-mvme2700 targets now work.
|
||||
+ Illegal characters seen in JSON strings in a database file should now get a
|
||||
better error message.
|
||||
|
||||
### Other Launchpad Bugs and GitHub Issues Fixed
|
||||
|
||||
+ [lp:1938459](https://bugs.launchpad.net/epics-base/+bug/1938459)
|
||||
[GH:191](https://github.com/epics-base/epics-base/pull/191) int64in only
|
||||
checks lower 32 bits for change
|
||||
+ [lp:1941875](https://bugs.launchpad.net/epics-base/+bug/1941875) Buggy
|
||||
warning message "Record/Alias name '...' should not contain non-printable ...
|
||||
+ [GH:187](https://github.com/epics-base/epics-base/issues/187) waveformRecord
|
||||
missing PACT=true?
|
||||
+ [GH:189](https://github.com/epics-base/epics-base/pull/189) Fix a couple
|
||||
memory leaks and a segfault
|
||||
+ [GH:200](https://github.com/epics-base/epics-base/pull/200) and
|
||||
[GH:201](https://github.com/epics-base/epics-base/pull/201) Fix timers on MS
|
||||
Windows for non-EPICS threads
|
||||
|
||||
### Compiler interface for epicsAtomic tidied up
|
||||
|
||||
[GH:192](https://github.com/epics-base/epics-base/pull/192)
|
||||
Both GCC and CLANG compiler intrisics used for the epicsAtomic APIs have been revised; implementations using CLANG should now run faster as they now use the compiler's built-in atomic functions instead of taking a mutex.
|
||||
|
||||
### The epicsTime code has been reimplemented
|
||||
|
||||
[GH:185](https://github.com/epics-base/epics-base/pull/185)
|
||||
This was done to simplify the code and may have improved performance slightly for some uses. Support for the old NTP-specific `struct l_fp` has been dropped but all other routines and methods of the `class epicsTime` function as before.
|
||||
|
||||
### Updates to Record Reference documentation
|
||||
|
||||
Many of the built-in record types have had improvements to their documentation with additional fields added to the tables, rewrites of descriptions and links to other documents added or fixed.
|
||||
|
||||
-----
|
||||
|
||||
## EPICS Release 7.0.6
|
||||
|
||||
### Support for obsolete architectures removed
|
||||
|
||||
These target architectures have been removed:
|
||||
|
||||
+ darwin-ppc, darwin-ppcx86
|
||||
+ linux-386, linux-486, linux-586, linux-686, linux-athlon (cross-build)
|
||||
+ linux-cris, linux-cris_v10, linux-cris_v32 (cross-build)
|
||||
+ RTEMS-at91rm9200ek, RTEMS-gen68360, RTEMS-mcp750, RTEMS-mvme167,
|
||||
RTEMS-psim (cross-build)
|
||||
|
||||
### Experimental Support for RTEMS 5
|
||||
|
||||
The new major release of the RTEMS real-time OS contains many changes
|
||||
including the ability to support SMP systems. This release of EPICS
|
||||
can still be built with RTEMS 4.9.x or 4.10.x and should work just
|
||||
the same as earlier releases, although due to code having moved around
|
||||
we recommend thorough testing before this release is first used in
|
||||
production systems.
|
||||
|
||||
This release of EPICS comes with support for several new RTEMS targets
|
||||
running on RTEMS 5:
|
||||
|
||||
- RTEMS-beagleboneblack
|
||||
- RTEMS-pc686
|
||||
- RTEMS-qoriq_e500 (MVME2500)
|
||||
- RTEMS-xilinx_zynq_a9_qemu
|
||||
- RTEMS-xilinx_zynq_zedboard
|
||||
|
||||
The EPICS support for RTEMS 4 has always relied on RTEMS-specific
|
||||
kernel APIs which cannot be used on an SMP system, so a new port was
|
||||
created to use the Posix real-time APIs that are now recommended for
|
||||
RTEMS 5. Note that a single installation of EPICS cannot build both
|
||||
RTEMS 4 and RTEMS 5 targets, if you need to support targets running
|
||||
on both versions you must use a separate installation, and be sure
|
||||
to run `make distclean` if switching a single source tree from one
|
||||
to the other (both header files and dependency files are different
|
||||
between the two and must be cleaned out).
|
||||
|
||||
The configuration variable RTEMS_VERSION in the EPICS config file
|
||||
`configure/os/CONFIG_SITE.Common.RTEMS` must be set to the full 3-
|
||||
part version number for RTEMS 4 releases, e.g. `4.9.1`, `4.10.2`
|
||||
but for RTEMS 5.1 and later it must only contain the major version
|
||||
number e.g. `5`.
|
||||
|
||||
Some RTEMS BSPs can be built and may work with the newer libbsd
|
||||
network stack which RTEMS is moving over to, but most of the MVME
|
||||
boards (and the uC5282) still require the legacy network stack.
|
||||
|
||||
The dependency on bspExt has been removed, EPICS now provides its
|
||||
own routine for VMEbus probing (or uses one built into the BSP).
|
||||
|
||||
Anyone using this release on RTEMS is advised to discuss problems
|
||||
building or running it on either the tech-talk or core-talk email
|
||||
lists so the core developers can help with and find out about any
|
||||
problems with the old or new port.
|
||||
|
||||
Known Issues:
|
||||
- MVME2100 and MVME2700 need changes to the RTEMS 5 BSP to build.
|
||||
- VMEBus support is not yet available for the MVME2500 BSP.
|
||||
- There are some known issues with floating point on MVME2500,
|
||||
probably related to its newer e500 FPU.
|
||||
- Changed network driver for beatnik to work with libbsd. Some
|
||||
issues with DHCP, but network stack usable. Can load env from
|
||||
NVRAM.
|
||||
|
||||
### `epicsEnvShow` accepts a glob pattern
|
||||
|
||||
The optional argument to epicsEnvShow can now be a glob pattern.
|
||||
|
||||
### New function `epicsStrnGlobMatch()`
|
||||
|
||||
The function `epicsStrnGlobMatch(char* str, size_t len, char* pattern)`
|
||||
works exactly the same as `epicsStrGlobMatch()` but takes an additional
|
||||
length arguments which limits the number of characters of `str` to match.
|
||||
|
||||
### Automatic fallback to thread when unable to exec caRepeater
|
||||
|
||||
A process using libca which does not find an existing caRepeater process
|
||||
will attempt to start one by running the caRepeater executable.
|
||||
This is not always possible, usually when caRepeater is not in `$PATH`.
|
||||
Now, instead of printing a warning, an internal caRepeater thread
|
||||
will be started (as is done be RTEMS and vxWorks targets).
|
||||
|
||||
If this fallback occurs, the lifetime of the caRepeater thread
|
||||
may be shorter than the lifetime of a separate caRepeater process
|
||||
would have been.
|
||||
|
||||
It remains the recommended practice to explicitly start a caRepeater
|
||||
instance. Examples of both systemd (`caRepeater.service`) and sysv
|
||||
(`S99caRepeater`) scripts may be found under `bin/`.
|
||||
|
||||
### Glob pattern allowed in `var` command
|
||||
|
||||
When used with one argument, the `var` command can be used with a glob pattern
|
||||
for printing matching variables.
|
||||
|
||||
### Formalize/fix `FINAL_LOCATION`
|
||||
|
||||
The `FINAL_LOCATION` make variable has for some time been an undocumented
|
||||
means of performing a staged build. This is a build which "installs" to
|
||||
a temporary location, which will later be moved to a final location.
|
||||
|
||||
This has now been added to `configure/CONFIG_SITE`.
|
||||
|
||||
Usage analogous to the autotools recipe
|
||||
|
||||
```sh
|
||||
./configure --prefix=/usr/lib/epics
|
||||
make install DESTDIR=/tmp/build
|
||||
```
|
||||
|
||||
would be
|
||||
|
||||
```sh
|
||||
make INSTALL_LOCATION=/tmp/build FINAL_LOCATION=/usr/lib/epics
|
||||
```
|
||||
|
||||
`FINAL_LOCATION` is now correctly used in systemd and sysv init scripts
|
||||
`caRepeater.service`, `S99caRepeater`, and `S99logServer`.
|
||||
|
||||
### IOCsh sets `${PWD}`
|
||||
|
||||
IOC shell will now ensure `${PWD}` is set on startup,
|
||||
and updated by the `cd` iocsh function.
|
||||
|
||||
### Add Alarm Message and Time Tag Fields
|
||||
|
||||
Two new fields have been added to `dbCommon` so will be present in all
|
||||
records: `AMSG` and `UTAG`.
|
||||
|
||||
#### `AMSG`
|
||||
|
||||
`AMSG` can hold an arbitrary 40-character string, providing additional
|
||||
information about the alarm condition indicated in `STAT` and `SEVR`. With no
|
||||
alarm it will hold an empty string. The new `recGblSetSevrMsg()` function can
|
||||
be used in place of `recGblSetSevr()` to signal an alarm while providing a
|
||||
message.
|
||||
|
||||
For example, a device support's `read_bi()` routine for a hypothetical
|
||||
multi-channel ethernet attached device might flag a communication error
|
||||
between the IOC and controller, or an error involving a certain channel like
|
||||
this:
|
||||
|
||||
```c
|
||||
static long read_bi(biRecord* prec) {
|
||||
...
|
||||
if (!priv->connected) {
|
||||
recGblSetSevrMsg(prec, COMM_ALARM, INVALID_ALARM,
|
||||
"No controller connected");
|
||||
return S_dev_noDevice;
|
||||
}
|
||||
if (!priv->err) {
|
||||
recGblSetSevrMsg(prec, READ_ALARM, INVALID_ALARM,
|
||||
"Channel %u disconnexted", priv->chan);
|
||||
return S_dev_noDevice;
|
||||
}
|
||||
return status;
|
||||
}
|
||||
```
|
||||
|
||||
#### `UTAG`
|
||||
|
||||
`UTAG` holds an `epicsUInt64` value which is semantically part of the record's
|
||||
timestamp (`TIME`). The value defaults to zero if not explicitly set. Device
|
||||
support or an event time provider which supports this feature may write a tag
|
||||
value directly to the `dbCommon::utag` field.
|
||||
|
||||
`TSEL` links will copy both `TIME` and `UTAG` between records if the link type
|
||||
supports this (CA links do not).
|
||||
|
||||
A `utag` server side channel filter has been added which can be configured to
|
||||
filter out monitor updates which don't pass the test `(UTAG & M) == V` where
|
||||
`M` and `V` are client specified integers. For example running the command
|
||||
`camonitor BPM0:X.{utag:{M:1,V:1}}` will only show updates for which
|
||||
`(UTAG & 1) == 1` i.e. the least significant bit of the `UTAG` field is set.
|
||||
|
||||
This feature is intended for use by intelligent devices which can provide
|
||||
contextual information along with a value/alarm/time. For example, a beam
|
||||
diagnostic device which is aware of whether a beam signal should be present
|
||||
(eg. from a global timing system).
|
||||
|
||||
#### Link Support
|
||||
|
||||
Two new optional methods have been added to the Link Support Entry Table
|
||||
(`struct lset`): `lset::getAlarmMsg()` and `lset::getTimeStampTag()`. See
|
||||
comments in dbLink.h for details on implementing these.
|
||||
|
||||
Two new accessor functions have also been added which call these methods:
|
||||
`dbGetAlarmMsg()` and `dbGetTimeStampTag()`.
|
||||
|
||||
#### Compatibility
|
||||
|
||||
User code wishing to call these interfaces while maintaining compatibility with older
|
||||
versions of Base may add some of the following macro definitions, and ensure
|
||||
that the variables referenced by output pointers are initialized.
|
||||
|
||||
```c
|
||||
#ifndef HAS_ALARM_MESSAGE
|
||||
# define recGblSetSevrMsg(REC, STAT, SEVR, ...) recGblSetSevr(REC, STAT, SEVR)
|
||||
#endif
|
||||
#ifndef dbGetAlarmMsg
|
||||
# define dbGetAlarmMsg(LINK, STAT, SEVR, BUF, BUFLEN) dbGetAlarm(LINK, STAT, SEVR)
|
||||
#endif
|
||||
#ifndef dbGetTimeStampTag
|
||||
# define dbGetTimeStampTag(LINK, STAMP, TAG) dbGetTimeStamp(LINK, STAMP)
|
||||
#endif
|
||||
```
|
||||
|
||||
|
||||
### Timeouts for Unit Test Programs
|
||||
|
||||
The unit test programs that are run by the `make runtests` or `make tapfiles`
|
||||
commands get executed by a `.t` wrapper script which is normally generated by
|
||||
the EPICS `makeTestfile.pl` program. Those generated wrapper scripts now
|
||||
impose a time-limit on the test program they execute, and will kill it if it
|
||||
runs for longer than 500 seconds (8 minutes 20) without exiting. That
|
||||
time-limit can be changed for any such test by modifying the Makefile which
|
||||
creates and runs the `.t` wrapper script.
|
||||
|
||||
Setting the environment variable `EPICS_UNITTEST_TIMEOUT` to the desired
|
||||
number of seconds while the Makefile is generating the test script changes the
|
||||
timeout in that script. For example:
|
||||
|
||||
```
|
||||
TESTSCRIPTS_HOST += hourLongTest.t
|
||||
hourLongTest.t: export EPICS_UNITTEST_TIMEOUT=3600
|
||||
```
|
||||
|
||||
When selecting such a timeout remember that different Continuous Integration
|
||||
systems such as GitHub Actions and Appveyor run on processors with different
|
||||
speeds, so allow enough head-room for slower systems to complete the test.
|
||||
|
||||
Test programs written directly in Perl as a `.plt` script should implement a
|
||||
similar timeout for themselves. The "netget" test in Base does this in a way
|
||||
that works on Windows as well as Unix-like hosts.
|
||||
|
||||
-----
|
||||
|
||||
@@ -1688,7 +2024,43 @@ header and removed the need for dbScan.c to reach into the internals of its
|
||||
# Changes incorporated from the 3.15 branch
|
||||
|
||||
|
||||
## Changes made on the 3.15 branch since 3.15.8
|
||||
## Changes from the 3.15 branch since 3.15.9
|
||||
|
||||
### Fix timers on MS Windows for non-EPICS threads
|
||||
|
||||
The waitable timer changes in 3.15.9 broke calls to `epicsThreadSleep()` and
|
||||
similar routines that used timers (including `ca_pend_event()`) when made from
|
||||
threads that were not started using the epicsThread APIs.
|
||||
[This problem](https://github.com/epics-base/epics-base/pull/200)
|
||||
[has now been fixed](https://github.com/epics-base/epics-base/pull/201).
|
||||
|
||||
## Changes made between 3.15.8 and 3.15.9
|
||||
|
||||
### Use waitable timers on Microsoft Windows
|
||||
|
||||
The `epicsEventWaitWithTimeout()` and `epicsThreadSleep()` functions have
|
||||
been changed to use waitable timers. On Windows 10 version 1803 or higher
|
||||
they will use high resolution timers for more consistent timing.
|
||||
|
||||
See [this Google Groups thread](https://groups.google.com/a/chromium.org/g/scheduler-dev/c/0GlSPYreJeY)
|
||||
for a comparison of the performance of different timers.
|
||||
|
||||
### Build target for documentation
|
||||
|
||||
The build target `inc` now works again after a very long hiatus. It now
|
||||
generates and installs just the dbd, header and html files, without compiling
|
||||
any C/C++ code. This can be used to speed up CI jobs that only generate
|
||||
documentation.
|
||||
|
||||
### Bug fixes
|
||||
|
||||
- The error status returned by a record support's `special()` method is now propagated out of the `dbPut()` routine again (broken since 3.15.0).
|
||||
- [gh: #80](https://github.com/epics-base/epics-base/issues/80), VS-2015 and
|
||||
later have working strtod()
|
||||
- [lp: #1776141](https://bugs.launchpad.net/epics-base/+bug/1776141), Catch
|
||||
buffer overflow from long link strings
|
||||
- [lp: #1899697](https://bugs.launchpad.net/epics-base/+bug/1899697), Records
|
||||
in wrong PHAS order
|
||||
|
||||
### Change to the `junitfiles` self-test build target
|
||||
|
||||
@@ -1696,7 +2068,9 @@ The names of the generated junit xml test output files have been changed
|
||||
from `<testname>.xml` to `<testname>-results.xml`, to allow better
|
||||
distinction from other xml files. (I.e., for easy wildcard matching.)
|
||||
|
||||
-----
|
||||
### Fixes and code cleanups
|
||||
|
||||
Issues reported by various static code checkers.
|
||||
|
||||
## Changes made between 3.15.7 and 3.15.8
|
||||
|
||||
|
||||
@@ -37,26 +37,11 @@ that should be performed when creating production releases of EPICS Base.</p>
|
||||
|
||||
<h3>The Release Process</h3>
|
||||
|
||||
<h4>Full Process</h4>
|
||||
|
||||
<p>The version released on the Feature Freeze date is designated the first
|
||||
pre-release, <tt>-pre1</tt>. The first release candidate <tt>-rc1</tt> is the
|
||||
first version that has undergone testing by the developers and has shown no
|
||||
problems that must be fixed before release. New versions should be made at about
|
||||
2-weekly intervals after the <tt>-pre1</tt> release, and designated as either
|
||||
pre-release or release candidate versions by the Release Manager. Release
|
||||
candidates are announced to the whole community via the tech-talk mailing list,
|
||||
pre-releases are announced to to the developers via the core-talk list. After a
|
||||
release candidate has been available for 2 weeks without any new problems being
|
||||
reported or major changes having to be committed, the final release can be
|
||||
made.</p>
|
||||
|
||||
<h4>Short Process for Patch Releases</h4>
|
||||
|
||||
<p>The Patch Release date and its scope are agreed upon a few weeks ahead of the
|
||||
release. If no blocking issues are raised, the release is made by the Release
|
||||
Manager on or as soon as possible after that date, following the steps below
|
||||
starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
<p>We used to have one written down here, but we weren't following it very
|
||||
closely so now the decision to make a new release is taken during the Core
|
||||
Developers bi-weekly meetings in an informal manner. The steps detailed below
|
||||
were written to remind Andrew (or anyone else who does the release) about
|
||||
everything that has to be done since it's so easy to miss steps.</p>
|
||||
|
||||
<h3>Roles</h3>
|
||||
|
||||
@@ -65,11 +50,11 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
<dl>
|
||||
<dt><strong>Release Manager</strong> ()</dt>
|
||||
<dd>Responsible for managing and tagging the release</dd>
|
||||
<dt><strong>Platform Developers</strong> (optional)</dt>
|
||||
<dt><strong>Platform Developers</strong> (informal)</dt>
|
||||
<dd>Responsible for individual operating system platforms</dd>
|
||||
<dt><strong>Application Developers</strong></dt>
|
||||
<dd>Responsible for support modules that depend on EPICS Base.</dd>
|
||||
<dt><strong>Website Manager</strong> (Andrew Johnson)</dt>
|
||||
<dt><strong>Website Editor</strong> (Andrew Johnson)</dt>
|
||||
<dd>Responsible for the EPICS website</dd>
|
||||
</dl>
|
||||
|
||||
@@ -111,9 +96,7 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
& all developers</td>
|
||||
<td>Ensure that documentation will be updated before the release date:
|
||||
<ul>
|
||||
<li>Application Developers Guide</li>
|
||||
<li>Release Notes</li>
|
||||
<li>Known Problems</li>
|
||||
<li>Other documents</li>
|
||||
</ul>
|
||||
</td>
|
||||
@@ -125,87 +108,9 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
</tr>
|
||||
<tr>
|
||||
<td> </td>
|
||||
<td>Website Manager</td>
|
||||
<td>Release Manager</td>
|
||||
<td>Create a release milestone on Launchpad. If a target release date is
|
||||
known set "Date Targeted" to the expected release date. Note that
|
||||
pre-release and release-candidate versions should not get Launchpad
|
||||
milestones, only the final release.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">Creating pre-release and release-candidate versions</th>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
<!-- Submodules... -->
|
||||
<td>Edit and commit changes to the EPICS version number file
|
||||
configure/CONFIG_BASE_VERSION.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
<td>Tag the module in Git, using these tag conventions:
|
||||
<ul>
|
||||
<li>
|
||||
<tt>R7.0.5-pre<i>n</i></tt>
|
||||
— pre-release tag
|
||||
</li>
|
||||
<li>
|
||||
<tt>R7.0.5-rc<i>n</i></tt>
|
||||
— release candidate tag
|
||||
</li>
|
||||
</ul>
|
||||
<blockquote><tt>
|
||||
cd base-7.0<br />
|
||||
git tag -m 'ANJ: Tagged for 7.0.5-rc1' R7.0.5-rc1
|
||||
</tt></blockquote>
|
||||
Note that submodules must <em>not</em> be tagged with the version used
|
||||
for the top-level, they each have their own separate version numbers
|
||||
that are only tagged at the final release.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
<td>Export the tagged version into a tarfile. The <tt>make-tar.sh</tt>
|
||||
script generates a gzipped tarfile directly from the tag, excluding the
|
||||
files and directories that are only used for continuous integration:
|
||||
<blockquote><tt>
|
||||
cd base-7.0<br />
|
||||
./.tools/make-tar.sh R7.0.5-rc1 base-7.0.5-rc1.tar.gz base-7.0.5-rc1/
|
||||
</tt></blockquote>
|
||||
Create a GPG signature file of the tarfile as follows:
|
||||
<blockquote><tt>
|
||||
gpg --armor --sign --detach-sig base-7.0.5-rc1.tar.gz
|
||||
</tt></blockquote>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
<td>Test the tarfile by extracting its contents and building it on at
|
||||
least one supported platform.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Manager</td>
|
||||
<td>Copy the tarfile and its signature to the Base download area of the
|
||||
website and add the new files to the website Base download index
|
||||
page.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Manager</td>
|
||||
<td>Create or update a website subdirectory to hold the release
|
||||
documentation, and copy in selected files from the base/documentation
|
||||
and base/html directories of the tarfile.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Manager</td>
|
||||
<td>Create or modify the webpage for the new release with links to the
|
||||
release documents and tar file. Pre-release and release-candidate
|
||||
versions should use the page and URL for the final release version
|
||||
number.</td>
|
||||
known set "Date Targeted" to the expected release date.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">Testing</th>
|
||||
@@ -250,11 +155,8 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
<td>Release Manager</td>
|
||||
<td>Check that documentation has been updated:
|
||||
<ul>
|
||||
<li><a href="https://launchpad.net/epics-appdev">Application
|
||||
Developers Guide</a></li>
|
||||
<li>Release Notes</li>
|
||||
<li>Known Problems (hopefully empty)</li>
|
||||
<li>Other documents (converting...)</li>
|
||||
<li>Other documents</li>
|
||||
</ul>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -266,9 +168,7 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
<td>Obtain a positive <q>Ok to release</q> from all platform developers
|
||||
once a release candidate version has gone for 2 weeks without any major
|
||||
new issues being reported.</td>
|
||||
<td>Obtain a positive <q>Ok to release</q> from developers.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<th colspan="3">Creating the final release version</th>
|
||||
@@ -277,8 +177,8 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
<td>
|
||||
<p>For each external submodule in turn (assuming it has not been tagged
|
||||
yet):</p>
|
||||
<p><b>For each external submodule</b> in turn (assuming it has not been
|
||||
tagged yet):</p>
|
||||
<ol>
|
||||
<li>Check that the module's Release Notes have been updated to cover
|
||||
all changes; add items as necessary, and set the module version
|
||||
@@ -298,7 +198,7 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
|
||||
<li>Tag the module:
|
||||
<blockquote><tt>
|
||||
git tag -m 'ANJ: Tag for EPICS 7.0.5' <module-version>
|
||||
git tag -m 'ANJ: Tag for EPICS 7.0.6.1' <module-version>
|
||||
</tt></blockquote>
|
||||
</li>
|
||||
|
||||
@@ -326,15 +226,24 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
</li>
|
||||
|
||||
</ol>
|
||||
<p>Commit all the submodule updates to the 7.0 branch.</p>
|
||||
<p><b>After all submodules complete</b> commit the submodule updates
|
||||
which were added for each submodule in step 4 above to the 7.0 branch
|
||||
(don't push). After committing, make sure that the output from
|
||||
<tt>git submodule status --cached</tt> only shows the appropriate
|
||||
version tags in the right-most parenthesized column with no
|
||||
<tt>-<i>n</t>-g<i>xxxxxxx</i></tt> suffix.</p>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
|
||||
<td>Edit the main EPICS Base version file and the built-in module version
|
||||
files:
|
||||
<td>
|
||||
<p><tt>git grep UNRELEASED</tt> and insert the release version to any
|
||||
doxygen annotations that have a <tt>@since UNRELEASED</tt> comment.
|
||||
Commit (don't push).</p>
|
||||
<p>Edit the main EPICS Base version file and the built-in module version
|
||||
files:</p>
|
||||
<ul>
|
||||
<li><tt>configure/CONFIG_BASE_VERSION</tt></li>
|
||||
<li><tt>configure/CONFIG_LIBCOM_VERSION</tt></li>
|
||||
@@ -346,6 +255,9 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
<tt>PATCH_LEVEL</tt> value should have been incremented after the
|
||||
previous release tag was applied. Set all <tt>DEVELOPMENT_FLAG</tt>
|
||||
values to 0 and <tt>EPICS_DEV_SNAPSHOT</tt> to the empty string.</p>
|
||||
<p>Edit the headings in the Release Notes to show the appropriate
|
||||
version number and remove the warning about this being an unreleased
|
||||
version of EPICS.</p>
|
||||
<p>Commit these changes (don't push).</p>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -355,9 +267,9 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
<td>Tag the epics-base module in Git:
|
||||
<blockquote><tt>
|
||||
cd base-7.0<br />
|
||||
git tag -m 'ANJ: Tagged for release' R7.0.5
|
||||
git tag -m 'ANJ: Tagged for release' R7.0.6.1
|
||||
</tt></blockquote>
|
||||
<p>Don't push these commits or the new tag to the Launchpad repository
|
||||
<p>Don't push anything to the Launchpad repository
|
||||
yet.</p>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -376,6 +288,9 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
release by incrementing the MAINTENANCE_VERSION or PATCH_LEVEL value
|
||||
in each file. Set all <tt>DEVELOPMENT_FLAG</tt> values to 1 and
|
||||
<tt>EPICS_DEV_SNAPSHOT</tt> to "-DEV".</p>
|
||||
<p>Set up the headings in the Release Notes for the next release
|
||||
version number and restore the warning about this being an unreleased
|
||||
version of EPICS.</p>
|
||||
<p>Commit these changes (don't push).</p>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -387,12 +302,12 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
files and directories that are only used for continuous integration:
|
||||
<blockquote><tt>
|
||||
cd base-7.0<br />
|
||||
./.tools/make-tar.sh R7.0.5 ../base-7.0.5.tar.gz base-7.0.5/
|
||||
./.tools/make-tar.sh R7.0.6.1 ../base-7.0.6.1.tar.gz base-7.0.6.1/
|
||||
</tt></blockquote>
|
||||
Create a GPG signature file of the tarfile as follows:
|
||||
<blockquote><tt>
|
||||
cd ..<br />
|
||||
gpg --armor --sign --detach-sig base-7.0.5.tar.gz
|
||||
gpg --armor --sign --detach-sig base-7.0.6.1.tar.gz
|
||||
</tt></blockquote>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -412,38 +327,38 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Release Manager</td>
|
||||
<td>Website Editor</td>
|
||||
<td>Copy the tarfile and its signature to the Base download area of the
|
||||
website.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Manager</td>
|
||||
<td>Website Editor</td>
|
||||
<td>Update the website subdirectory that holds the release
|
||||
documentation, and copy in the files from the base/documentation
|
||||
directory of the tarfile.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Manager</td>
|
||||
<td>Website Editor</td>
|
||||
<td>Update the webpage for the new release with links to the release
|
||||
documents and tar file.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Manager</td>
|
||||
<td>Website Editor</td>
|
||||
<td>Add the new release tar file to the website Base download index
|
||||
page.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Manager</td>
|
||||
<td>Website Editor</td>
|
||||
<td>Link to the release webpage from other relevent areas of the
|
||||
website - update front page and sidebars.</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Manager</td>
|
||||
<td>Website Editor</td>
|
||||
<td>Add an entry to the website News page, linking to the new version
|
||||
webpage.</td>
|
||||
</tr>
|
||||
@@ -453,17 +368,17 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Manager</td>
|
||||
<td>Website Editor</td>
|
||||
<td>Upload the tar file and its <tt>.asc</tt> signature file to the
|
||||
epics-controls web-server.
|
||||
<blockquote><tt>
|
||||
scp base-7.0.5.tar.gz base-7.0.5.tar.gz.asc epics-controls:download/base<br />
|
||||
scp base-7.0.6.1.tar.gz base-7.0.6.1.tar.gz.asc epics-controls:download/base<br />
|
||||
</tt></blockquote>
|
||||
</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Manager</td>
|
||||
<td>Website Editor</td>
|
||||
<td>Follow instructions on
|
||||
<a href="https://epics-controls.org/resources-and-support/documents/epics-website-documentation/adding-a-page-for-a-new-release/">
|
||||
Add a page for a new release</a> to create a new release webpage (not
|
||||
@@ -478,7 +393,7 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><input type="checkbox"></td>
|
||||
<td>Website Manager</td>
|
||||
<td>Release Manager</td>
|
||||
<td>Go to the Launchpad milestone for this release. Click the Create
|
||||
release button and add the release date. Put a URL for the release page
|
||||
in the Release notes box, and click the Create release button. Upload
|
||||
|
||||
@@ -113,7 +113,7 @@ SCRIPTS_Linux = caRepeater.service
|
||||
|
||||
EXPAND += S99caRepeater@
|
||||
EXPAND += caRepeater.service@
|
||||
EXPAND_VARS = INSTALL_BIN=$(abspath $(INSTALL_BIN))
|
||||
EXPAND_VARS = INSTALL_BIN=$(FINAL_LOCATION)/bin/$(T_A)
|
||||
|
||||
SRC_DIRS += $(CURDIR)/test
|
||||
PROD_HOST += ca_test
|
||||
|
||||
@@ -88,7 +88,7 @@ const char * ca_message_text []
|
||||
"Bad event subscription (monitor) identifier",
|
||||
"Remote channel has new network address",
|
||||
"New or resumed network connection",
|
||||
"Specified task isnt a member of a CA context",
|
||||
"Specified task isn't a member of a CA context",
|
||||
"Attempt to use defunct CA feature failed",
|
||||
|
||||
"The supplied string is empty",
|
||||
@@ -324,7 +324,7 @@ int epicsStdCall ca_create_channel (
|
||||
*chanptr = pChanNotify;
|
||||
pChanNotify->initiateConnect ( guard );
|
||||
// no need to worry about a connect preempting here because
|
||||
// the connect sequence will not start untill initiateConnect()
|
||||
// the connect sequence will not start until initiateConnect()
|
||||
// is called
|
||||
}
|
||||
catch ( cacChannel::badString & ) {
|
||||
@@ -384,9 +384,9 @@ int epicsStdCall ca_clear_channel ( chid pChan )
|
||||
// we will definately stall out here if all of the
|
||||
// following are true
|
||||
//
|
||||
// o user creates non-preemtive mode client library context
|
||||
// o user creates non-preemptive mode client library context
|
||||
// o user doesnt periodically call a ca function
|
||||
// o user calls this function from an auxiillary thread
|
||||
// o user calls this function from an auxiliary thread
|
||||
//
|
||||
CallbackGuard cbGuard ( cac.cbMutex );
|
||||
epicsGuard < epicsMutex > guard ( cac.mutex );
|
||||
@@ -720,7 +720,7 @@ int epicsStdCall ca_context_status ( ca_client_context * pcac, unsigned level )
|
||||
/*
|
||||
* ca_current_context ()
|
||||
*
|
||||
* used when an auxillary thread needs to join a CA client context started
|
||||
* used when an auxiliary thread needs to join a CA client context started
|
||||
* by another thread
|
||||
*/
|
||||
// extern "C"
|
||||
@@ -740,7 +740,7 @@ struct ca_client_context * epicsStdCall ca_current_context ()
|
||||
/*
|
||||
* ca_attach_context ()
|
||||
*
|
||||
* used when an auxillary thread needs to join a CA client context started
|
||||
* used when an auxiliary thread needs to join a CA client context started
|
||||
* by another thread
|
||||
*/
|
||||
// extern "C"
|
||||
|
||||
@@ -494,7 +494,7 @@ void verifyConnectionHandlerConnect ( appChan *pChans, unsigned chanCount,
|
||||
/*
|
||||
* verifyBlockingConnect ()
|
||||
*
|
||||
* 1) verify that we dont print a disconnect message when
|
||||
* 1) verify that we don't print a disconnect message when
|
||||
* we delete the last channel
|
||||
*
|
||||
* 2) verify that we delete the connection to the IOC
|
||||
@@ -645,7 +645,7 @@ void verifyBlockingConnect ( appChan *pChans, unsigned chanCount,
|
||||
status = ca_pend_io ( 1e-16 );
|
||||
if ( status == ECA_TIMEOUT ) {
|
||||
/*
|
||||
* we end up here if the channel isnt on the same host
|
||||
* we end up here if the channel isn't on the same host
|
||||
*/
|
||||
epicsThreadSleep ( 0.1 );
|
||||
ca_poll ();
|
||||
@@ -1112,7 +1112,7 @@ void verifyHighThroughputRead ( chid chan, unsigned interestLevel )
|
||||
unsigned i;
|
||||
|
||||
/*
|
||||
* verify we dont jam up on many uninterrupted
|
||||
* verify we don't jam up on many uninterrupted
|
||||
* solicitations
|
||||
*/
|
||||
if ( ca_read_access (chan) ) {
|
||||
@@ -1152,7 +1152,7 @@ void verifyHighThroughputWrite ( chid chan, unsigned interestLevel )
|
||||
}
|
||||
|
||||
/*
|
||||
* verify we dont jam up on many uninterrupted
|
||||
* verify we don't jam up on many uninterrupted
|
||||
* get callback requests
|
||||
*/
|
||||
void verifyHighThroughputReadCallback ( chid chan, unsigned interestLevel )
|
||||
@@ -1181,7 +1181,7 @@ void verifyHighThroughputReadCallback ( chid chan, unsigned interestLevel )
|
||||
}
|
||||
|
||||
/*
|
||||
* verify we dont jam up on many uninterrupted
|
||||
* verify we don't jam up on many uninterrupted
|
||||
* put callback request
|
||||
*/
|
||||
void verifyHighThroughputWriteCallback ( chid chan, unsigned interestLevel )
|
||||
@@ -1239,7 +1239,7 @@ void verifyBadString ( chid chan, unsigned interestLevel )
|
||||
verify ( status == ECA_NORMAL );
|
||||
if ( strcmp ( stimStr, respStr ) ) {
|
||||
printf (
|
||||
"Test fails if stim \"%s\" isnt roughly equiv to resp \"%s\"\n",
|
||||
"Test fails if stim \"%s\" isn't roughly equiv to resp \"%s\"\n",
|
||||
stimStr, respStr);
|
||||
}
|
||||
showProgressEnd ( interestLevel );
|
||||
@@ -1395,7 +1395,7 @@ static void multiSubscrDestroyNoLateCallbackThread ( void * pParm )
|
||||
|
||||
/*
|
||||
* raise the priority of the current thread hoping to improve our
|
||||
* likelyhood of detecting a bug
|
||||
* likelihood of detecting a bug
|
||||
*/
|
||||
priorityOfTestThread = epicsThreadGetPrioritySelf ();
|
||||
epicsThreadSetPriority ( epicsThreadGetIdSelf(), epicsThreadPriorityHigh );
|
||||
@@ -1445,7 +1445,7 @@ static void multiSubscrDestroyNoLateCallbackThread ( void * pParm )
|
||||
}
|
||||
|
||||
/*
|
||||
* verify that, in a preemtive callback mode client, a subscription callback never
|
||||
* verify that, in a preemptive callback mode client, a subscription callback never
|
||||
* comes after the subscription is destroyed
|
||||
*/
|
||||
static void multiSubscrDestroyNoLateCallbackTest ( const char *pName, unsigned interestLevel )
|
||||
@@ -1563,7 +1563,7 @@ void multiSubscriptionDeleteTest ( chid chan, unsigned interestLevel )
|
||||
/*
|
||||
* singleSubscriptionDeleteTest
|
||||
*
|
||||
* verify that we dont fail when we repeatedly create
|
||||
* verify that we don't fail when we repeatedly create
|
||||
* and delete only one subscription with a high level of
|
||||
* traffic on it
|
||||
*/
|
||||
@@ -1617,7 +1617,7 @@ void singleSubscriptionDeleteTest ( chid chan, unsigned interestLevel )
|
||||
/*
|
||||
* channelClearWithEventTrafficTest
|
||||
*
|
||||
* verify that we can delete a channel that has subcriptions
|
||||
* verify that we can delete a channel that has subscriptions
|
||||
* attached with heavy update traffic
|
||||
*/
|
||||
void channelClearWithEventTrafficTest ( const char *pName, unsigned interestLevel )
|
||||
@@ -2481,7 +2481,7 @@ void monitorUpdateTest ( chid chan, unsigned interestLevel )
|
||||
showProgress ( interestLevel );
|
||||
|
||||
/*
|
||||
* attempt to uncover problems where the last event isnt sent
|
||||
* attempt to uncover problems where the last event isn't sent
|
||||
* and hopefully get into a flow control situation
|
||||
*/
|
||||
prevPassCount = 0u;
|
||||
@@ -2522,7 +2522,7 @@ void monitorUpdateTest ( chid chan, unsigned interestLevel )
|
||||
ca_poll (); /* emulate typical GUI */
|
||||
for ( j = 0; j < NELEMENTS ( test ); j++ ) {
|
||||
/*
|
||||
* we shouldnt see old monitors because
|
||||
* we shouldn't see old monitors because
|
||||
* we resubscribed
|
||||
*/
|
||||
verify ( test[j].count <= i + 2 );
|
||||
@@ -3016,7 +3016,7 @@ void testMultithreadSubscr ( void * pParm )
|
||||
}
|
||||
|
||||
/*
|
||||
* test installation of subscriptions similar to usage paterns
|
||||
* test installation of subscriptions similar to usage patterns
|
||||
* employed by modern versions of the sequencer
|
||||
*/
|
||||
void verifyMultithreadSubscr ( const char * pName, unsigned interestLevel )
|
||||
@@ -3111,7 +3111,7 @@ void fdManagerVerify ( const char * pName, unsigned interestLevel )
|
||||
status = ca_flush_io ();
|
||||
verify ( status == ECA_NORMAL );
|
||||
|
||||
/* look for infinite loop in fd manager schedualing */
|
||||
/* look for infinite loop in fd manager scheduling */
|
||||
epicsTimeGetCurrent ( & begin );
|
||||
eventCount = 0u;
|
||||
while ( 1 ) {
|
||||
@@ -3175,7 +3175,7 @@ void verifyConnectWithDisconnectedChannels (
|
||||
* we should be able to connect to a valid
|
||||
* channel within a reasonable delay even
|
||||
* though there is one permanently
|
||||
* diasconnected channel
|
||||
* disconnected channel
|
||||
*/
|
||||
status = ca_pend_io ( timeoutToPendIO );
|
||||
verify ( status == ECA_NORMAL );
|
||||
@@ -3491,7 +3491,7 @@ int acctst ( const char * pName, unsigned interestLevel, unsigned channelCount,
|
||||
|
||||
/*
|
||||
* CA pend event delay accuracy test
|
||||
* (CA asssumes that search requests can be sent
|
||||
* (CA assumes that search requests can be sent
|
||||
* at least every 25 mS on all supported os)
|
||||
*/
|
||||
printf ( "\n" );
|
||||
|
||||
@@ -130,8 +130,8 @@ bool bhe::updatePeriod (
|
||||
guard.assertIdenticalMutex ( this->mutex );
|
||||
|
||||
//
|
||||
// this block is enetered if the beacon was created as a side effect of
|
||||
// creating a connection and so we dont yet know the first beacon time
|
||||
// this block is entered if the beacon was created as a side effect of
|
||||
// creating a connection and so we don't yet know the first beacon time
|
||||
// and sequence number
|
||||
//
|
||||
if ( this->timeStamp == epicsTime () ) {
|
||||
@@ -154,7 +154,7 @@ bool bhe::updatePeriod (
|
||||
return false;
|
||||
}
|
||||
|
||||
// 1) detect beacon duplications due to redundant routes
|
||||
// 1) detect beacon duplication due to redundant routes
|
||||
// 2) detect lost beacons due to input queue overrun or damage
|
||||
if ( CA_V410 ( protocolRevision ) ) {
|
||||
unsigned beaconSeqAdvance;
|
||||
@@ -175,7 +175,7 @@ bool bhe::updatePeriod (
|
||||
|
||||
// throw out sequence numbers that jump forward by only a few numbers
|
||||
// (this situation is probably caused by a duplicate route
|
||||
// or a beacon due to input queue overun)
|
||||
// or a beacon due to input queue overrun)
|
||||
if ( beaconSeqAdvance > 1 && beaconSeqAdvance < 4 ) {
|
||||
logBeaconDiscard ( beaconSeqAdvance, currentTime );
|
||||
return false;
|
||||
@@ -244,8 +244,8 @@ bool bhe::updatePeriod (
|
||||
/*
|
||||
* Is this an IOC seen because of an IOC reboot
|
||||
* (beacon come at a higher rate just after the
|
||||
* IOC reboots). Lower tolarance here because we
|
||||
* dont have to worry about lost beacons.
|
||||
* IOC reboots). Lower tolerance here because we
|
||||
* don't have to worry about lost beacons.
|
||||
*
|
||||
* It may be possible to get false triggers here
|
||||
* if the client is busy, but this does not cause
|
||||
|
||||
@@ -17,6 +17,9 @@
|
||||
#ifndef INC_caProto_H
|
||||
#define INC_caProto_H
|
||||
|
||||
// Pick up definition of IPPORT_USERRESERVED
|
||||
#include <osiSock.h>
|
||||
|
||||
#define capStrOf(A) #A
|
||||
#define capStrOfX(A) capStrOf ( A )
|
||||
|
||||
@@ -55,8 +58,8 @@
|
||||
#define CA_REPEATER_PORT (CA_PORT_BASE+CA_MAJOR_PROTOCOL_REVISION*2u+1u)
|
||||
|
||||
/*
|
||||
* 1500 (max of ethernet and 802.{2,3} MTU) - 20(IP) - 8(UDP)
|
||||
* (the MTU of Ethernet is currently independent of its speed varient)
|
||||
* 1500 (max of Ethernet and 802.{2,3} MTU) - 20(IP) - 8(UDP)
|
||||
* (the MTU of Ethernet is currently independent of its speed variant)
|
||||
*/
|
||||
#define ETHERNET_MAX_UDP ( 1500u - 20u - 8u )
|
||||
#define MAX_UDP_RECV ( 0xffff + 16u ) /* allow large frames to be received in the future */
|
||||
@@ -114,7 +117,7 @@ typedef ca_uint32_t caResId;
|
||||
|
||||
/*
|
||||
* for use with search and not_found (if search fails and
|
||||
* its not a broadcast tell the client to look elesewhere)
|
||||
* its not a broadcast tell the client to look elsewhere)
|
||||
*/
|
||||
#define DOREPLY 10u
|
||||
#define DONTREPLY 5u
|
||||
@@ -173,7 +176,7 @@ typedef struct ca_hdr {
|
||||
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_float32_t m_toval; /* period between samples */
|
||||
ca_uint16_t m_mask; /* event select mask */
|
||||
ca_uint16_t m_pad; /* extend to 32 bits */
|
||||
};
|
||||
|
||||
@@ -90,7 +90,7 @@ int main(int argc, char* argv[])
|
||||
(void)detachinout;
|
||||
#endif
|
||||
|
||||
chdir ( "/" );
|
||||
(void)! chdir ( "/" );
|
||||
ca_repeater ();
|
||||
return ( 0 );
|
||||
}
|
||||
|
||||
@@ -224,7 +224,7 @@ void ca_client_context::changeExceptionEvent (
|
||||
epicsGuard < epicsMutex > guard ( this->mutex );
|
||||
this->ca_exception_func = pfunc;
|
||||
this->ca_exception_arg = arg;
|
||||
// should block here until releated callback in progress completes
|
||||
// should block here until related callback in progress completes
|
||||
}
|
||||
|
||||
void ca_client_context::replaceErrLogHandler (
|
||||
@@ -237,7 +237,7 @@ void ca_client_context::replaceErrLogHandler (
|
||||
else {
|
||||
this->pVPrintfFunc = epicsVprintf;
|
||||
}
|
||||
// should block here until releated callback in progress completes
|
||||
// should block here until related callback in progress completes
|
||||
}
|
||||
|
||||
void ca_client_context::registerForFileDescriptorCallBack (
|
||||
@@ -252,7 +252,7 @@ void ca_client_context::registerForFileDescriptorCallBack (
|
||||
// w/o having sent the wakeup message
|
||||
this->_sendWakeupMsg ();
|
||||
}
|
||||
// should block here until releated callback in progress completes
|
||||
// should block here until related callback in progress completes
|
||||
}
|
||||
|
||||
int ca_client_context :: printFormated (
|
||||
@@ -768,9 +768,9 @@ LIBCA_API int epicsStdCall ca_clear_subscription ( evid pMon )
|
||||
// we will definately stall out here if all of the
|
||||
// following are true
|
||||
//
|
||||
// o user creates non-preemtive mode client library context
|
||||
// o user creates non-preemptive mode client library context
|
||||
// o user doesnt periodically call a ca function
|
||||
// o user calls this function from an auxiillary thread
|
||||
// o user calls this function from an auxiliary thread
|
||||
//
|
||||
CallbackGuard cbGuard ( cac.cbMutex );
|
||||
epicsGuard < epicsMutex > guard ( cac.mutex );
|
||||
|
||||
@@ -285,7 +285,7 @@ cac::~cac ()
|
||||
// this blocks until the UDP thread exits so that
|
||||
// it will not sneak in any new clients
|
||||
//
|
||||
// lock intentionally not held here so that we dont deadlock
|
||||
// lock intentionally not held here so that we don't deadlock
|
||||
// waiting for the UDP thread to exit while it is waiting to
|
||||
// get the lock.
|
||||
{
|
||||
@@ -312,7 +312,7 @@ cac::~cac ()
|
||||
//
|
||||
// wait for all tcp threads to exit
|
||||
//
|
||||
// this will block for oustanding sends to go out so dont
|
||||
// this will block for outstanding sends to go out so don't
|
||||
// hold a lock while waiting
|
||||
//
|
||||
{
|
||||
@@ -411,7 +411,7 @@ void cac::show (
|
||||
|
||||
::printf ( "Channel Access Client Context at %p for user %s\n",
|
||||
static_cast <const void *> ( this ), this->pUserName );
|
||||
// this also supresses the "defined, but not used"
|
||||
// this also suppresses the "defined, but not used"
|
||||
// warning message
|
||||
::printf ( "\trevision \"%s\"\n", pVersionCAC );
|
||||
|
||||
|
||||
@@ -129,7 +129,7 @@ typedef unsigned CA_SYNC_GID;
|
||||
#define CA_OP_CONN_UP 6
|
||||
#define CA_OP_CONN_DOWN 7
|
||||
|
||||
/* depricated */
|
||||
/* deprecated */
|
||||
#define CA_OP_SEARCH 2
|
||||
|
||||
/*
|
||||
@@ -464,7 +464,7 @@ LIBCA_API int epicsStdCall ca_array_get_callback
|
||||
/* Specify a function to be executed whenever significant changes */
|
||||
/* occur to a channel. */
|
||||
/* NOTES: */
|
||||
/* 1) Evid may be omited by passing a NULL pointer */
|
||||
/* 1) Evid may be omitted by passing a NULL pointer */
|
||||
/* */
|
||||
/* 2) An array count of zero specifies the native db count */
|
||||
/* */
|
||||
@@ -837,7 +837,7 @@ LIBCA_API double epicsStdCall ca_beacon_period (chid chan);
|
||||
LIBCA_API double epicsStdCall ca_receive_watchdog_delay (chid chan);
|
||||
|
||||
/*
|
||||
* used when an auxillary thread needs to join a CA client context started
|
||||
* used when an auxiliary thread needs to join a CA client context started
|
||||
* by another thread
|
||||
*/
|
||||
LIBCA_API struct ca_client_context * epicsStdCall ca_current_context ();
|
||||
|
||||
@@ -188,7 +188,7 @@ int main ( int argc, char ** argv )
|
||||
epicsSocketConvertErrnoToString (
|
||||
sockErrBuf, sizeof ( sockErrBuf ) );
|
||||
epicsSocketDestroy ( sock );
|
||||
errlogPrintf ("casw: error from recv was = \"%s\"\n",
|
||||
errlogPrintf ("casw: " ERL_ERROR " from recv was = \"%s\"\n",
|
||||
sockErrBuf );
|
||||
return -1;
|
||||
}
|
||||
@@ -224,7 +224,7 @@ int main ( int argc, char ** argv )
|
||||
* always set this field to INADDR_ANY
|
||||
*
|
||||
* clients always assume that if this
|
||||
* field is set to something that isnt INADDR_ANY
|
||||
* field is set to something that isn't INADDR_ANY
|
||||
* then it is the overriding IP address of the server.
|
||||
*/
|
||||
ina.sin_family = AF_INET;
|
||||
@@ -235,7 +235,7 @@ int main ( int argc, char ** argv )
|
||||
}
|
||||
else {
|
||||
/*
|
||||
* old servers dont supply this and the
|
||||
* old servers don't supply this and the
|
||||
* default port must be assumed
|
||||
*/
|
||||
ina.sin_port = htons ( serverPort );
|
||||
|
||||
@@ -45,7 +45,7 @@ bool comBuf::flushToWire ( wireSendAdapter & wire, const epicsTime & currentTime
|
||||
return true;
|
||||
}
|
||||
|
||||
// throwing the exception from a function that isnt inline
|
||||
// throwing the exception from a function that isn't inline
|
||||
// shrinks the GNU compiled object code
|
||||
void comBuf::throwInsufficentBytesException ()
|
||||
{
|
||||
|
||||
@@ -196,7 +196,7 @@ epicsUInt16 comQueRecv::popUInt16 ()
|
||||
if ( ! pComBuf ) {
|
||||
comBuf::throwInsufficentBytesException ();
|
||||
}
|
||||
// try first for all in one buffer efficent version
|
||||
// try first for all in one buffer efficient version
|
||||
epicsUInt16 tmp = 0;
|
||||
comBuf::popStatus status = pComBuf->pop ( tmp );
|
||||
if ( status.success ) {
|
||||
@@ -215,7 +215,7 @@ epicsUInt32 comQueRecv::popUInt32 ()
|
||||
if ( ! pComBuf ) {
|
||||
comBuf::throwInsufficentBytesException ();
|
||||
}
|
||||
// try first for all in one buffer efficent version
|
||||
// try first for all in one buffer efficient version
|
||||
epicsUInt32 tmp = 0;
|
||||
comBuf::popStatus status = pComBuf->pop ( tmp );
|
||||
if ( status.success ) {
|
||||
@@ -230,7 +230,7 @@ epicsUInt32 comQueRecv::popUInt32 ()
|
||||
|
||||
bool comQueRecv::popOldMsgHeader ( caHdrLargeArray & msg )
|
||||
{
|
||||
// try first for all in one buffer efficent version
|
||||
// try first for all in one buffer efficient version
|
||||
comBuf * pComBuf = this->bufs.first ();
|
||||
if ( ! pComBuf ) {
|
||||
return false;
|
||||
|
||||
@@ -27,17 +27,17 @@
|
||||
// 1) Allow sufficent headroom so that users will be able to perform
|
||||
// a reasonable amount of IO within CA callbacks without experiencing
|
||||
// a push/pull deadlock. If a potential push/pull deadlock situation
|
||||
// occurs then detect and avoid it and provide diagnotic to the user
|
||||
// occurs then detect and avoid it and provide diagnostic to the user
|
||||
// via special status.
|
||||
// 2) Return status to the user when there is insufficent memory to
|
||||
// 2) Return status to the user when there is insufficient memory to
|
||||
// queue a complete message.
|
||||
// 3) return status to the user when a message cant be flushed because
|
||||
// a connection dropped.
|
||||
// 4) Do not allocate too much memory in exception situatons (such as
|
||||
// 4) Do not allocate too much memory in exception situations (such as
|
||||
// after a circuit disconnect).
|
||||
// 5) Avoid allocating more memory than is absolutely necessary to meet
|
||||
// the above requirements.
|
||||
// 6) Message fragments must never be sent to the IOC when there isnt
|
||||
// 6) Message fragments must never be sent to the IOC when there isn't
|
||||
// enough memory to queue part of a message (we also must not force
|
||||
// a disconnect because the client is starved for memory).
|
||||
// 7) avoid the need to check status for each byte pushed into the
|
||||
@@ -45,7 +45,7 @@
|
||||
//
|
||||
// Implementation:
|
||||
// 1) When queuing a complete message, first test to see if a flush is
|
||||
// required. If it is a receive thread scheduals the flush with the
|
||||
// required. If it is a receive thread schedules the flush with the
|
||||
// send thread, and otherwise directly execute the system call. The
|
||||
// send thread must run at a higher priority than the receive thread
|
||||
// if we are to minimize memory consumption.
|
||||
@@ -58,9 +58,9 @@
|
||||
// a) A user is queuing more requests that demand a response from a
|
||||
// callback than are removed by the response that initiated the
|
||||
// callback, and this situation persists for many callbacks until
|
||||
// all buffering in the system is exausted.
|
||||
// all buffering in the system is exhausted.
|
||||
// b) A user is queuing many requests that demand a response from one
|
||||
// callback until all buffering in the system is exausted.
|
||||
// callback until all buffering in the system is exhausted.
|
||||
// c) Some combination of both (a) nad (b).
|
||||
//
|
||||
//
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
#include "caerr.h"
|
||||
|
||||
/*
|
||||
* NOOP if this isnt required
|
||||
* NOOP if this isn't required
|
||||
*/
|
||||
#ifdef EPICS_CONVERSION_REQUIRED
|
||||
|
||||
@@ -326,7 +326,7 @@ arrayElementCount num /* number of values */
|
||||
** int encode; boolean, if true vax to ieee
|
||||
** else ieee to vax
|
||||
**
|
||||
** converts fields ofstruct in HOST format to ieee format
|
||||
** converts fields of struct in HOST format to ieee format
|
||||
** or
|
||||
** converts fields of struct in NET format to fields with HOST
|
||||
** format
|
||||
@@ -1022,7 +1022,7 @@ arrayElementCount num /* number of values */
|
||||
** int encode; boolean, if true vax to ieee
|
||||
** else ieee to vax
|
||||
**
|
||||
** converts fields ofstruct in HOST format to ieee format
|
||||
** converts fields of struct in HOST format to ieee format
|
||||
** or
|
||||
** converts fields of struct in NET format to fields with HOST
|
||||
** format
|
||||
@@ -1056,7 +1056,7 @@ arrayElementCount num /* number of values */
|
||||
/****************************************************************************
|
||||
** cvrt_sts_long(s,d)
|
||||
**
|
||||
** converts fields ofstruct in HOST format to ieee format
|
||||
** converts fields of struct in HOST format to ieee format
|
||||
** or
|
||||
** converts fields of struct in NET format to fields with HOST
|
||||
** format
|
||||
@@ -1118,7 +1118,7 @@ arrayElementCount num /* number of values */
|
||||
/****************************************************************************
|
||||
** cvrt_time_short(s,d)
|
||||
**
|
||||
** converts fields ofstruct in HOST format to ieee format
|
||||
** converts fields of struct in HOST format to ieee format
|
||||
** or
|
||||
** converts fields of struct in NET format to fields with HOST
|
||||
** format
|
||||
@@ -1239,7 +1239,7 @@ arrayElementCount num /* number of values */
|
||||
/****************************************************************************
|
||||
** cvrt_sts_char(s,d)
|
||||
**
|
||||
** converts fields ofstruct in HOST format to ieee format
|
||||
** converts fields of struct in HOST format to ieee format
|
||||
** or
|
||||
** converts fields of struct in NET format to fields with HOST
|
||||
** format
|
||||
@@ -1274,7 +1274,7 @@ arrayElementCount num /* number of values */
|
||||
/****************************************************************************
|
||||
** cvrt_time_long(s,d)
|
||||
**
|
||||
** converts fields ofstruct in HOST format to ieee format
|
||||
** converts fields of struct in HOST format to ieee format
|
||||
** or
|
||||
** converts fields of struct in NET format to fields with HOST
|
||||
** format
|
||||
@@ -1325,7 +1325,7 @@ arrayElementCount num /* number of values */
|
||||
for(i=0; i<num; i++){
|
||||
*pDest = dbr_ntohs( *pSrc );
|
||||
/*
|
||||
* dont increment these inside the MACRO
|
||||
* don't increment these inside the MACRO
|
||||
*/
|
||||
pDest++;
|
||||
pSrc++;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user