Compare commits
439 Commits
R7.0.3.1
...
PSI-7.0.4.
| Author | SHA1 | Date | |
|---|---|---|---|
| d795dd76a6 | |||
|
|
45924d28e0 | ||
|
|
b1d0a0d036 | ||
|
|
45e9cf9a94 | ||
|
|
a8dcff2f0d | ||
| 53a7d25923 | |||
|
|
c701e7e98e | ||
|
|
bf8e097756 | ||
|
|
837a2bbdde | ||
|
|
6fb361a965 | ||
| 1db2cba81d | |||
| ce43a67cbd | |||
| 7ac8f056ed | |||
| d157e96aac | |||
| 1d1e3e9527 | |||
|
|
10d472202d | ||
|
|
f99bb637b9 | ||
|
|
c55a95fc98 | ||
|
|
7d9746003b | ||
|
|
7d2e352f6a | ||
| 48d37e6b45 | |||
| 5d03f20831 | |||
| 9e72edb544 | |||
|
|
5c03f8ba79 | ||
|
|
1eeac6da2f | ||
|
|
d4781bca28 | ||
|
|
32ff3b2ed9 | ||
|
|
25681eca4c | ||
|
|
dcee015f71 | ||
|
|
fddd65ccb1 | ||
|
|
7f9fefc2a4 | ||
| 4476c71f62 | |||
| e9471b3072 | |||
|
|
bf7a1605c6 | ||
|
|
0fbfc74182 | ||
|
|
b34aa594c8 | ||
|
|
3124d972bf | ||
|
|
49889d8549 | ||
|
|
a4bdee82c3 | ||
|
|
4160610885 | ||
|
|
19146a597b | ||
|
|
4eb8ea33ea | ||
|
|
1e425159ed | ||
|
|
9259e40483 | ||
|
|
b8f0fd4cdb | ||
|
|
b248023eb2 | ||
|
|
92374b2be2 | ||
|
|
579fc9d0c7 | ||
|
|
cd47bbf99b | ||
|
|
d3d40689c8 | ||
|
|
d5eb055bb7 | ||
|
|
97b29129af | ||
|
|
801710b8c7 | ||
|
|
30f5c3b301 | ||
|
|
69d4c238e7 | ||
|
|
7d1ff1411f | ||
|
|
f0e143b907 | ||
|
|
545550dd9a | ||
|
|
eb060e7fcd | ||
| 4082cb27c3 | |||
| 88cdffddb6 | |||
|
|
786c4c2ca2 | ||
|
|
48eb4ff4ac | ||
|
|
6c914d19c3 | ||
|
|
d6f8e9038c | ||
|
|
5917990908 | ||
|
|
eeb198db15 | ||
|
|
1fec685eed | ||
|
|
0bfe0eda0c | ||
|
|
6188d3fdaf | ||
|
|
cd07888149 | ||
|
|
745d2755f9 | ||
|
|
688bc3247c | ||
|
|
f0d814d5c7 | ||
|
|
005580556c | ||
|
|
591e1f22dd | ||
|
|
75a3442669 | ||
|
|
c3cb72a2ca | ||
|
|
d41b3979fb | ||
|
|
a6f85ffd1a | ||
|
|
c56311424c | ||
|
|
7ba12f600c | ||
|
|
808cf80579 | ||
|
|
dd1b65f32c | ||
|
|
1f4e812223 | ||
|
|
ee39b05839 | ||
|
|
9ff6c4bb36 | ||
|
|
ab281f0f53 | ||
|
|
f89ef1f12f | ||
|
|
290f2d7e7d | ||
|
|
88d34c2d38 | ||
|
|
b2fb83179a | ||
|
|
04dd52c79a | ||
|
|
2f2c023a51 | ||
|
|
0f88c67473 | ||
|
|
4eeb205374 | ||
|
|
4c192e7bba | ||
|
|
96f9f355c9 | ||
| 36a8b51d8e | |||
|
|
055223dbe4 | ||
|
|
799e72b1e3 | ||
|
|
b2750bbe93 | ||
|
|
b0cd3518e4 | ||
|
|
4b848ef344 | ||
|
|
9142eca878 | ||
|
|
e923790c41 | ||
|
|
c7e42fab3c | ||
|
|
2f28ce94f4 | ||
|
|
732f8b19be | ||
|
|
b03e2f376b | ||
|
|
59c68807b6 | ||
|
|
a09b1c8569 | ||
|
|
2e7ed02a60 | ||
|
|
089954aaab | ||
|
|
34e0b2f305 | ||
|
|
ceb13797a6 | ||
|
|
084557bd3e | ||
|
|
aeed7cfbdd | ||
|
|
183c3b2a3e | ||
|
|
cf2fef2405 | ||
|
|
298c8706ec | ||
|
|
a9934792a0 | ||
|
|
bc595e3a70 | ||
|
|
5149627242 | ||
|
|
5d5e552a7e | ||
|
|
fd5edce919 | ||
|
|
8709fbb63f | ||
|
|
18a632b0e9 | ||
|
|
6d625f36e3 | ||
|
|
49de2ec498 | ||
|
|
e0015ef5f3 | ||
|
|
0aa6e9603b | ||
|
|
65e7a3e3ef | ||
|
|
958af54895 | ||
|
|
44ed397517 | ||
|
|
ce4fb6085f | ||
|
|
cd32a7cb1e | ||
|
|
f1cbe93b6c | ||
|
|
314e09d8ca | ||
|
|
076175386f | ||
|
|
f40d379485 | ||
|
|
445cbb8221 | ||
|
|
a9c8d8d5d3 | ||
|
|
17efb0b82c | ||
|
|
54efe4b7cd | ||
|
|
1ff64f72a9 | ||
|
|
199979a44c | ||
|
|
f10d0d95b0 | ||
|
|
dfbda1394d | ||
|
|
d05d8807ec | ||
|
|
582a9dbef5 | ||
|
|
b655662131 | ||
|
|
be061e1084 | ||
|
|
379ea6e586 | ||
|
|
c6670e756e | ||
|
|
0d8fb0a895 | ||
|
|
9edb9c2050 | ||
|
|
aa7c2a647c | ||
|
|
6e41f2911b | ||
|
|
91c18c32d4 | ||
|
|
3790ce4452 | ||
|
|
566ab038d2 | ||
|
|
648589e6ab | ||
|
|
841effe9ee | ||
|
|
a9727fd5cb | ||
|
|
fde0485d6b | ||
|
|
db2cd68ce3 | ||
|
|
1492baace9 | ||
|
|
cbf917e833 | ||
|
|
85d1982890 | ||
|
|
45cf2ea5ce | ||
|
|
a95635a018 | ||
|
|
9df39475cd | ||
|
|
bdf01e7a67 | ||
|
|
0dd5f863ef | ||
|
|
38339b6ccf | ||
|
|
2aecf3142a | ||
|
|
ad44c7a501 | ||
| b27d1416b5 | |||
| ab97b5fe54 | |||
| bbaa207603 | |||
|
|
605937bbac | ||
|
|
1687757752 | ||
|
|
594fcb9a0d | ||
|
|
1533a4f13f | ||
|
|
a1aeb23314 | ||
|
|
933e276e1a | ||
|
|
e033c0cfb2 | ||
|
|
53ebbab941 | ||
|
|
7f02f8a386 | ||
|
|
cb3fb18f40 | ||
|
|
062c75a078 | ||
|
|
1d6fcd46d6 | ||
|
|
5040af322d | ||
|
|
6f44f64afb | ||
|
|
24df056bcb | ||
|
|
d3b2298bcb | ||
|
|
872009336e | ||
|
|
a8b2bc5c3b | ||
|
|
bac8851132 | ||
|
|
46fa31020e | ||
|
|
b2160bd618 | ||
|
|
5b7f896312 | ||
|
|
5009f288ae | ||
|
|
5f1b3a5419 | ||
|
|
25bb966cbc | ||
|
|
0f35d0c3f9 | ||
|
|
b4625a0c1f | ||
|
|
d38ede55c5 | ||
|
|
809fb88fa2 | ||
|
|
33c3b1c89a | ||
|
|
017d561b8d | ||
|
|
eb817ba056 | ||
|
|
18402f0354 | ||
|
|
02a24a144d | ||
|
|
0cf38bfb29 | ||
|
|
9e7fc1915b | ||
|
|
eaee851a2d | ||
|
|
a9034bb586 | ||
|
|
e13b01208b | ||
|
|
048689d6db | ||
|
|
23cac3c1a8 | ||
|
|
8b9c313941 | ||
|
|
3871f89dcd | ||
|
|
227a749105 | ||
|
|
f9820577c1 | ||
|
|
fdacb6b92e | ||
|
|
5361888997 | ||
|
|
cc4d888ae8 | ||
|
|
e6914f3b80 | ||
|
|
41f1b0ffb5 | ||
|
|
d82d3d3679 | ||
| e48cdb48ac | |||
|
|
3944b32e04 | ||
|
|
a0667a122b | ||
|
|
f2b4c412d3 | ||
|
|
8250339e0d | ||
|
|
803593560d | ||
|
|
bfae080af4 | ||
|
|
6ae3f56560 | ||
|
|
4844fbbd82 | ||
|
|
983937a52f | ||
|
|
90c0f5c48d | ||
|
|
d82529058a | ||
|
|
8668cc1267 | ||
|
|
3465c0c8b0 | ||
|
|
b5be8b2eaf | ||
|
|
97bf9171c6 | ||
|
|
c54237e34a | ||
|
|
bf533ac195 | ||
|
|
6dba2ec1d7 | ||
|
|
819b0de65b | ||
|
|
6867f97346 | ||
|
|
754eb73334 | ||
|
|
8075b3c316 | ||
|
|
1d9e9ff4f7 | ||
|
|
eb8ca22704 | ||
|
|
6feb1c788d | ||
|
|
6e0706a312 | ||
|
|
45bbe274e9 | ||
|
|
2bcaa5448c | ||
|
|
66f2a509db | ||
|
|
538f532184 | ||
|
|
bfd289e85f | ||
|
|
a5bae49dab | ||
|
|
7a612f9524 | ||
|
|
55ec813908 | ||
|
|
0db8f8ca1b | ||
|
|
e6810a4224 | ||
|
|
7b6e48f4e0 | ||
|
|
f0bf61b4cb | ||
|
|
db6e7c7a22 | ||
|
|
5064931aa6 | ||
| 86adc529ef | |||
|
|
dbd6f7e807 | ||
|
|
d0c4cc0cec | ||
|
|
65ef6e9d59 | ||
|
|
8dc131dc4c | ||
|
|
54cd7e7ba1 | ||
|
|
cbe6173417 | ||
|
|
468f965dc2 | ||
|
|
8f358f4dd8 | ||
|
|
05e0381b19 | ||
|
|
06728e0e0b | ||
|
|
3b20e71da5 | ||
|
|
81df1b2892 | ||
|
|
aad8a96b0d | ||
|
|
83d2941405 | ||
|
|
b62ab817c6 | ||
|
|
70ea8d5476 | ||
|
|
5dc7995477 | ||
|
|
cb0d8d1297 | ||
|
|
71278477bc | ||
|
|
e7715ba7b4 | ||
|
|
f64f84744e | ||
|
|
d97a12f095 | ||
|
|
475963453c | ||
|
|
f5a442c0de | ||
|
|
df519ce1a2 | ||
|
|
189060c14f | ||
|
|
feb938fae2 | ||
|
|
e068191684 | ||
|
|
33f2d8c4aa | ||
|
|
60a092fa50 | ||
|
|
24f08460bb | ||
|
|
247fea0fa9 | ||
|
|
8a9637568e | ||
|
|
87229fdef0 | ||
|
|
b0418e5274 | ||
|
|
2e89a60c2d | ||
|
|
09ec3af337 | ||
|
|
70e9d46d75 | ||
|
|
4c99a94453 | ||
|
|
5407a25775 | ||
|
|
6eaef18347 | ||
|
|
f6d8a1ab6c | ||
|
|
3450c9d442 | ||
|
|
a7cb9524c2 | ||
|
|
90ef40e62b | ||
|
|
1290ab7c6c | ||
|
|
45c7039a45 | ||
|
|
b1b51cc70e | ||
|
|
7e1d165092 | ||
|
|
7893445a2e | ||
|
|
465ab44606 | ||
|
|
23450fcfc8 | ||
|
|
37ed77006c | ||
|
|
578608b1c7 | ||
|
|
1d18aa3e6c | ||
|
|
a85967caea | ||
|
|
3c0d4ccf49 | ||
|
|
218459f454 | ||
|
|
13234afc40 | ||
|
|
156b137af0 | ||
|
|
fab9c52858 | ||
|
|
019c20476a | ||
|
|
f3d63da77b | ||
|
|
a50b850ebd | ||
|
|
6767bcd31e | ||
|
|
81550ac4d3 | ||
| d2d8674cb9 | |||
| 6f193242e0 | |||
| 39e8ccdef4 | |||
| eb8992a750 | |||
| 62fb49f93b | |||
| a5c9db8c8e | |||
| 04e752c83a | |||
| a16ce877e7 | |||
| 15f28f1183 | |||
| 9c18ce007a | |||
| 765af2efea | |||
| 059c385286 | |||
| feb1f9b0df | |||
| 9d9840ad1e | |||
| af73e4cf65 | |||
| ad861a0617 | |||
| 1b88e834d6 | |||
| e000ea4913 | |||
| 06f1a8ec23 | |||
| cf2658be53 | |||
| 74a403090b | |||
| dc123a0a37 | |||
|
|
a4e5b9c528 | ||
|
|
b43aafae70 | ||
|
|
905ca4b7ac | ||
|
|
7acd7c6145 | ||
|
|
05c93e954f | ||
|
|
bef9a08f6d | ||
|
|
3e7ad9a86f | ||
|
|
76b9461ee8 | ||
|
|
7eee262486 | ||
|
|
a10379327c | ||
|
|
b37bfe3ed0 | ||
|
|
41d86ecd7a | ||
|
|
961dd2bc5d | ||
|
|
6d8bf7c8ef | ||
|
|
98e5367126 | ||
|
|
8734863f69 | ||
| 3a774d37f8 | |||
| 5f6b1e2b16 | |||
| 584caf54b2 | |||
| d602c1cdcb | |||
| 12ce14b6e5 | |||
| e02709b3a4 | |||
| b19709039d | |||
| 3c4ffbf267 | |||
| 4942da0c88 | |||
| 5f547257ac | |||
| 1b99366887 | |||
| 871af36ac5 | |||
| 0ad6d2aec9 | |||
| 8837d2f275 | |||
| 09a17127a9 | |||
| 3699c5bc4c | |||
| 157b0867fa | |||
| 56529964f3 | |||
| c28e240fce | |||
| b04b2dab22 | |||
| 8edcd7b07f | |||
| ca78451122 | |||
| 4cc44e3dce | |||
| e81d3a1d7d | |||
| 53dd61b80a | |||
| 5b754d320f | |||
| 2be2658cfc | |||
| 2b157096e6 | |||
| 71eaddfd84 | |||
| 5589deb3ad | |||
| 0bb80e373b | |||
| 4acdd83984 | |||
| d12d38f970 | |||
| 74d9749255 | |||
| 3276ada78a | |||
| de378eec34 | |||
| dbb2d875fb | |||
| c7f966a1f5 | |||
| 7889dda6f8 | |||
| a2ccf3b631 | |||
| 57db34b303 | |||
| 4f790758af | |||
| ce9dfc6bb4 | |||
| 4f40ad1927 | |||
| a42a4010d6 | |||
| a2aa17fafc | |||
| 5bf2784db2 | |||
| 7a4e7b7600 | |||
| 70aa23513f | |||
| 71ded2f25f | |||
| 11103351b2 | |||
| 146a413977 | |||
| 4e44550f62 | |||
| 9952470486 | |||
| 02d30dedbc | |||
| 5ed0fe52a0 | |||
| 42b1f774da | |||
| 7738b68320 | |||
| 1199fabe90 | |||
| 1aefc5f2f0 | |||
| 6f666c6c22 |
@@ -1,11 +1,18 @@
|
||||
# AppVeyor configuration for EPICS Base
|
||||
|
||||
# Ralph Lange <ralph.lange@gmx.de>
|
||||
# Copyright (c) 2016-2017 ITER Organization
|
||||
# .appveyor.yml for use with EPICS Base ci-scripts
|
||||
# (see: https://github.com/epics-base/ci-scripts)
|
||||
|
||||
# Version format
|
||||
version: base-{branch}-{build}
|
||||
|
||||
#---------------------------------#
|
||||
# build cache #
|
||||
#---------------------------------#
|
||||
# The AppVeyor cache allowance is way too small (1GB per account across all projects, branches and jobs)
|
||||
# to be used for the dependency builds.
|
||||
|
||||
cache:
|
||||
- C:\Users\appveyor\.tools
|
||||
|
||||
#---------------------------------#
|
||||
# repository cloning #
|
||||
#---------------------------------#
|
||||
@@ -16,20 +23,22 @@ init:
|
||||
- git config --global core.autocrlf true
|
||||
|
||||
# Set clone depth (do not fetch complete history)
|
||||
clone_depth: 50
|
||||
clone_depth: 5
|
||||
|
||||
# Skipping commits affecting only specific files
|
||||
skip_commits:
|
||||
files:
|
||||
- 'documentation/*'
|
||||
- 'templates/*'
|
||||
- '**/*.html'
|
||||
- '**/*.md'
|
||||
- '.travis.yml'
|
||||
|
||||
#---------------------------------#
|
||||
# build matrix configuration #
|
||||
#---------------------------------#
|
||||
|
||||
image: Visual Studio 2015
|
||||
|
||||
# Build Configurations: dll/static, regular/debug
|
||||
configuration:
|
||||
- dynamic
|
||||
@@ -37,45 +46,45 @@ configuration:
|
||||
- dynamic-debug
|
||||
- static-debug
|
||||
|
||||
# Environment variables: compiler toolchain
|
||||
# Environment variables: compiler toolchain, base version, setup file, ...
|
||||
environment:
|
||||
matrix:
|
||||
- TOOLCHAIN: mingw
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
TOOLCHAIN: 2019
|
||||
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
TOOLCHAIN: 2017
|
||||
- TOOLCHAIN: 14.0
|
||||
- TOOLCHAIN: 12.0
|
||||
- TOOLCHAIN: 11.0
|
||||
- TOOLCHAIN: 10.0
|
||||
# common / default variables for all jobs
|
||||
SETUP_PATH: .ci-local:.ci
|
||||
BASE: SELF
|
||||
EPICS_TEST_IMPRECISE_TIMING: YES
|
||||
|
||||
# Platform: architecture
|
||||
matrix:
|
||||
- CMP: vs2019
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
- CMP: vs2017
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
- CMP: vs2015
|
||||
- CMP: vs2013
|
||||
- CMP: vs2012
|
||||
- CMP: vs2010
|
||||
- CMP: gcc
|
||||
|
||||
# Platform: processor architecture
|
||||
platform:
|
||||
- x86
|
||||
- x64
|
||||
|
||||
# Matrix configuration: allow specific failing jobs
|
||||
# Matrix configuration: exclude sets of jobs
|
||||
matrix:
|
||||
exclude:
|
||||
# VS Express installs don't have the 64 bit compiler
|
||||
# VS2012 and older installs don't have the 64 bit compiler
|
||||
- platform: x64
|
||||
TOOLCHAIN: 10.0
|
||||
# Exclude to reduce total job runtime
|
||||
# skip 64-bit for older and 32-bit for newer
|
||||
CMP: vs2012
|
||||
- platform: x64
|
||||
TOOLCHAIN: 11.0
|
||||
CMP: vs2010
|
||||
- platform: x64
|
||||
CMP: vs2008
|
||||
# Exclude more jobs to reduce build time
|
||||
# Skip 32-bit for "middle-aged" compilers
|
||||
- platform: x86
|
||||
TOOLCHAIN: mingw
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
|
||||
CMP: vs2017
|
||||
- platform: x86
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
TOOLCHAIN: 2019
|
||||
- platform: x86
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
TOOLCHAIN: 2017
|
||||
|
||||
CMP: vs2015
|
||||
|
||||
#---------------------------------#
|
||||
# building & testing #
|
||||
@@ -83,18 +92,17 @@ matrix:
|
||||
|
||||
install:
|
||||
- cmd: git submodule update --init --recursive
|
||||
- cmd: .ci/appveyor-prepare.bat
|
||||
- cmd: python .ci/cue.py prepare
|
||||
|
||||
build_script:
|
||||
- cmd: .ci/appveyor-make.bat
|
||||
- cmd: python .ci/cue.py build
|
||||
|
||||
test_script:
|
||||
- cmd: .ci/appveyor-make.bat tapfiles
|
||||
- cmd: .ci/appveyor-make.bat test-results
|
||||
- cmd: python .ci/cue.py test
|
||||
|
||||
on_finish:
|
||||
- ps: Get-ChildItem *.tap -Recurse -Force | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
|
||||
|
||||
- cmd: python .ci/cue.py build test-results -s
|
||||
|
||||
#---------------------------------#
|
||||
# debugging #
|
||||
@@ -104,10 +112,13 @@ on_finish:
|
||||
## note that you will need to connect within the usual build timeout limit (60 minutes)
|
||||
## so you may want to adjust the build matrix above to just build the one of interest
|
||||
|
||||
#on_failure:
|
||||
# print the connection info
|
||||
#init:
|
||||
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||
|
||||
# block a failed build (until the watchdog barks)
|
||||
#on_failure:
|
||||
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
|
||||
|
||||
#---------------------------------#
|
||||
# notifications #
|
||||
|
||||
1
.ci
Submodule
1
.ci
Submodule
Submodule .ci added at 87942a7c29
19
.ci-local/travis-fixup.sh
Executable file
19
.ci-local/travis-fixup.sh
Executable file
@@ -0,0 +1,19 @@
|
||||
#!/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
|
||||
@@ -1,132 +0,0 @@
|
||||
:: Universal build script for AppVeyor (https://ci.appveyor.com/)
|
||||
:: Environment:
|
||||
:: TOOLCHAIN - toolchain version [10.0/11.0/12.0/14.0/2017/2019/mingw]
|
||||
:: CONFIGURATION - determines EPICS build [dynamic/static]
|
||||
:: PLATFORM - architecture [x86/x64]
|
||||
::
|
||||
:: All command line args are passed to make
|
||||
|
||||
Setlocal EnableDelayedExpansion
|
||||
|
||||
:: we do not currently have a combined static and debug EPICS_HOST_ARCH target
|
||||
:: So a combined debug and static target will appear to be just static
|
||||
:: but debug will have been specified in CONFIG_SITE by appveyor-prepare.bat
|
||||
set "ST="
|
||||
echo.%CONFIGURATION% | findstr /C:"debug">nul && (
|
||||
set "ST=-debug"
|
||||
)
|
||||
echo.%CONFIGURATION% | findstr /C:"static">nul && (
|
||||
set "ST=-static"
|
||||
)
|
||||
|
||||
set MY_OS=64BIT
|
||||
if "%PLATFORM%"=="x86" set MY_OS=32BIT
|
||||
|
||||
echo [INFO] Platform: %MY_OS%
|
||||
|
||||
:: Use parallel make, except for 3.14
|
||||
set "MAKEARGS=-j2 -Otarget"
|
||||
if "%APPVEYOR_REPO_BRANCH%"=="3.14" set MAKEARGS=
|
||||
|
||||
if "%TOOLCHAIN%"=="mingw" (
|
||||
set "MAKE=mingw32-make"
|
||||
if "%MY_OS%"=="64BIT" (
|
||||
set "EPICS_HOST_ARCH=windows-x64-mingw"
|
||||
set "INCLUDE=C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\include;%INCLUDE%"
|
||||
set "PATH=C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin;%PATH%"
|
||||
echo [INFO] MinGW Toolchain 64bit
|
||||
) else (
|
||||
set "EPICS_HOST_ARCH=win32-x86-mingw"
|
||||
set "INCLUDE=C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\include;%INCLUDE%"
|
||||
set "PATH=C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\bin;%PATH%"
|
||||
echo [INFO] MinGW Toolchain 32bit
|
||||
)
|
||||
echo [INFO] Compiler Version
|
||||
gcc -v
|
||||
goto Finish
|
||||
)
|
||||
|
||||
if "%TOOLCHAIN%"=="2019" (
|
||||
echo [INFO] Setting strawberry perl path
|
||||
set "PATH=c:\strawberry\perl\site\bin;C:\strawberry\perl\bin;%PATH%"
|
||||
)
|
||||
|
||||
set "VSINSTALL=C:\Program Files (x86)\Microsoft Visual Studio %TOOLCHAIN%"
|
||||
if not exist "%VSINSTALL%\" set "VSINSTALL=C:\Program Files (x86)\Microsoft Visual Studio\%TOOLCHAIN%\Community"
|
||||
if not exist "%VSINSTALL%\" goto MSMissing
|
||||
|
||||
set "MAKE=C:\tools\make"
|
||||
|
||||
echo [INFO] APPVEYOR_BUILD_WORKER_IMAGE=%APPVEYOR_BUILD_WORKER_IMAGE%
|
||||
|
||||
if "%MY_OS%"=="64BIT" (
|
||||
set EPICS_HOST_ARCH=windows-x64%ST%
|
||||
:: VS 2017/2019
|
||||
if exist "%VSINSTALL%\VC\Auxiliary\Build\vcvars64.bat" (
|
||||
call "%VSINSTALL%\VC\Auxiliary\Build\vcvars64.bat"
|
||||
where cl
|
||||
if !ERRORLEVEL! NEQ 0 goto MSMissing
|
||||
goto MSFound
|
||||
)
|
||||
if exist "%VSINSTALL%\VC\vcvarsall.bat" (
|
||||
call "%VSINSTALL%\VC\vcvarsall.bat" amd64
|
||||
where cl
|
||||
if !ERRORLEVEL! NEQ 0 (
|
||||
call "%VSINSTALL%\VC\vcvarsall.bat" x86_amd64
|
||||
where cl
|
||||
if !ERRORLEVEL! NEQ 0 goto MSMissing
|
||||
)
|
||||
goto MSFound
|
||||
)
|
||||
if exist "%VSINSTALL%\VC\bin\amd64\vcvars64.bat" (
|
||||
call "%VSINSTALL%\VC\bin\amd64\vcvars64.bat"
|
||||
where cl
|
||||
if !ERRORLEVEL! NEQ 0 goto MSMissing
|
||||
goto MSFound
|
||||
)
|
||||
) else (
|
||||
set EPICS_HOST_ARCH=win32-x86%ST%
|
||||
:: VS 2017/2019
|
||||
if exist "%VSINSTALL%\VC\Auxiliary\Build\vcvars32.bat" (
|
||||
call "%VSINSTALL%\VC\Auxiliary\Build\vcvars32.bat"
|
||||
where cl
|
||||
if !ERRORLEVEL! NEQ 0 goto MSMissing
|
||||
goto MSFound
|
||||
)
|
||||
if exist "%VSINSTALL%\VC\vcvarsall.bat" (
|
||||
call "%VSINSTALL%\VC\vcvarsall.bat" x86
|
||||
where cl
|
||||
if !ERRORLEVEL! NEQ 0 goto MSMissing
|
||||
goto MSFound
|
||||
)
|
||||
if exist "%VSINSTALL%\VC\bin\vcvars32.bat" (
|
||||
call "%VSINSTALL%\VC\bin\vcvars32.bat"
|
||||
where cl
|
||||
if !ERRORLEVEL! NEQ 0 goto MSMissing
|
||||
goto MSFound
|
||||
)
|
||||
if exist "%VSINSTALL%\Common7\Tools\vsvars32.bat" (
|
||||
call "%VSINSTALL%\Common7\Tools\vsvars32.bat"
|
||||
where cl
|
||||
if !ERRORLEVEL! NEQ 0 goto MSMissing
|
||||
goto MSFound
|
||||
)
|
||||
)
|
||||
|
||||
:MSMissing
|
||||
echo [INFO] Installation for MSVC Toolchain %TOOLCHAIN% / %MY_OS% seems to be missing
|
||||
exit 1
|
||||
|
||||
:MSFound
|
||||
echo [INFO] Microsoft Visual Studio Toolchain %TOOLCHAIN%
|
||||
echo [INFO] Compiler Version
|
||||
cl
|
||||
|
||||
:Finish
|
||||
echo [INFO] EPICS_HOST_ARCH: %EPICS_HOST_ARCH%
|
||||
echo [INFO] Make version
|
||||
%MAKE% --version
|
||||
echo [INFO] Perl version
|
||||
perl --version
|
||||
|
||||
%MAKE% %MAKEARGS% %*
|
||||
@@ -1,52 +0,0 @@
|
||||
:: Build script for AppVeyor (https://ci.appveyor.com/)
|
||||
:: Environment:
|
||||
:: TOOLCHAIN - Toolchain Version [9.0/10.0/11.0/12.0/14.0/mingw]
|
||||
:: CONFIGURATION - determines EPICS build [dynamic/static, -debug]
|
||||
:: PLATFORM - "x86" -> use 32bit architecture
|
||||
::
|
||||
:: Prepares an Appveyor build by excuting the following steps
|
||||
:: - Set up configure\CONFIG_SITE for static vs. dynamic build
|
||||
:: - Install Mingw (TOOLCHAIN setting) in the in the appropriate flavor
|
||||
:: - Download and install Make-4.1 from EPICS download page
|
||||
|
||||
Setlocal EnableDelayedExpansion
|
||||
|
||||
set MY_OS=64BIT
|
||||
if "%PLATFORM%"=="x86" set MY_OS=32BIT
|
||||
|
||||
echo [INFO] Platform: %MY_OS%
|
||||
|
||||
:: with MSVC either static or debug can be handled as part
|
||||
:: of EPICS_HOST_ARCH but not both. So we set the appropriate
|
||||
:: options in CONFIG_SITE. For mingw and cygwin they are missing
|
||||
:: some static and debug targets so set things here too
|
||||
echo.%CONFIGURATION% | findstr /C:"static">nul && (
|
||||
echo SHARED_LIBRARIES=NO>> configure\CONFIG_SITE
|
||||
echo STATIC_BUILD=YES>> configure\CONFIG_SITE
|
||||
echo [INFO] EPICS set up for static build
|
||||
) || (
|
||||
echo [INFO] EPICS set up for dynamic build
|
||||
)
|
||||
|
||||
echo.%CONFIGURATION% | findstr /C:"debug">nul && (
|
||||
echo HOST_OPT=NO>> configure\CONFIG_SITE
|
||||
echo [INFO] EPICS set up for debug build
|
||||
) || (
|
||||
echo [INFO] EPICS set up for optimized build
|
||||
)
|
||||
|
||||
echo [INFO] Installing Make 4.2.1 from ANL web site
|
||||
curl -fsS --retry 3 -o C:\tools\make-4.2.1.zip https://epics.anl.gov/download/tools/make-4.2.1-win64.zip
|
||||
cd \tools
|
||||
"C:\Program Files\7-Zip\7z" e make-4.2.1.zip
|
||||
|
||||
set "PERLVER=5.30.0.1"
|
||||
if "%TOOLCHAIN%"=="2019" (
|
||||
echo [INFO] Installing Strawberry Perl %PERLVER%
|
||||
curl -fsS --retry 3 -o C:\tools\perl-%PERLVER%.zip http://strawberryperl.com/download/%PERLVER%/strawberry-perl-%PERLVER%-64bit.zip
|
||||
cd \tools
|
||||
"C:\Program Files\7-Zip\7z" x perl-%PERLVER%.zip -oC:\strawberry
|
||||
cd \strawberry
|
||||
:: we set PATH in appveyor-build.bat
|
||||
call relocation.pl.bat
|
||||
)
|
||||
@@ -1,8 +0,0 @@
|
||||
#!/bin/sh
|
||||
#
|
||||
# Checkout submodules on their appropriate branches
|
||||
#
|
||||
|
||||
git submodule foreach '\
|
||||
git checkout `git config -f $toplevel/.gitmodules submodule.$name.branch` && \
|
||||
git pull '
|
||||
@@ -1,77 +0,0 @@
|
||||
#!/bin/sh
|
||||
set -e -x
|
||||
|
||||
die() {
|
||||
echo "$1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
CACHEKEY=1
|
||||
|
||||
export EPICS_HOST_ARCH=`perl src/tools/EpicsHostArch.pl`
|
||||
|
||||
[ -e configure/os/CONFIG_SITE.Common.linux-x86 ] || die "Wrong location: $PWD"
|
||||
|
||||
case "$CMPLR" in
|
||||
clang)
|
||||
echo "Host compiler is clang"
|
||||
cat << EOF >> configure/os/CONFIG_SITE.Common.$EPICS_HOST_ARCH
|
||||
GNU = NO
|
||||
CMPLR_CLASS = clang
|
||||
CC = clang
|
||||
CCC = clang++
|
||||
EOF
|
||||
;;
|
||||
*) echo "Host compiler is default";;
|
||||
esac
|
||||
|
||||
if [ "$STATIC" = "YES" ]
|
||||
then
|
||||
echo "Build static libraries/executables"
|
||||
cat << EOF >> configure/CONFIG_SITE
|
||||
SHARED_LIBRARIES=NO
|
||||
STATIC_BUILD=YES
|
||||
EOF
|
||||
fi
|
||||
|
||||
# requires wine and g++-mingw-w64-i686
|
||||
if [ "$WINE" = "32" ]
|
||||
then
|
||||
echo "Cross mingw32"
|
||||
sed -i -e '/CMPLR_PREFIX/d' configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw
|
||||
cat << EOF >> configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw
|
||||
CMPLR_PREFIX=i686-w64-mingw32-
|
||||
EOF
|
||||
cat << EOF >> configure/CONFIG_SITE
|
||||
CROSS_COMPILER_TARGET_ARCHS+=win32-x86-mingw
|
||||
EOF
|
||||
fi
|
||||
|
||||
# set RTEMS to eg. "4.9" or "4.10"
|
||||
if [ -n "$RTEMS" ]
|
||||
then
|
||||
echo "Cross RTEMS${RTEMS} for pc386"
|
||||
curl -L "https://github.com/mdavidsaver/rsb/releases/download/20171203-${RTEMS}/i386-rtems${RTEMS}-trusty-20171203-${RTEMS}.tar.bz2" \
|
||||
| tar -C / -xmj
|
||||
|
||||
sed -i -e '/^RTEMS_VERSION/d' -e '/^RTEMS_BASE/d' configure/os/CONFIG_SITE.Common.RTEMS
|
||||
cat << EOF >> configure/os/CONFIG_SITE.Common.RTEMS
|
||||
RTEMS_VERSION=$RTEMS
|
||||
RTEMS_BASE=$HOME/.rtems
|
||||
EOF
|
||||
cat << EOF >> configure/CONFIG_SITE
|
||||
CROSS_COMPILER_TARGET_ARCHS += RTEMS-pc386-qemu
|
||||
EOF
|
||||
|
||||
# find local qemu-system-i386
|
||||
echo -n "Using QEMU: "
|
||||
type qemu-system-i386 || echo "Missing qemu"
|
||||
fi
|
||||
|
||||
make -j2 $EXTRA
|
||||
|
||||
if [ "$TEST" != "NO" ]
|
||||
then
|
||||
make -j2 tapfiles
|
||||
make -s test-results
|
||||
fi
|
||||
7
.gitmodules
vendored
7
.gitmodules
vendored
@@ -22,3 +22,10 @@
|
||||
path = modules/pva2pva
|
||||
url = https://github.com/epics-base/pva2pva
|
||||
branch = master
|
||||
[submodule ".ci"]
|
||||
path = .ci
|
||||
url = https://github.com/epics-base/ci-scripts
|
||||
branch = master
|
||||
[submodule "modules/pcas"]
|
||||
path = modules/pcas
|
||||
url = https://github.com/epics-modules/pcas
|
||||
|
||||
@@ -1,22 +1,26 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
#
|
||||
# Make tar for git repo w/ one level of sub modules.
|
||||
#
|
||||
set -e
|
||||
set -e -u
|
||||
|
||||
die() {
|
||||
echo "$1" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
TOPREV="$1"
|
||||
FINALTAR="$2"
|
||||
PREFIX="$3"
|
||||
maybedie() {
|
||||
if [ "$DEVMODE" ]; then
|
||||
echo "Warning: $1" >&2
|
||||
else
|
||||
echo "Error: $1" >&2
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
if ! [ "$TOPREV" ]
|
||||
then
|
||||
usage() {
|
||||
cat <<EOF >&2
|
||||
usage: $0 <rev> [<outfile> [<prefix>]]
|
||||
usage: $0 [-v] [-s] <rev> [<outfile> [<prefix>]]
|
||||
|
||||
<rev> may be any git revision spec. (tag, branch, or commit id).
|
||||
|
||||
@@ -24,9 +28,33 @@ usage: $0 <rev> [<outfile> [<prefix>]]
|
||||
If <outfile> is omitted, "base-<rev>.tar.gz" will be used.
|
||||
If provided, <prefix> must end with "/". If <prefix> is omitted,
|
||||
the default is "base-<rev>/".
|
||||
|
||||
Options:
|
||||
|
||||
-v Enable verbose prints
|
||||
-d Enable permissive developer mode
|
||||
EOF
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
export DEVMODE=
|
||||
|
||||
while getopts "vd" OPT
|
||||
do
|
||||
case "$OPT" in
|
||||
v) set -x;;
|
||||
d) DEVMODE=1;;
|
||||
?) echo "Unknown option"
|
||||
usage;;
|
||||
esac
|
||||
done
|
||||
shift $(($OPTIND - 1))
|
||||
|
||||
TOPREV="$1"
|
||||
FINALTAR="$2"
|
||||
PREFIX="${3:-}"
|
||||
|
||||
[ "$TOPREV" ] || usage
|
||||
|
||||
case "$FINALTAR" in
|
||||
"")
|
||||
@@ -59,16 +87,13 @@ case "$PREFIX" in
|
||||
esac
|
||||
|
||||
# Check for both <tag> and R<tag>
|
||||
if [ "$TOPREV" = "HEAD" ]
|
||||
then
|
||||
true
|
||||
elif ! [ `git tag -l $TOPREV` ]
|
||||
if ! [ `git tag -l $TOPREV` ]
|
||||
then
|
||||
if [ `git tag -l R$TOPREV` ]
|
||||
then
|
||||
TOPREV="R$TOPREV"
|
||||
else
|
||||
die "No tags exist '$TOPREV' or 'R$TOPREV'"
|
||||
maybedie "No tags exist '$TOPREV' or 'R$TOPREV'"
|
||||
fi
|
||||
fi
|
||||
|
||||
@@ -89,11 +114,17 @@ git archive --prefix=$PREFIX $TOPREV | tar -C "$TDIR"/tar -x
|
||||
#
|
||||
# sub-modules appear in tree as eg.:
|
||||
# 160000 commit c3a6cfcf0dad4a4eeecf59b474710d06ff3eb68a modules/ca
|
||||
git ls-tree -r $TOPREV | awk '/^[0-9]+ commit / {print $3, $4}' | \
|
||||
git ls-tree -r $TOPREV | \
|
||||
awk '/^[0-9]+ commit / && $4 != ".ci" {print $3, $4}' | \
|
||||
while read HASH MODDIR
|
||||
do
|
||||
echo "Visiting $HASH $MODDIR"
|
||||
git -C $MODDIR archive --prefix=${PREFIX}${MODDIR}/ $HASH | tar -C "$TDIR"/tar -x
|
||||
if [ -e $MODDIR/.git ]
|
||||
then
|
||||
git -C $MODDIR archive --prefix=${PREFIX}${MODDIR}/ $HASH | tar -C "$TDIR"/tar -x
|
||||
else
|
||||
maybedie " Submodule not checked out."
|
||||
fi
|
||||
done
|
||||
|
||||
# make a list of files copied and filter out undesirables
|
||||
@@ -105,13 +136,17 @@ sed -i -e 's|^\./||' "$TDIR"/list.1
|
||||
|
||||
# Exclude files
|
||||
sed \
|
||||
-e '/\/\.\?ci\//d' \
|
||||
-e '/\/\.ci\//d' \
|
||||
-e '/\/\.ci-local\//d' \
|
||||
-e '/\/\.tools\//d' \
|
||||
-e '/\/jenkins\//d' \
|
||||
-e '/\/\.git/d' \
|
||||
-e '/\/\.hgtags$/d' \
|
||||
-e '/\/\.cproject$/d' \
|
||||
-e '/\/\.project$/d' \
|
||||
-e '/\/\.travis\.yml$/d' \
|
||||
-e '/\/\.appveyor\.yml$/d' \
|
||||
-e '/\/\.readthedocs\.yml$/d' \
|
||||
"$TDIR"/list.1 > "$TDIR"/list.2
|
||||
|
||||
if ! diff -U 0 "$TDIR"/list.1 "$TDIR"/list.2
|
||||
@@ -129,5 +164,5 @@ tar -t $TAROPT -f "$FINALTAR" > "$TDIR"/list.3
|
||||
# make sure we haven't picked up anything extra
|
||||
if ! diff -u "$TDIR"/list.2 "$TDIR"/list.3
|
||||
then
|
||||
echo "Oops! Tarfile diff against plan shown above"
|
||||
die "Oops! Tarfile diff against plan shown above"
|
||||
fi
|
||||
|
||||
98
.travis.yml
98
.travis.yml
@@ -1,27 +1,91 @@
|
||||
sudo: false
|
||||
dist: trusty
|
||||
language: c
|
||||
compiler:
|
||||
- gcc
|
||||
# .travis.yml for use with EPICS Base ci-scripts
|
||||
# (see: https://github.com/epics-base/ci-scripts)
|
||||
|
||||
language: cpp
|
||||
compiler: gcc
|
||||
dist: xenial
|
||||
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/.cache
|
||||
|
||||
env:
|
||||
global:
|
||||
- SETUP_PATH=.ci-local:.ci
|
||||
- BASE=SELF
|
||||
- EPICS_TEST_IMPRECISE_TIMING=YES
|
||||
|
||||
addons:
|
||||
apt:
|
||||
packages:
|
||||
# for all EPICS builds
|
||||
- libreadline6-dev
|
||||
- libncurses5-dev
|
||||
- perl
|
||||
# for clang compiler
|
||||
- clang
|
||||
# for mingw builds (32bit and 64bit)
|
||||
- g++-mingw-w64-i686
|
||||
- g++-mingw-w64-x86-64
|
||||
# for RTEMS cross builds
|
||||
- qemu-system-x86
|
||||
homebrew:
|
||||
packages:
|
||||
# for all EPICS builds
|
||||
- bash
|
||||
update: true
|
||||
|
||||
install:
|
||||
- ./.ci-local/travis-fixup.sh
|
||||
- python .ci/cue.py prepare
|
||||
|
||||
script:
|
||||
- .ci/travis-build.sh
|
||||
env:
|
||||
- CMPLR=gcc EXTRA=LINKER_USE_RPATH=ORIGIN
|
||||
- CMPLR=clang
|
||||
- CMPLR=gcc STATIC=YES
|
||||
- CMPLR=clang STATIC=YES
|
||||
- CMPLR=gcc EXTRA=CMD_CXXFLAGS=-std=c++11
|
||||
- CMPLR=clang EXTRA=CMD_CXXFLAGS=-std=c++11
|
||||
- WINE=32 TEST=NO STATIC=YES
|
||||
- WINE=32 TEST=NO STATIC=NO
|
||||
- RTEMS=4.10 TEST=YES
|
||||
- RTEMS=4.9 TEST=YES
|
||||
- python .ci/cue.py build
|
||||
- python .ci/cue.py test
|
||||
- python .ci/cue.py test-results
|
||||
|
||||
# Define build jobs
|
||||
|
||||
jobs:
|
||||
include:
|
||||
|
||||
# Different configurations of default gcc and clang
|
||||
- dist: bionic
|
||||
|
||||
- dist: xenial
|
||||
|
||||
- dist: bionic
|
||||
env: BCFG=static EXTRA="CMD_CXXFLAGS=-std=c++11"
|
||||
|
||||
- dist: trusty
|
||||
env: EXTRA="CMD_CXXFLAGS=-std=c++11"
|
||||
|
||||
- dist: bionic
|
||||
compiler: clang
|
||||
|
||||
- compiler: clang
|
||||
|
||||
- dist: trusty
|
||||
compiler: clang
|
||||
env: BCFG=static
|
||||
|
||||
# Cross-compilations to Windows using MinGW and WINE
|
||||
|
||||
- env: WINE=32 TEST=NO BCFG=static
|
||||
|
||||
- env: WINE=32 TEST=NO
|
||||
|
||||
# Cross-compilation to RTEMS
|
||||
|
||||
- env: RTEMS=4.10
|
||||
|
||||
- env: RTEMS=4.9
|
||||
|
||||
# MacOS build
|
||||
|
||||
- os: osx
|
||||
env:
|
||||
- EXTRA="CMD_CFLAGS=-mmacosx-version-min=10.7"
|
||||
- EXTRA1="CMD_CXXFLAGS=-mmacosx-version-min=10.7 -std=c++11 -stdlib=libc++"
|
||||
- EXTRA2="CMD_LDXFLAGS=-mmacosx-version-min=10.7 -std=c++11 -stdlib=libc++"
|
||||
compiler: clang
|
||||
|
||||
7
Makefile
7
Makefile
@@ -23,3 +23,10 @@ DIRS += modules
|
||||
modules_DEPEND_DIRS = src
|
||||
|
||||
include $(TOP)/configure/RULES_TOP
|
||||
|
||||
UNINSTALL_DIRS += $(INSTALL_LOCATION)/src
|
||||
copysrc:
|
||||
tar cf - --exclude-vcs --exclude-backups --exclude=O.* modules/*/src | tar xf - -C $(INSTALL_LOCATION)
|
||||
|
||||
tar:
|
||||
tar cfjP epics_base-$(EPICS_VERSION_NUMBER).tar.bz2 $(INSTALL_LOCATION)
|
||||
|
||||
@@ -58,12 +58,8 @@ include $(CONFIG)/CONFIG_BASE_VERSION
|
||||
include $(CONFIG)/os/CONFIG.$(EPICS_HOST_ARCH).Common
|
||||
-include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).Common
|
||||
|
||||
# Parse configure/RELEASE
|
||||
# except when building Base itself, where this file is empty,
|
||||
# and would error in src/tools/ anyway.
|
||||
ifndef BASE_TOP
|
||||
# Parse configure/RELEASE to find all upstream modules
|
||||
RELEASE_TOPS := $(shell $(CONVERTRELEASE) -T $(TOP) releaseTops)
|
||||
endif
|
||||
|
||||
ifdef T_A
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@ CODE_CFLAGS = $(PROF_CFLAGS_$(PROFILE)) $(GPROF_CFLAGS_$(GPROF))
|
||||
CODE_CFLAGS += $(ASAN_FLAGS_$(ENABLE_ASAN))
|
||||
WARN_CFLAGS_YES = -Wall
|
||||
WARN_CFLAGS_NO = -w
|
||||
OPT_CFLAGS_YES = -O3
|
||||
OPT_CFLAGS_YES = -O3 -g
|
||||
OPT_CFLAGS_NO = -g
|
||||
|
||||
PROF_CXXFLAGS_YES = -p
|
||||
@@ -43,7 +43,7 @@ CODE_CXXFLAGS = $(PROF_CXXFLAGS_$(PROFILE)) $(GPROF_CXXFLAGS_$(GPROF))
|
||||
CODE_CXXFLAGS += $(ASAN_FLAGS_$(ENABLE_ASAN))
|
||||
WARN_CXXFLAGS_YES = -Wall
|
||||
WARN_CXXFLAGS_NO = -w
|
||||
OPT_CXXFLAGS_YES = -O3
|
||||
OPT_CXXFLAGS_YES = -O3 -g
|
||||
OPT_CXXFLAGS_NO = -g
|
||||
|
||||
CODE_LDFLAGS = $(PROF_CXXFLAGS_$(PROFILE)) $(GPROF_CXXFLAGS_$(GPROF))
|
||||
|
||||
@@ -42,8 +42,6 @@ FIND_TOOL = $(firstword $(wildcard $(TOOLS)/$(1) $(EPICS_BASE)/src/tools/$(1)))
|
||||
PODTOHTML = $(PERL) $(TOOLS)/podToHtml.pl
|
||||
CONVERTRELEASE = $(PERL) $(call FIND_TOOL,convertRelease.pl)
|
||||
FULLPATHNAME = $(PERL) $(TOOLS)/fullPathName.pl
|
||||
TAPTOJUNIT = $(PERL) $(TOOLS)/tap-to-junit-xml.pl
|
||||
PROVE = $(PERL) $(TOOLS)/epicsProve.pl
|
||||
GENVERSIONHEADER = $(PERL) $(TOOLS)/genVersionHeader.pl $(QUIET_FLAG) $(QUESTION_FLAG)
|
||||
|
||||
MAKERPATH = $(PYTHON) $(TOOLS)/makeRPath.py
|
||||
@@ -63,3 +61,13 @@ REPLACEVAR = $(PERL) $(TOOLS)/replaceVAR.pl
|
||||
# tools for cleaning out unwanted files
|
||||
CVSCLEAN = $(call FIND_TOOL,cvsclean.pl)
|
||||
DEPCLEAN = $(call FIND_TOOL,depclean.pl)
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# Tools for testing
|
||||
TAPTOJUNIT = $(PERL) $(TOOLS)/tap-to-junit-xml.pl
|
||||
PROVE = $(PERL) $(TOOLS)/epicsProve.pl
|
||||
PROVE.tap = $(PROVE) --ext .tap --exec "$(CAT)"
|
||||
|
||||
TEST_FAILURE_FILENAME = .tests-failed.log
|
||||
TEST_FAILURE_FILE = $(TOP)/$(TEST_FAILURE_FILENAME)
|
||||
PROVE_FAILURE = echo $(abspath .)>> $(TEST_FAILURE_FILE)
|
||||
|
||||
@@ -48,7 +48,7 @@ EPICS_VERSION = 7
|
||||
EPICS_REVISION = 0
|
||||
|
||||
# EPICS_MODIFICATION must be a number >=0 and <256
|
||||
EPICS_MODIFICATION = 3
|
||||
EPICS_MODIFICATION = 4
|
||||
|
||||
# EPICS_PATCH_LEVEL must be a number (win32 resource file requirement)
|
||||
# Not included in the official EPICS version number if zero
|
||||
@@ -56,16 +56,12 @@ EPICS_PATCH_LEVEL = 1
|
||||
|
||||
# Immediately after an official release the EPICS_PATCH_LEVEL is incremented
|
||||
# and the -DEV suffix is added (similar to the Maven -SNAPSHOT versions)
|
||||
EPICS_DEV_SNAPSHOT=
|
||||
#EPICS_DEV_SNAPSHOT=-DEV
|
||||
#EPICS_DEV_SNAPSHOT=
|
||||
EPICS_DEV_SNAPSHOT=-DEV
|
||||
#EPICS_DEV_SNAPSHOT=-pre1
|
||||
#EPICS_DEV_SNAPSHOT=-pre1-DEV
|
||||
#EPICS_DEV_SNAPSHOT=-pre2
|
||||
#EPICS_DEV_SNAPSHOT=-pre2-DEV
|
||||
#EPICS_DEV_SNAPSHOT=-rc1
|
||||
#EPICS_DEV_SNAPSHOT=-rc1-DEV
|
||||
#EPICS_DEV_SNAPSHOT=-rc2
|
||||
#EPICS_DEV_SNAPSHOT=-rc2-DEV
|
||||
|
||||
# No changes should be needed below here
|
||||
|
||||
|
||||
@@ -2,11 +2,11 @@
|
||||
|
||||
EPICS_CA_MAJOR_VERSION = 4
|
||||
EPICS_CA_MINOR_VERSION = 13
|
||||
EPICS_CA_MAINTENANCE_VERSION = 5
|
||||
EPICS_CA_MAINTENANCE_VERSION = 7
|
||||
|
||||
# Development flag, set to zero for release versions
|
||||
|
||||
EPICS_CA_DEVELOPMENT_FLAG = 0
|
||||
EPICS_CA_DEVELOPMENT_FLAG = 1
|
||||
|
||||
# Immediately after a release the MAINTENANCE_VERSION
|
||||
# will be incremented and the DEVELOPMENT_FLAG set to 1
|
||||
|
||||
@@ -306,7 +306,7 @@ LDLIBS = $(POSIX_LDLIBS) $(ARCH_DEP_LDLIBS) $(DEBUG_LDLIBS) $(OP_SYS_LDLIBS)\
|
||||
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)
|
||||
$(OP_SYS_INCLUDE_CPPFLAGS) $(CODE_CPPFLAGS) $(API_CPPFLAGS)
|
||||
|
||||
#--------------------------------------------------
|
||||
# ar definition default
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# Version number for the database APIs and shared library
|
||||
|
||||
EPICS_DATABASE_MAJOR_VERSION = 3
|
||||
EPICS_DATABASE_MINOR_VERSION = 17
|
||||
EPICS_DATABASE_MAINTENANCE_VERSION = 5
|
||||
EPICS_DATABASE_MINOR_VERSION = 18
|
||||
EPICS_DATABASE_MAINTENANCE_VERSION = 1
|
||||
|
||||
# Development flag, set to zero for release versions
|
||||
|
||||
EPICS_DATABASE_DEVELOPMENT_FLAG = 0
|
||||
EPICS_DATABASE_DEVELOPMENT_FLAG = 1
|
||||
|
||||
# Immediately after a release the MAINTENANCE_VERSION
|
||||
# will be incremented and the DEVELOPMENT_FLAG set to 1
|
||||
|
||||
@@ -3,9 +3,8 @@
|
||||
# National Laboratory.
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE Versions 3.13.7
|
||||
# and higher are distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
# Author: Andrew Johnson
|
||||
# Date: 20 April 1995
|
||||
@@ -54,8 +53,3 @@ EPICS_IOC_IGNORE_SERVERS=""
|
||||
# EPICS_IOC_LOG_PORT Log server port number etc.
|
||||
EPICS_IOC_LOG_PORT=7004
|
||||
|
||||
# Other services:
|
||||
|
||||
EPICS_CMD_PROTO_PORT=
|
||||
EPICS_AR_PORT=7002
|
||||
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# Version number for the libcom APIs and shared library
|
||||
|
||||
EPICS_LIBCOM_MAJOR_VERSION = 3
|
||||
EPICS_LIBCOM_MINOR_VERSION = 17
|
||||
EPICS_LIBCOM_MAINTENANCE_VERSION = 6
|
||||
EPICS_LIBCOM_MINOR_VERSION = 18
|
||||
EPICS_LIBCOM_MAINTENANCE_VERSION = 1
|
||||
|
||||
# Development flag, set to zero for release versions
|
||||
|
||||
EPICS_LIBCOM_DEVELOPMENT_FLAG = 0
|
||||
EPICS_LIBCOM_DEVELOPMENT_FLAG = 1
|
||||
|
||||
# Immediately after a release the MAINTENANCE_VERSION
|
||||
# will be incremented and the DEVELOPMENT_FLAG set to 1
|
||||
|
||||
@@ -161,7 +161,9 @@ USE_POSIX_THREAD_PRIORITY_SCHEDULING = YES
|
||||
|
||||
# Site version number, if set will append '-' and this string to the
|
||||
# EPICS version number string that is reported by many tools.
|
||||
EPICS_SITE_VERSION =
|
||||
ifeq ($(INSTALL_LOCATION),$(EPICS_BASE))
|
||||
EPICS_SITE_VERSION=$(shell $(PERL) -MPOSIX -e 'print strftime "%Y-%m-%d", localtime')
|
||||
endif
|
||||
|
||||
# For GNU compiler, use pipes rather than temporary files for
|
||||
# communication between the various stages of compilation.
|
||||
|
||||
@@ -436,7 +436,7 @@ $(COMMON_DIR)/%.html: %.dbd.pod
|
||||
|
||||
$(COMMON_DIR)/%.html: %.pod
|
||||
@$(RM) $(notdir $@)
|
||||
$(PODTOHTML) -o $(notdir $@) $<
|
||||
$(PODTOHTML) -s -s -o $(notdir $@) $<
|
||||
@$(MV) $(notdir $@) $@
|
||||
|
||||
$(COMMON_DIR)/%.html: %.pm
|
||||
|
||||
@@ -86,6 +86,23 @@ include $(CONFIG)/RULES_FILE_TYPE
|
||||
|
||||
include $(CONFIG)/RULES.Db
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# Do not build anything if current path matches SKIP_BUILD
|
||||
|
||||
ifneq (,$(strip $(SKIP_BUILDS)))
|
||||
CURRENT_MODULE=$(subst $(realpath $(TOP)/..)/,,$(subst $(realpath $(dir $(lastword $(MAKEFILE_LIST)))..)/,,$(realpath ..)))
|
||||
ifneq ($(filter $(SKIP_BUILDS) $(addsuffix /%,$(SKIP_BUILDS)),$(CURRENT_MODULE)),)
|
||||
$(info Skipping $(CURRENT_MODULE) for $(T_A))
|
||||
PROD=
|
||||
TESTPROD=
|
||||
LIBRARY=
|
||||
TESTLIBRARY=
|
||||
LOADABLE_LIBRARY=
|
||||
TESTS=
|
||||
SRC_FILES=
|
||||
endif
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# Include defines and rules for prod, library and test* targets
|
||||
|
||||
@@ -108,17 +125,17 @@ PRODTARGETS += $(PRODNAME) $(MUNCHNAME) $(CTDT_SRCS) $(CTDT_OBJS) $(NMS)
|
||||
TESTPRODTARGETS += $(TESTPRODNAME) $(TESTMUNCHNAME)
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# Test specifications and test result files
|
||||
# Test result files
|
||||
#
|
||||
ifneq (,$(strip $(TESTS)))
|
||||
TARGETS += testspec
|
||||
endif
|
||||
|
||||
# Enable testing if this host can run tests on the current target
|
||||
ifneq (,$(findstring $(T_A),$(EPICS_HOST_ARCH) $(CROSS_COMPILER_RUNTEST_ARCHS)))
|
||||
# Enable testing if this host can run tests for the current target
|
||||
ifneq (,$(filter $(T_A), $(EPICS_HOST_ARCH) $(CROSS_COMPILER_RUNTEST_ARCHS)))
|
||||
RUNTESTS_ENABLED = YES
|
||||
TAPFILES += $(TESTSCRIPTS:.t=.tap)
|
||||
JUNITFILES += $(TAPFILES:.tap=.xml)
|
||||
TESTSCRIPTS.t = $(filter %.t, $(TESTSCRIPTS))
|
||||
TAPFILES.t += $(TESTSCRIPTS.t:.t=.tap)
|
||||
JUNITFILES.t += $(TESTSCRIPTS.t:.t=-results.xml)
|
||||
TAPFILES += $(TAPFILES.t)
|
||||
JUNITFILES += $(JUNITFILES.t)
|
||||
endif
|
||||
|
||||
#---------------------------------------------------------------
|
||||
@@ -173,9 +190,9 @@ ifdef RES
|
||||
@$(RM) *$(RES)
|
||||
endif
|
||||
|
||||
# Sort mkdir targets to remove duplicates & make parents first
|
||||
$(DIRECTORY_TARGETS):
|
||||
$(MKDIR) $(sort $@)
|
||||
# Sort directories to remove duplicates & make parents first
|
||||
$(sort $(DIRECTORY_TARGETS)):
|
||||
$(MKDIR) $@
|
||||
|
||||
# Install LIB_INSTALLS libraries before linking executables
|
||||
$(TESTPRODNAME) $(PRODNAME): | $(INSTALL_LIB_INSTALLS)
|
||||
@@ -208,9 +225,9 @@ $(LOADABLE_SHRLIBNAME): FINAL_DIR=$(INSTALL_SHRLIB)
|
||||
|
||||
$(TESTPRODNAME) $(PRODNAME): $(PRODUCT_OBJS) $(PROD_RESS) $(PROD_DEPLIBS)
|
||||
|
||||
$(TESTPRODNAME) $(PRODNAME): %$(EXE): | $(INSTALL_LIB)
|
||||
$(TESTPRODNAME) $(PRODNAME): %$(EXE):
|
||||
@$(RM) $@
|
||||
$(LINK.cpp)
|
||||
$(DEBUGCMD) $(LINK.cpp)
|
||||
$(MT_EXE_COMMAND)
|
||||
|
||||
%_ctdt$(OBJ): %_ctdt.c
|
||||
@@ -311,10 +328,6 @@ $(LOADABLE_SHRLIBNAME): $(LOADABLE_SHRLIB_PREFIX)%$(LOADABLE_SHRLIB_SUFFIX):
|
||||
$(LINK.shrlib)
|
||||
$(MT_DLL_COMMAND)
|
||||
|
||||
$(LIBNAME) $(SHRLIBNAME) $(LOADABLE_SHRLIBNAME): | $(INSTALL_LIB)
|
||||
$(INSTALL_LIB):
|
||||
@$(MKDIR) $@
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# C++ munching for VxWorks
|
||||
|
||||
@@ -354,23 +367,22 @@ $(MODNAME): %$(MODEXT): %$(EXE)
|
||||
#---------------------------------------------------------------
|
||||
# Automated testing
|
||||
|
||||
runtests: $(TESTSCRIPTS)
|
||||
runtests: run-tap-tests
|
||||
run-tap-tests: $(TESTSCRIPTS.t)
|
||||
ifneq ($(TESTSCRIPTS.t),)
|
||||
ifdef RUNTESTS_ENABLED
|
||||
$(PERL) -MTest::Harness -e 'runtests @ARGV if @ARGV;' $^
|
||||
$(PROVE) --failures --color $^ || $(PROVE_FAILURE)
|
||||
endif
|
||||
endif
|
||||
|
||||
testspec: $(TESTSCRIPTS)
|
||||
@$(RM) $@
|
||||
@echo OS-class: $(OS_CLASS) > $@
|
||||
@echo Target-arch: $(T_A) >> $@
|
||||
$(if $^, @echo Tests: $^ >> $@)
|
||||
$(if $(TESTFILES), @echo Files: $(TESTFILES) >> $@)
|
||||
$(if $(TESTSPEC_$(OS_CLASS)), @echo "Harness: $(TESTSPEC_$(OS_CLASS))" >> $@)
|
||||
tapfiles: $(TAPFILES)
|
||||
junitfiles: $(JUNITFILES)
|
||||
|
||||
test-results: tapfiles
|
||||
ifneq ($(TAPFILES),)
|
||||
test-results: tap-results
|
||||
tap-results: $(TAPFILES)
|
||||
ifneq ($(strip $(TAPFILES)),)
|
||||
ifdef RUNTESTS_ENABLED
|
||||
$(PROVE) --failures --ext .tap --exec "$(CAT)" --color $(TAPFILES)
|
||||
$(PROVE.tap) --failures --color $^ || $(PROVE_FAILURE)
|
||||
endif
|
||||
|
||||
CURRENT_TAPFILES := $(wildcard $(TAPFILES))
|
||||
@@ -385,16 +397,13 @@ ifneq ($(CURRENT_JUNITFILES),)
|
||||
$(RM) $(CURRENT_JUNITFILES)
|
||||
endif
|
||||
|
||||
tapfiles: $(TESTSCRIPTS) $(TAPFILES)
|
||||
junitfiles: $(JUNITFILES)
|
||||
|
||||
# A .tap file is the output from running the associated test script
|
||||
%.tap: %.t
|
||||
$(TAPFILES.t): %.tap: %.t
|
||||
ifdef RUNTESTS_ENABLED
|
||||
$(PERL) $< -tap > $@
|
||||
endif
|
||||
|
||||
%.xml: %.tap
|
||||
$(JUNITFILES.t): %-results.xml: %.tap
|
||||
$(TAPTOJUNIT) --puretap --output $@ --input $< $*
|
||||
|
||||
# If there's a perl test script (.plt) available, use it
|
||||
@@ -409,6 +418,23 @@ endif
|
||||
$(PERL) $(TOOLS)/makeTestfile.pl $(T_A) $(EPICS_HOST_ARCH) $@ $<
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# Generate $(API_HEADER) files on request (%API.h)
|
||||
|
||||
ifdef API_HEADER
|
||||
# Install them
|
||||
INC += $(API_HEADER)
|
||||
|
||||
# Ensure we generate them early enough
|
||||
INSTALL_API_HEADERS = $(addprefix $(INSTALL_INCLUDE)/,$(API_HEADER))
|
||||
$(filter-out $(INSTALL_API_HEADERS), $(INSTALL_INC)) $(HDEPENDS_FILES): \
|
||||
| $(INSTALL_API_HEADERS)
|
||||
|
||||
# How to make one
|
||||
$(COMMON_DIR)/%API.h: $(TOOLS)/makeAPIheader.pl
|
||||
@$(RM) $@
|
||||
$(PERL) $(TOOLS)/makeAPIheader.pl -o $@ $(@:$(COMMON_DIR)/%API.h=%)
|
||||
endif
|
||||
|
||||
# Generate header with version number from VCS
|
||||
|
||||
ifneq ($(GENVERSION),)
|
||||
@@ -477,11 +503,9 @@ $(INSTALL_TCLLIB)/%: ../%
|
||||
@$(INSTALL) -d -m $(BIN_PERMISSIONS) $< $(INSTALL_TCLLIB)
|
||||
endif
|
||||
|
||||
ifneq ($(TCLINDEX),)
|
||||
$(INSTALL_TCLLIB)/$(TCLINDEX): $(INSTALL_TCLLIBS)
|
||||
$(ECHO) "Updating $@"
|
||||
$(ECHO) eval auto_mkindex $(INSTALL_TCLLIB) "$(TCLLIBNAME)" | tclsh
|
||||
endif
|
||||
|
||||
$(INSTALL_LOADABLE_SHRLIBS): $(INSTALL_SHRLIB)/%: %
|
||||
$(ECHO) "Installing loadable shared library $@"
|
||||
@@ -553,8 +577,8 @@ include $(CONFIG)/RULES_EXPAND
|
||||
.PRECIOUS: $(COMMON_INC)
|
||||
|
||||
.PHONY: all host inc build install clean rebuild buildInstall build_clean
|
||||
.PHONY: runtests tapfiles clean-tests test-results junitfiles
|
||||
.PHONY: checkRelease warnRelease noCheckRelease FORCE
|
||||
.PHONY: runtests run-tap-tests tapfiles junitfiles test-results tap-results
|
||||
.PHONY: clean-tests checkRelease warnRelease noCheckRelease FORCE
|
||||
|
||||
include $(CONFIG)/RULES_COMMON
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
# Copyright (c) 2002 The Regents of the University of California, as
|
||||
# Operator of Los Alamos National Laboratory.
|
||||
# EPICS BASE is distributed subject to a Software License Agreement found
|
||||
# in the file LICENSE that is included with this distribution.
|
||||
# in the file LICENSE that is included with this distribution.
|
||||
#*************************************************************************
|
||||
|
||||
ARCHS += $(BUILD_ARCHS)
|
||||
@@ -54,7 +54,7 @@ $(foreach dir, $(DIRS), \
|
||||
|
||||
define DEP_template2
|
||||
$(1)$$(DIVIDER)$(2) : $$(foreach ddir, $$($(1)_DEPEND_DIRS), \
|
||||
$$(addsuffix $$(DIVIDER)$(2),$$(ddir)))
|
||||
$$(addsuffix $$(DIVIDER)$(2),$$(ddir))) | before-$(2)
|
||||
endef
|
||||
$(foreach action, $(ACTIONS), \
|
||||
$(foreach dir, $(DIRS), \
|
||||
@@ -79,18 +79,24 @@ $(foreach arch, $(ARCHS), \
|
||||
|
||||
dirPart = $(join $(dir $@), $(word 1, $(subst $(DIVIDER), ,$(notdir $@))))
|
||||
actionArchPart = $(join $(word 2, $(subst $(DIVIDER), ,$(notdir $@))), \
|
||||
$(addprefix $(DIVIDER),$(word 3, $(subst $(DIVIDER), ,$(notdir $@)))))
|
||||
$(DIRS) $(dirActionTargets) $(dirArchTargets) $(dirActionArchTargets) :
|
||||
$(addprefix $(DIVIDER),$(word 3, $(subst $(DIVIDER), ,$(notdir $@)))))
|
||||
|
||||
$(DIRS) $(dirActionTargets) $(dirArchTargets) $(dirActionArchTargets):
|
||||
$(MAKE) -C $(dirPart) $(actionArchPart)
|
||||
|
||||
# before-action rules are run once prior to recursing through the
|
||||
# list of subdirectories and running the action rule in each one.
|
||||
# See DEP_template2 above for how that rule ordering is achieved.
|
||||
beforeActions = $(addprefix before-,$(ACTIONS))
|
||||
$(beforeActions):
|
||||
|
||||
$(ARCHS) $(ACTIONS) $(actionArchTargets) :%: \
|
||||
$(foreach dir, $(DIRS), $(dir)$(DIVIDER)%)
|
||||
|
||||
|
||||
.PHONY: $(DIRS) all host rebuild
|
||||
.PHONY: $(ARCHS) $(ACTIONS)
|
||||
.PHONY: $(dirActionTargets) $(dirArchTargets)
|
||||
.PHONY: $(dirActionArchTargets)
|
||||
.PHONY: $(actionArchTargets)
|
||||
.PHONY : $(DIRS) all host rebuild
|
||||
.PHONY : $(ARCHS) $(ACTIONS) $(beforeActions)
|
||||
.PHONY : $(dirActionTargets) $(dirArchTargets)
|
||||
.PHONY : $(dirActionArchTargets)
|
||||
.PHONY : $(actionArchTargets)
|
||||
|
||||
include $(CONFIG)/RULES_COMMON
|
||||
|
||||
@@ -12,28 +12,72 @@
|
||||
vpath %@ $(USR_VPATH) $(ALL_SRC_DIRS)
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# Variable expansion
|
||||
# Template variable expansion
|
||||
|
||||
# This feature allows you to instantiate simple template files at
|
||||
# build-time, replacing macros spelled @NAME@ with values provided
|
||||
# by the Makefile. The template filename must end with an @ sign,
|
||||
# which is removed to create the expanded filename.
|
||||
|
||||
# Makefiles can use this variable expansion as follows:
|
||||
#
|
||||
# 1. Add the template filename (with the trailing @ sign) to either
|
||||
# the EXPAND or EXPAND_COMMON variable, for example:
|
||||
# EXPAND_COMMON += myVersion.h@
|
||||
# Use EXPAND_COMMON for templates that don't depend on the
|
||||
# target architecture (these will be generated in O.Common).
|
||||
# 2. There are 2 ways of defining template macros. The simplest
|
||||
# is to add a NAME=VALUE string to the EXPAND_VARS variable for
|
||||
# the desired macros, e.g.:
|
||||
# EXPAND_VARS += MY_MAJOR_VERSION=$(MY_MAJOR_VERSION)
|
||||
# EXPAND_VARS += MY_MINOR_VERSION=$(MY_MINOR_VERSION)
|
||||
# These values may not contain spaces, even if inside quotes.
|
||||
# 3. A better way in the above case is to add the names of any
|
||||
# Makefile variables that should be provided as macros to the
|
||||
# variable EXPAND_ME, like this:
|
||||
# EXPAND_ME += MY_MAJOR_VERSION
|
||||
# EXPAND_ME += MY_MINOR_VERSION
|
||||
# The values of these variables may contain spaces.
|
||||
# 4. The macros TOP and ARCH will be set by the build system.
|
||||
# TOP is the value of $(INSTALL_LOCATION) for this module.
|
||||
# ARCH is the target architecture $(T_A), but is only set
|
||||
# while expanding files in EXPAND
|
||||
# 5. Add the expanded filename to some other variable that will
|
||||
# cause it to be created and used, such as INC here:
|
||||
# INC += myVersion.h
|
||||
|
||||
# Default settings
|
||||
EXPAND_TOOL ?= $(PERL) $(TOOLS)/expandVars.pl
|
||||
|
||||
EXPANDFLAGS += -t $(INSTALL_LOCATION) -a $(T_A)
|
||||
EXPANDFLAGS += $(addprefix -D ,$(EXPAND_VARS))
|
||||
EXPANDARCH = -a $(T_A)
|
||||
EXPANDFLAGS += -t $(INSTALL_LOCATION)
|
||||
EXPANDFLAGS += $(addprefix -D ,$(EXPAND_VARS) $($@_EXPAND_VARS))
|
||||
EXPANDFLAGS += $(foreach var, $(EXPAND_ME) $($@_EXPAND_ME), \
|
||||
-D$(var)="$(strip $($(var)))")
|
||||
|
||||
# The names of files to be expanded must end with '@'
|
||||
EXPANDED = $(EXPAND:%@=%)
|
||||
EXPANDED_COM = $(EXPAND_COMMON:%@=%)
|
||||
EXPANDED_COMMON = $(EXPANDED_COM:%=$(COMMON_DIR)/%)
|
||||
|
||||
$(EXPANDED): %: %@
|
||||
$(ECHO) "Expanding $< to $@"
|
||||
@$(RM) $@
|
||||
@$(EXPAND_TOOL) $(EXPANDFLAGS) $($@_EXPANDFLAGS) $< $@
|
||||
$(EXPAND_TOOL) $(EXPANDARCH) $(EXPANDFLAGS) $($@_EXPANDFLAGS) $< $@
|
||||
|
||||
$(EXPANDED_COM): %: %@
|
||||
$(ECHO) "Expanding $< to $(COMMON_DIR)/$@"
|
||||
@$(RM) $@
|
||||
$(EXPAND_TOOL) $(EXPANDFLAGS) $($@_EXPANDFLAGS) $< $@
|
||||
$(EXPANDED_COMMON): $(COMMON_DIR)/%: %
|
||||
@$(MV) $< $@
|
||||
|
||||
clean: expand_clean
|
||||
|
||||
expand_clean:
|
||||
@$(RM) $(EXPANDED)
|
||||
@$(RM) $(EXPANDED) $(EXPANDED_COMMON)
|
||||
|
||||
.PRECIOUS: $(EXPANDED)
|
||||
.PRECIOUS: $(EXPANDED) $(EXPANDED_COMMON)
|
||||
.PHONY: expand_clean
|
||||
|
||||
#---------------------------------------------------------------
|
||||
@@ -70,4 +114,3 @@ $1$(DEP):
|
||||
endef
|
||||
$(foreach asy, $(sort $(COMMON_ASSEMBLIES) $(ASSEMBLIES)), \
|
||||
$(eval $(call ASSEMBLY_DEP_template,$(strip $(asy)))))
|
||||
|
||||
|
||||
@@ -23,7 +23,8 @@
|
||||
# -include $(TOP)/../CONFIG_SITE.local
|
||||
|
||||
# Add checked-out submodules to DIRS
|
||||
DIRS += $(subst /Makefile,,$(wildcard $(addsuffix /Makefile, $(SUBMODULES))))
|
||||
LIVE_SUBMODULES = $(subst /Makefile,,$(wildcard $(addsuffix /Makefile, $(SUBMODULES))))
|
||||
DIRS += $(LIVE_SUBMODULES)
|
||||
|
||||
include $(CONFIG)/RULES_DIRS
|
||||
|
||||
@@ -45,3 +46,15 @@ realclean:
|
||||
$(RM) $(wildcard RELEASE.*.local)
|
||||
|
||||
.PHONY: RELEASE.host realclean
|
||||
|
||||
# Append all our live submodule failure files
|
||||
FAILURE_FILES = $(addsuffix /$(TEST_FAILURE_FILENAME), $(LIVE_SUBMODULES))
|
||||
|
||||
define combine_failure_files
|
||||
@$(TOUCH) $(FAILURE_FILES)
|
||||
@$(CAT) $(FAILURE_FILES) >> $(TEST_FAILURE_FILE)
|
||||
endef
|
||||
runtests: | $(addsuffix $(DIVIDER)runtests, $(LIVE_SUBMODULES))
|
||||
$(if $(FAILURE_FILES), $(combine_failure_files))
|
||||
test-results: | $(addsuffix $(DIVIDER)test-results, $(LIVE_SUBMODULES))
|
||||
$(if $(FAILURE_FILES), $(combine_failure_files))
|
||||
|
||||
@@ -95,12 +95,20 @@ $(1)_DLL_DEPLIBS=$$(foreach lib, $$($(1)_DLL_LIBS), \
|
||||
$$(LIB_PREFIX)$(1)$$(LIB_SUFFIX):$$($(1)_OBJSNAME) $$($(1)_RESS)
|
||||
$$(LIB_PREFIX)$(1)$$(LIB_SUFFIX):$$($(1)_DEPLIBS)
|
||||
|
||||
ifneq ($$($(1)_API),)
|
||||
$$(LIB_PREFIX)$(1)$$(LIB_SUFFIX): API_CPPFLAGS += -DBUILDING_$$($(1)_API)_API
|
||||
endif
|
||||
|
||||
ifeq ($$(SHARED_LIBRARIES),YES)
|
||||
|
||||
ifdef SHRLIB_SUFFIX
|
||||
$$(SHRLIB_PREFIX)$(1)$$(SHRLIB_SUFFIX):$$($(1)_OBJSNAME) $$($(1)_RESS)
|
||||
$$(SHRLIB_PREFIX)$(1)$$(SHRLIB_SUFFIX):$$($(1)_DEPLIBS)
|
||||
$$(SHRLIB_PREFIX)$(1)$$(SHRLIB_SUFFIX):$$($(1)_DLL_DEPLIBS)
|
||||
|
||||
ifneq ($$($(1)_API),)
|
||||
$$(SHRLIB_PREFIX)$(1)$$(SHRLIB_SUFFIX): API_CPPFLAGS += -DBUILDING_$$($(1)_API)_API
|
||||
endif
|
||||
endif
|
||||
|
||||
endif
|
||||
@@ -141,6 +149,11 @@ $(1)_DLL_DEPLIBS=$$(foreach lib, $$($(1)_DLL_LIBS),\
|
||||
$$(LOADABLE_SHRLIB_PREFIX)$(1)$$(LOADABLE_SHRLIB_SUFFIX):$$($(1)_OBJSNAME) $$($(1)_RESS)
|
||||
$$(LOADABLE_SHRLIB_PREFIX)$(1)$$(LOADABLE_SHRLIB_SUFFIX):$$($(1)_DEPLIBS)
|
||||
$$(LOADABLE_SHRLIB_PREFIX)$(1)$$(LOADABLE_SHRLIB_SUFFIX):$$($(1)_DLL_DEPLIBS)
|
||||
|
||||
ifneq ($$($(1)_API),)
|
||||
$$(LOADABLE_SHRLIB_PREFIX)$(1)$$(LOADABLE_SHRLIB_SUFFIX): \
|
||||
API_CPPFLAGS += -DBUILDING_$$($(1)_API)_API
|
||||
endif
|
||||
endef
|
||||
|
||||
$(foreach target, $(LOADABLE_LIBRARY), \
|
||||
|
||||
@@ -26,47 +26,47 @@ ifndef DISABLE_TOP_RULES
|
||||
distclean: realclean cvsclean realuninstall
|
||||
|
||||
realuninstall: uninstallDirs
|
||||
$(RMDIR) $(INSTALL_LOCATION_BIN)
|
||||
$(RMDIR) $(INSTALL_LOCATION_LIB)
|
||||
$(RMDIR) $(INSTALL_LOCATION_BIN) $(INSTALL_LOCATION_LIB)
|
||||
|
||||
UNINSTALL_DIRS += $(INSTALL_DB) $(INSTALL_DBD) $(INSTALL_DOC) $(INSTALL_HTML)
|
||||
UNINSTALL_DIRS += $(INSTALL_INCLUDE) $(INSTALL_TEMPLATES) $(DIRECTORY_TARGETS)
|
||||
ifneq ($(INSTALL_LOCATION),$(TOP))
|
||||
UNINSTALL_DIRS += $(INSTALL_CONFIG)
|
||||
endif
|
||||
uninstallDirs:
|
||||
uninstallDirs: | clean
|
||||
$(RMDIR) $(UNINSTALL_DIRS)
|
||||
|
||||
uninstall: archuninstall uninstallDirs
|
||||
# Remove the bin and lib directories if they have no sub-directories
|
||||
#
|
||||
EMPTY_INSTALL_DIRS = \
|
||||
$(if $(wildcard $(INSTALL_LOCATION_BIN)/*),,$(INSTALL_LOCATION_BIN)) \
|
||||
$(if $(wildcard $(INSTALL_LOCATION_LIB)/*),,$(INSTALL_LOCATION_LIB))
|
||||
uninstall: archuninstall uninstallDirs | clean
|
||||
$(RMDIR) $(EMPTY_INSTALL_DIRS)
|
||||
|
||||
archuninstall: $(addprefix uninstall$(DIVIDER),$(BUILD_ARCHS)) | cleandirs
|
||||
archuninstall: $(addprefix uninstall$(DIVIDER),$(BUILD_ARCHS))
|
||||
|
||||
archPart = $(word 2, $(subst $(DIVIDER), ,$@))
|
||||
uninstall$(DIVIDER)%:
|
||||
$(RMDIR) $(INSTALL_LOCATION_BIN)/$(archPart)
|
||||
$(RMDIR) $(INSTALL_LOCATION_LIB)/$(archPart)
|
||||
uninstall$(DIVIDER)%: | clean
|
||||
$(RMDIR) $(addsuffix /$(subst uninstall$(DIVIDER),,$@), \
|
||||
$(INSTALL_LOCATION_BIN) $(INSTALL_LOCATION_LIB))
|
||||
|
||||
# Remove the bin and lib directories if they have no sub-directories
|
||||
#
|
||||
cleandirs:
|
||||
@$(NOP)
|
||||
ifeq ($(wildcard $(INSTALL_LOCATION_BIN)/*),)
|
||||
$(RMDIR) $(INSTALL_LOCATION_BIN)
|
||||
endif
|
||||
ifeq ($(wildcard $(INSTALL_LOCATION_LIB)/*),)
|
||||
$(RMDIR) $(INSTALL_LOCATION_LIB)
|
||||
endif
|
||||
runtests test-results:
|
||||
@$(PERL) $(TOOLS)/testFailures.pl $(TEST_FAILURE_FILE)
|
||||
|
||||
else
|
||||
#
|
||||
# Using a disabled rule aborts
|
||||
#
|
||||
|
||||
cleandirs distclean uninstall realuninstall archuninstall:
|
||||
distclean uninstall realuninstall archuninstall:
|
||||
$(error Target '$@' not available in a submodule)
|
||||
|
||||
endif # DISABLE_TOP_RULES
|
||||
|
||||
before-runtests before-test-results: rm-failure-file
|
||||
rm-failure-file:
|
||||
@$(RM) $(TEST_FAILURE_FILE)
|
||||
@$(TOUCH) $(TEST_FAILURE_FILE)
|
||||
|
||||
help:
|
||||
@echo "Usage: gnumake [options] [target] ..."
|
||||
@@ -106,7 +106,7 @@ endif
|
||||
@echo "Object targets are supported by the O.<arch> level Makefile .e.g"
|
||||
@echo " xxxRecord.o"
|
||||
|
||||
.PHONY: cleandirs distclean uninstall help
|
||||
.PHONY: distclean uninstall rm-failure-file help
|
||||
.PHONY: realuninstall archuninstall uninstallDirs
|
||||
|
||||
ifndef DISABLE_TOP_RULES
|
||||
|
||||
2
configure/os/CONFIG.Common.RHEL7-x86_64
Normal file
2
configure/os/CONFIG.Common.RHEL7-x86_64
Normal file
@@ -0,0 +1,2 @@
|
||||
# Include definitions common to linux pentium targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-x86_64
|
||||
1
configure/os/CONFIG.Common.RHEL7-x86_64-clang
Normal file
1
configure/os/CONFIG.Common.RHEL7-x86_64-clang
Normal file
@@ -0,0 +1 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-clang
|
||||
6
configure/os/CONFIG.Common.SL5-x86
Normal file
6
configure/os/CONFIG.Common.SL5-x86
Normal file
@@ -0,0 +1,6 @@
|
||||
# Include definitions common to linux pentium targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-x86
|
||||
|
||||
COMMANDLINE_LIBRARY = READLINE_NCURSES
|
||||
|
||||
ARCH_DEP_CFLAGS += -march=i686
|
||||
4
configure/os/CONFIG.Common.SL5-x86_64
Normal file
4
configure/os/CONFIG.Common.SL5-x86_64
Normal file
@@ -0,0 +1,4 @@
|
||||
# Include definitions common to linux pentium targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-x86_64
|
||||
|
||||
COMMANDLINE_LIBRARY = READLINE_NCURSES
|
||||
4
configure/os/CONFIG.Common.SL6-x86
Normal file
4
configure/os/CONFIG.Common.SL6-x86
Normal file
@@ -0,0 +1,4 @@
|
||||
# Include definitions common to linux pentium targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-x86
|
||||
|
||||
ARCH_DEP_CFLAGS += -march=i686
|
||||
2
configure/os/CONFIG.Common.SL6-x86_64
Normal file
2
configure/os/CONFIG.Common.SL6-x86_64
Normal file
@@ -0,0 +1,2 @@
|
||||
# Include definitions common to linux pentium targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-x86_64
|
||||
1
configure/os/CONFIG.Common.SL6-x86_64-clang
Normal file
1
configure/os/CONFIG.Common.SL6-x86_64-clang
Normal file
@@ -0,0 +1 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-clang
|
||||
8
configure/os/CONFIG.Common.T2-ppc604
Normal file
8
configure/os/CONFIG.Common.T2-ppc604
Normal file
@@ -0,0 +1,8 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
|
||||
VXWORKS_VERSION = 5.5.1
|
||||
WIND_BASE = /afs/psi.ch/project/vxworks/Tornado2.2.1
|
||||
|
||||
#there is a problem with our ccppc and optimization
|
||||
# -O0 works, -O and -O1 and higher are buggy
|
||||
OPT_CFLAGS_YES = -O0
|
||||
OPT_CXXFLAGS_YES = -O0
|
||||
2
configure/os/CONFIG.Common.V62-ppc604
Normal file
2
configure/os/CONFIG.Common.V62-ppc604
Normal file
@@ -0,0 +1,2 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
|
||||
VXWORKS_VERSION = 6.2
|
||||
5
configure/os/CONFIG.Common.V63-ppc603
Normal file
5
configure/os/CONFIG.Common.V63-ppc603
Normal file
@@ -0,0 +1,5 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc603_long
|
||||
VXWORKS_VERSION = 6.3
|
||||
|
||||
# Buggy "uninitialized variable" warning produces many false positives
|
||||
ARCH_DEP_CXXFLAGS += -Wno-uninitialized
|
||||
5
configure/os/CONFIG.Common.V63-ppc604
Normal file
5
configure/os/CONFIG.Common.V63-ppc604
Normal file
@@ -0,0 +1,5 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
|
||||
VXWORKS_VERSION = 6.3
|
||||
|
||||
# Buggy "uninitialized variable" warning produces many false positives
|
||||
ARCH_DEP_CXXFLAGS += -Wno-uninitialized
|
||||
2
configure/os/CONFIG.Common.V66-ppc603
Normal file
2
configure/os/CONFIG.Common.V66-ppc603
Normal file
@@ -0,0 +1,2 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc603_long
|
||||
VXWORKS_VERSION = 6.6
|
||||
2
configure/os/CONFIG.Common.V66-ppc604
Normal file
2
configure/os/CONFIG.Common.V66-ppc604
Normal file
@@ -0,0 +1,2 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
|
||||
VXWORKS_VERSION = 6.6
|
||||
5
configure/os/CONFIG.Common.V67-ppc604
Normal file
5
configure/os/CONFIG.Common.V67-ppc604
Normal file
@@ -0,0 +1,5 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
|
||||
VXWORKS_VERSION = 6.7
|
||||
|
||||
#needed when including memPartLib.h, e.g. through moduleLib.h or loadLib.h
|
||||
ARCH_DEP_CFLAGS += -D_VSB_CONFIG_FILE='<../lib/h/config/vsbConfig.h>'
|
||||
3
configure/os/CONFIG.Common.V69-ppc32
Normal file
3
configure/os/CONFIG.Common.V69-ppc32
Normal file
@@ -0,0 +1,3 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc32
|
||||
VXWORKS_VERSION = 6.9
|
||||
export LD_LIBRARY_PATH=$(WIND_BASE)/lmapi-5.0/$(WIND_HOST_TYPE)/lib
|
||||
3
configure/os/CONFIG.Common.V69-ppc604
Normal file
3
configure/os/CONFIG.Common.V69-ppc604
Normal file
@@ -0,0 +1,3 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
|
||||
VXWORKS_VERSION = 6.9
|
||||
export LD_LIBRARY_PATH=$(WIND_BASE)/lmapi-5.0/$(WIND_HOST_TYPE)/lib
|
||||
22
configure/os/CONFIG.Common.eldk42-ppc4xxFP
Normal file
22
configure/os/CONFIG.Common.eldk42-ppc4xxFP
Normal file
@@ -0,0 +1,22 @@
|
||||
# DeltaTau PowerPMAC with ELDK 4.2
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
COMMANDLINE_LIBRARY = READLINE_NCURSES
|
||||
|
||||
ARCH_CLASS = ppc
|
||||
|
||||
ELDK=/opt/eldk-4.2
|
||||
GNU_TARGET=ppc_4xxFP
|
||||
GNU_DIR=$(ELDK)/usr
|
||||
|
||||
# This cross tool chain is installed in a somehow weired way
|
||||
# Without the following lines it does not work on RHEL7
|
||||
# but it worked on SL6
|
||||
ARCH_DEP_CXXFLAGS += -I $(ELDK)/$(GNU_TARGET)/usr/include/c++/4.2.2
|
||||
ARCH_DEP_CXXFLAGS += -I $(ELDK)/$(GNU_TARGET)/usr/include/c++/4.2.2/powerpc-linux
|
||||
ARCH_DEP_CXXFLAGS += -I $(ELDK)/$(GNU_TARGET)/usr/include/c++/4.2.2/backward
|
||||
|
||||
ARCH_DEP_LDFLAGS += -Wl,-rpath-link,$(ELDK)/$(GNU_TARGET)/lib
|
||||
ARCH_DEP_LDFLAGS += -Wl,-rpath-link,$(ELDK)/$(GNU_TARGET)/usr/lib
|
||||
14
configure/os/CONFIG.Common.eldk51-ppc4xxSF
Normal file
14
configure/os/CONFIG.Common.eldk51-ppc4xxSF
Normal file
@@ -0,0 +1,14 @@
|
||||
# Virtex FPGA embedded Processor with ELDK 5.1
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
ARCH_CLASS = ppc
|
||||
|
||||
SDK = eldk
|
||||
SDK_DIR = /opt/eldk-5.1
|
||||
SDK_HOST_ARCH = $(GNU_HOST_ARCH)-$(SDK)-$(GNU_HOST_OS)
|
||||
GNU_TARGET = powerpc-4xx-softfloat
|
||||
GNU_ARCH = ppc405-linux
|
||||
GNU_DIR = $(SDK_DIR)/$(GNU_TARGET)/sysroots/$(SDK_HOST_ARCH)/usr
|
||||
GNU_BIN = $(GNU_DIR)/bin/$(GNU_ARCH)
|
||||
15
configure/os/CONFIG.Common.eldk52-e500v2
Normal file
15
configure/os/CONFIG.Common.eldk52-e500v2
Normal file
@@ -0,0 +1,15 @@
|
||||
# IOxOS IFC1210 with ELDK 5.2
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
ARCH_CLASS = ppc
|
||||
|
||||
SDK = eldk
|
||||
SDK_DIR = /opt/eldk-5.2
|
||||
SDK_HOST_ARCH = $(GNU_HOST_ARCH)-$(SDK)-$(GNU_HOST_OS)
|
||||
GNU_TARGET = powerpc-e500v2
|
||||
GNU_ARCH = ppce500v2-linux-gnuspe
|
||||
GNU_DIR = $(SDK_DIR)/$(GNU_TARGET)/sysroots/$(SDK_HOST_ARCH)/usr
|
||||
GNU_BIN = $(GNU_DIR)/bin/$(GNU_ARCH)
|
||||
GNU_TARGET_INCLUDE_DIR =
|
||||
21
configure/os/CONFIG.Common.eldk53-ppc4xxFP
Normal file
21
configure/os/CONFIG.Common.eldk53-ppc4xxFP
Normal file
@@ -0,0 +1,21 @@
|
||||
# DeltaTau PowerPMAC with ELDK 5.3
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
ARCH_CLASS = ppc
|
||||
|
||||
SDK = eldk
|
||||
SDK_DIR = /opt/eldk-5.3
|
||||
SDK_HOST_ARCH = $(GNU_HOST_ARCH)-$(SDK)-$(GNU_HOST_OS)
|
||||
GNU_ARCH = ppc440e-linux
|
||||
SDKTARGETSYSROOT=$(SDK_DIR)/powerpc-4xx/sysroots
|
||||
GNU_DIR = $(SDKTARGETSYSROOT)/$(SDK_HOST_ARCH)/usr
|
||||
GNU_BIN = $(GNU_DIR)/bin/$(GNU_ARCH)
|
||||
GNU_TARGET_INCLUDE_DIR =
|
||||
GNU_TARGET=powerpc-linux
|
||||
|
||||
ARCH_DEP_CPPFLAGS = -m32 -mcpu=440fp -mhard-float
|
||||
ARCH_DEP_CPPFLAGS += --sysroot=$(SDKTARGETSYSROOT)/$(GNU_ARCH)
|
||||
ARCH_DEP_LDFLAGS = --sysroot=$(SDKTARGETSYSROOT)/$(GNU_ARCH)
|
||||
AS=$(GNU_BIN)/$(GNU_TARGET)-as
|
||||
23
configure/os/CONFIG.Common.fslqoriq20-e6500_64
Normal file
23
configure/os/CONFIG.Common.fslqoriq20-e6500_64
Normal file
@@ -0,0 +1,23 @@
|
||||
# IOxOS IFC1211 with Freescale QorIQ 2.0 toolchain
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
ARCH_CLASS = ppc
|
||||
|
||||
SDK = fslsdk
|
||||
SDK_DIR = /opt/fsl-qoriq/2.0
|
||||
SDK_HOST_ARCH = $(GNU_HOST_ARCH_64)-$(SDK)-$(GNU_HOST_OS)
|
||||
SDK_TARGET = ppc64e6500-fsl-linux
|
||||
GNU_TARGET = powerpc64-fsl-linux
|
||||
SDKTARGETSYSROOT = $(SDK_DIR)/sysroots/$(SDK_TARGET)
|
||||
GNU_DIR = $(SDK_DIR)/sysroots/$(SDK_HOST_ARCH)/usr
|
||||
GNU_BIN = $(GNU_DIR)/bin/$(GNU_TARGET)
|
||||
|
||||
ARCH_DEP_CPPFLAGS = --sysroot=$(SDKTARGETSYSROOT)
|
||||
ARCH_DEP_CFLAGS = -mcpu=e6500 -m64 -mhard-float
|
||||
ARCH_DEP_LDFLAGS = --sysroot=$(SDKTARGETSYSROOT)
|
||||
|
||||
# warning -O2 and higher are broken!
|
||||
#OPT_CFLAGS_YES = -O1
|
||||
#OPT_CXXFLAGS_YES = -O1
|
||||
5
configure/os/CONFIG.Common.linux-clang
Normal file
5
configure/os/CONFIG.Common.linux-clang
Normal file
@@ -0,0 +1,5 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
GNU = NO
|
||||
CMPLR_CLASS = clang
|
||||
CC = clang
|
||||
CCC = clang++
|
||||
16
configure/os/CONFIG.Common.moxa42-armv6l
Normal file
16
configure/os/CONFIG.Common.moxa42-armv6l
Normal file
@@ -0,0 +1,16 @@
|
||||
# Moxa DA-66x with SDK 4.2 and ARM7 processor
|
||||
|
||||
# Include definitions common to all Linux ARM targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-arm
|
||||
|
||||
GNU_DIR=/afs/psi.ch/project/embeddedlinux/moxa/arm-linux-4.4.2-v4
|
||||
GNU_TARGET=arm
|
||||
ARCH_DEP_LDFLAGS+=-Wl,-rpath-link,$(GNU_DIR)/arm-none-linux-gnueabi/lib
|
||||
ARCH_DEP_LDFLAGS+=-Wl,-rpath-link,$(INSTALL_LIB)
|
||||
|
||||
COMMANDLINE_LIBRARY = READLINE_NCURSES
|
||||
|
||||
# suppress note "the mangling of 'va_list' has changed in GCC 4.4"
|
||||
ARCH_DEP_CXXFLAGS += -Wno-psabi
|
||||
|
||||
ARCH_DEP_CFLAGS += -funwind-tables
|
||||
15
configure/os/CONFIG.Common.mvl40-xscale_be
Normal file
15
configure/os/CONFIG.Common.mvl40-xscale_be
Normal file
@@ -0,0 +1,15 @@
|
||||
# Moxa DA-66x with Montavista Linux 4.0
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
COMMANDLINE_LIBRARY = READLINE_CURSES
|
||||
|
||||
ARCH_CLASS = xscale
|
||||
|
||||
GNU_DIR=/afs/psi.ch/project/embeddedlinux/moxa/xscale_be/armv5teb-montavista-linuxeabi
|
||||
|
||||
ARCH_DEP_CFLAGS += -funwind-tables
|
||||
|
||||
# Cannot build PVA because of missing boost support
|
||||
SKIP_BUILDS = pv% normativeTypes
|
||||
18
configure/os/CONFIG.Common.nilrt7-armv7a
Normal file
18
configure/os/CONFIG.Common.nilrt7-armv7a
Normal file
@@ -0,0 +1,18 @@
|
||||
# National Instruments CompactRIO running LabView RT 19.5.1
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
ARCH_CLASS = arm
|
||||
|
||||
GNU_TARGET = arm-linux-gnu
|
||||
|
||||
SYSROOT = /opt/LabVIEW-RT-19.5.1/arm/sysroots/armv7a-vfp-neon-nilrt-linux-gnueabi
|
||||
|
||||
ARCH_DEP_CPPFLAGS += -march=armv7-a -mthumb-interwork -mfloat-abi=softfp -mfpu=neon
|
||||
ARCH_DEP_CPPFLAGS += --sysroot=$(SYSROOT)
|
||||
ARCH_DEP_CPPFLAGS += -I$(SYSROOT)/usr/include/c++/4.7.2/arm-nilrt-linux-gnueabi/
|
||||
ARCH_DEP_CPPFLAGS += -I$(SYSROOT)/usr/include/c++/4.7.2/
|
||||
ARCH_DEP_LDFLAGS += --sysroot=$(SYSROOT)
|
||||
|
||||
COMMANDLINE_LIBRARY = READLINE_NCURSES
|
||||
41
configure/os/CONFIG.Common.raspbian-arm
Normal file
41
configure/os/CONFIG.Common.raspbian-arm
Normal file
@@ -0,0 +1,41 @@
|
||||
# RaspberryPi with github.com/raspberrypi/tools toolchain
|
||||
# Tested on:
|
||||
# * Raspberry 3B+ Raspbian 9
|
||||
# * Raspberry 2 Raspbian 7
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
# Using readline:
|
||||
# Due to missing/messed up libs in the toolchain, readline needs copies of
|
||||
# libtinfo.so.5.9 and libreadline.so.6.2 from a Raspbian 7 rootfs
|
||||
# /lib/arm-linux-gnueabihf/ to the toolchain, e.g.
|
||||
# $(SDK_DIR)/gcc-linaro-arm-linux-gnueabihf-raspbian/arm-linux-gnueabihf/libc/lib/arm-linux-gnueabihf/
|
||||
# and manually created links libtinfo.so.5 and libreadline.so.
|
||||
# For gcc-linaro-arm-linux-gnueabihf-raspbian, an existing incompatible
|
||||
# libtinfo.so.5 is in the way. Remove it.
|
||||
# (Built with glibc 2.16 like installed on Raspbian 9 but toolchain uses glibc 2.13.)
|
||||
# Also copy /usr/include/readline/ directory from some readline 6 installation
|
||||
# to $(SDK_DIR)/gcc-linaro-arm-linux-gnueabihf-raspbian/arm-linux-gnueabihf/libc/usr/include/
|
||||
|
||||
ARCH_CLASS = arm
|
||||
|
||||
SDK_DIR = /opt/raspberrypi/arm-bcm2708
|
||||
|
||||
# Available SDK_TARGETs:
|
||||
|
||||
# gcc 4.8.3 for 32 bit hosts with GLIBC 2.3 or higher
|
||||
SDK_TARGET = gcc-linaro-arm-linux-gnueabihf-raspbian
|
||||
|
||||
# gcc 4.8.3 for 64 bit hosts with GLIBC 2.14 or higher
|
||||
# SDK_TARGET = gcc-linaro-arm-linux-gnueabihf-raspbian-x64
|
||||
|
||||
# gcc 4.7.1 for 64 bit hosts with GLIBC 2.8 or higher
|
||||
# SDK_TARGET = arm-linux-gnueabihf
|
||||
|
||||
# gcc 4.7.1 for 32 bit hosts with GLIBC 2.4 or higher
|
||||
# SDK_TARGET = arm-bcm2708hardfp-linux-gnueabi
|
||||
# SDK_TARGET = arm-bcm2708-linux-gnueabi
|
||||
|
||||
GNU_DIR = $(SDK_DIR)/$(SDK_TARGET)
|
||||
GNU_TARGET = $(if $(filter arm-bcm2708%,SDK_TARGET),$(SDK_TARGET),arm-linux-gnueabihf)
|
||||
@@ -14,6 +14,7 @@ ARCH_CLASS = ppc
|
||||
|
||||
# Architecture specific build flags
|
||||
ARCH_DEP_CPPFLAGS = -DCPU=PPC32
|
||||
ARCH_DEP_CPPFLAGS = -DCPU=PPC604
|
||||
ARCH_DEP_CFLAGS = -mstrict-align
|
||||
|
||||
GNU_TARGET = powerpc-wrs-vxworks
|
||||
|
||||
@@ -13,7 +13,7 @@ CMPLR_SUFFIX = ppc
|
||||
ARCH_CLASS = ppc
|
||||
|
||||
# Architecture specific build flags
|
||||
ARCH_DEP_CPPFLAGS = -DCPU=PPC603
|
||||
ARCH_DEP_CPPFLAGS = -DCPU=PPC603
|
||||
ARCH_DEP_CFLAGS = -mcpu=603 -mstrict-align
|
||||
|
||||
GNU_TARGET = powerpc-wrs-vxworks
|
||||
|
||||
@@ -14,9 +14,12 @@ ARCH_CLASS = ppc
|
||||
|
||||
# Architecture specific build flags
|
||||
ARCH_DEP_CPPFLAGS = -DCPU=PPC604
|
||||
ARCH_DEP_CFLAGS_2 = -mcpu=604 -mstrict-align -mno-implicit-fp
|
||||
ARCH_DEP_CFLAGS_3 = -mcpu=604 -mstrict-align -mno-implicit-fp
|
||||
ARCH_DEP_CFLAGS_4 = -mcpu=604 -mstrict-align -fno-implicit-fp
|
||||
ARCH_DEP_CFLAGS = $(ARCH_DEP_CFLAGS_$(VX_GNU_MAJOR_VERSION))
|
||||
ARCH_DEP_CFLAGS = -mcpu=604 -mstrict-align
|
||||
|
||||
CODE_CFLAGS_2 = -mno-implicit-fp
|
||||
CODE_CFLAGS_3 = -mno-implicit-fp
|
||||
CODE_CFLAGS_4 = -fno-implicit-fp
|
||||
CODE_CFLAGS += $(CODE_CFLAGS_$(VX_GNU_MAJOR_VERSION))
|
||||
|
||||
|
||||
GNU_TARGET = powerpc-wrs-vxworks
|
||||
|
||||
@@ -30,7 +30,7 @@ ARCH_DEP_LDFLAGS += -m32
|
||||
# Compiler does not define __unix __unix__ unix
|
||||
|
||||
# Override for -DUNIX from CONFIG.Common.UnixCommon
|
||||
OP_SYS_CPPFLAGS = -D_MINGW
|
||||
OP_SYS_CPPFLAGS = -D_MINGW -D__USE_MINGW_ANSI_STDIO
|
||||
|
||||
EXE = .exe
|
||||
RES = .coff
|
||||
|
||||
18
configure/os/CONFIG.Common.yocto21-aarch64
Normal file
18
configure/os/CONFIG.Common.yocto21-aarch64
Normal file
@@ -0,0 +1,18 @@
|
||||
# XILINX Zynq with Yocto 2.1 / Petalinux toolchain
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
ARCH_CLASS = arm64
|
||||
|
||||
SDK = petalinux
|
||||
SDK_DIR = /opt/petalinux-gfa/2017.2
|
||||
SDK_HOST_ARCH = $(GNU_HOST_ARCH_64)-$(SDK)-$(GNU_HOST_OS)
|
||||
SDK_TARGET = aarch64-xilinx-linux
|
||||
GNU_TARGET = $(SDK_TARGET)
|
||||
SDKTARGETSYSROOT = $(SDK_DIR)/sysroots/$(SDK_TARGET)
|
||||
GNU_DIR = $(SDK_DIR)/sysroots/$(SDK_HOST_ARCH)/usr
|
||||
GNU_BIN = $(GNU_DIR)/bin/$(GNU_TARGET)
|
||||
|
||||
ARCH_DEP_CPPFLAGS = --sysroot=$(SDKTARGETSYSROOT)
|
||||
ARCH_DEP_LDFLAGS = --sysroot=$(SDKTARGETSYSROOT)
|
||||
3
configure/os/CONFIG.RHEL7-x86_64.Common
Normal file
3
configure/os/CONFIG.RHEL7-x86_64.Common
Normal file
@@ -0,0 +1,3 @@
|
||||
#CONFIG.$(EPICS_HOST_ARCH).Common is required by build system
|
||||
#Include definitions common to linux hosts
|
||||
include $(CONFIG)/os/CONFIG.linux-x86_64.Common
|
||||
2
configure/os/CONFIG.RHEL7-x86_64.RHEL7-x86_64
Normal file
2
configure/os/CONFIG.RHEL7-x86_64.RHEL7-x86_64
Normal file
@@ -0,0 +1,2 @@
|
||||
# Include common linux definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
16
configure/os/CONFIG.RHEL7-x86_64.SL6-x86
Normal file
16
configure/os/CONFIG.RHEL7-x86_64.SL6-x86
Normal file
@@ -0,0 +1,16 @@
|
||||
# "cross compile" for older Linux version
|
||||
# Use older compiler and older libraries
|
||||
# Used packages:
|
||||
# compat-gcc-44-c++-4.4.7
|
||||
# compat-gcc-44-4.4.7
|
||||
# compat-glibc-headers-2.12
|
||||
# It was neccessary to install 32 bit compatibility libraries manually
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
CC = $(GNU_BIN)/$(CMPLR_PREFIX)gcc44
|
||||
CCC = $(GNU_BIN)/$(CMPLR_PREFIX)g++44
|
||||
|
||||
TARGET_CPPFLAGS = -isystem /usr/lib/x86_64-redhat-linux6E/include
|
||||
TARGET_LDFLAGS = -B /usr/lib/x86_64-redhat-linux6E/lib
|
||||
LINK.cpp += --as-needed -lc -lm -lrt -lpthread -lreadline -ltinfo
|
||||
16
configure/os/CONFIG.RHEL7-x86_64.SL6-x86_64
Normal file
16
configure/os/CONFIG.RHEL7-x86_64.SL6-x86_64
Normal file
@@ -0,0 +1,16 @@
|
||||
# "cross compile" for older Linux version
|
||||
# Use older compiler and older libraries
|
||||
# Used packages:
|
||||
# compat-gcc-44-c++-4.4.7
|
||||
# compat-gcc-44-4.4.7
|
||||
# compat-glibc-headers-2.12
|
||||
# compat-glibc-2.12
|
||||
#-------------------------------------------------------
|
||||
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
CC = $(GNU_BIN)/$(CMPLR_PREFIX)gcc44
|
||||
CCC = $(GNU_BIN)/$(CMPLR_PREFIX)g++44
|
||||
|
||||
TARGET_CPPFLAGS = -isystem /usr/lib/x86_64-redhat-linux6E/include
|
||||
TARGET_LDFLAGS = -B /usr/lib/x86_64-redhat-linux6E/lib64
|
||||
LINK.cpp += --as-needed -lc -lm -lrt -lpthread -lreadline -ltinfo
|
||||
8
configure/os/CONFIG.RHEL7-x86_64.win32-x86
Normal file
8
configure/os/CONFIG.RHEL7-x86_64.win32-x86
Normal file
@@ -0,0 +1,8 @@
|
||||
include $(CONFIG)/os/CONFIG.win32-x86.win32-x86
|
||||
|
||||
PATH_FILTER = $(subst /,/,$(1))
|
||||
|
||||
# Silence the tr1 namespace deprecation warnings
|
||||
USR_CXXFLAGS_WIN32 += -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
|
||||
|
||||
MSVC_DIR = /opt/wine-msvc-2017/bin/x86/
|
||||
8
configure/os/CONFIG.RHEL7-x86_64.windows-x64
Normal file
8
configure/os/CONFIG.RHEL7-x86_64.windows-x64
Normal file
@@ -0,0 +1,8 @@
|
||||
include $(CONFIG)/os/CONFIG.windows-x64.windows-x64
|
||||
|
||||
PATH_FILTER = $(subst /,/,$(1))
|
||||
|
||||
# Silence the tr1 namespace deprecation warnings
|
||||
USR_CXXFLAGS_WIN32 += -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
|
||||
|
||||
MSVC_DIR = /opt/wine-msvc-2017/bin/x64/
|
||||
3
configure/os/CONFIG.SL5-x86.Common
Normal file
3
configure/os/CONFIG.SL5-x86.Common
Normal file
@@ -0,0 +1,3 @@
|
||||
#CONFIG.$(EPICS_HOST_ARCH).Common is required by build system
|
||||
#Include definitions common to linux hosts
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.Common
|
||||
2
configure/os/CONFIG.SL5-x86.SL5-x86
Normal file
2
configure/os/CONFIG.SL5-x86.SL5-x86
Normal file
@@ -0,0 +1,2 @@
|
||||
# Include common linux definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
3
configure/os/CONFIG.SL5-x86_64.Common
Normal file
3
configure/os/CONFIG.SL5-x86_64.Common
Normal file
@@ -0,0 +1,3 @@
|
||||
#CONFIG.$(EPICS_HOST_ARCH).Common is required by build system
|
||||
#Include definitions common to linux hosts
|
||||
include $(CONFIG)/os/CONFIG.linux-x86_64.Common
|
||||
2
configure/os/CONFIG.SL5-x86_64.SL5-x86_64
Normal file
2
configure/os/CONFIG.SL5-x86_64.SL5-x86_64
Normal file
@@ -0,0 +1,2 @@
|
||||
# Include common linux definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
2
configure/os/CONFIG.SL6-x86.Common
Normal file
2
configure/os/CONFIG.SL6-x86.Common
Normal file
@@ -0,0 +1,2 @@
|
||||
#CONFIG.$(EPICS_HOST_ARCH).Common is required by build system
|
||||
#Include definitions common to linux hosts
|
||||
2
configure/os/CONFIG.SL6-x86.SL6-x86
Normal file
2
configure/os/CONFIG.SL6-x86.SL6-x86
Normal file
@@ -0,0 +1,2 @@
|
||||
# Include common linux definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
3
configure/os/CONFIG.SL6-x86_64.Common
Normal file
3
configure/os/CONFIG.SL6-x86_64.Common
Normal file
@@ -0,0 +1,3 @@
|
||||
#CONFIG.$(EPICS_HOST_ARCH).Common is required by build system
|
||||
#Include definitions common to linux hosts
|
||||
include $(CONFIG)/os/CONFIG.linux-x86_64.Common
|
||||
2
configure/os/CONFIG.SL6-x86_64.SL6-x86
Normal file
2
configure/os/CONFIG.SL6-x86_64.SL6-x86
Normal file
@@ -0,0 +1,2 @@
|
||||
# Include common linux definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
2
configure/os/CONFIG.SL6-x86_64.SL6-x86_64
Normal file
2
configure/os/CONFIG.SL6-x86_64.SL6-x86_64
Normal file
@@ -0,0 +1,2 @@
|
||||
# Include common linux definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
@@ -11,6 +11,7 @@ RM = rm -f
|
||||
MKDIR = mkdir -p
|
||||
RMDIR = rm -rf
|
||||
CAT = cat
|
||||
TOUCH = touch
|
||||
|
||||
# Allow site overrides
|
||||
-include $(CONFIG)/os/CONFIG_SITE.UnixCommon.Common
|
||||
|
||||
@@ -21,4 +21,4 @@ LOADABLE_SHRLIB_LDFLAGS = -shared \
|
||||
GNU_LDLIBS_YES =
|
||||
|
||||
# Link with system libraries
|
||||
OP_SYS_LDLIBS = -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm -ldbghelp
|
||||
OP_SYS_LDLIBS = -lpsapi -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm -ldbghelp
|
||||
|
||||
@@ -4,21 +4,5 @@
|
||||
# Override these definitions in CONFIG_SITE.linux-x86.windows-x64-mingw
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Include common gnu compiler definitions
|
||||
include $(CONFIG)/CONFIG.gnuCommon
|
||||
|
||||
# Add resource compiler
|
||||
RCCMD = $(GNU_BIN)/$(CMPLR_PREFIX)windres$(CMPLR_SUFFIX) $(INCLUDES) $< $@
|
||||
|
||||
# Remove -fPIC flags, add out-implib
|
||||
SHRLIB_CFLAGS =
|
||||
SHRLIB_LDFLAGS = -shared \
|
||||
-Wl,--out-implib,$(DLLSTUB_PREFIX)$*$(DLLSTUB_SUFFIX)
|
||||
LOADABLE_SHRLIB_LDFLAGS = -shared \
|
||||
-Wl,--out-implib,$(DLLSTUB_PREFIX)$*$(DLLSTUB_SUFFIX)
|
||||
|
||||
# No need to explicitly link with gcc library
|
||||
GNU_LDLIBS_YES =
|
||||
|
||||
# Link with winsock2
|
||||
OP_SYS_LDLIBS = -lws2_32
|
||||
# Use the definitions from the win32-x86-mingw target
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.win32-x86-mingw
|
||||
|
||||
@@ -32,4 +32,4 @@ LOADABLE_SHRLIB_LDFLAGS = -shared \
|
||||
GNU_LDLIBS_YES =
|
||||
|
||||
# Link with system libraries
|
||||
OP_SYS_LDLIBS = -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm -ldbghelp
|
||||
OP_SYS_LDLIBS = -lpsapi -lws2_32 -ladvapi32 -luser32 -lkernel32 -lwinmm -ldbghelp
|
||||
|
||||
@@ -11,6 +11,7 @@ MKDIR = $(PERL) -MExtUtils::Command -e mkpath
|
||||
RMDIR = $(PERL) -MExtUtils::Command -e rm_rf
|
||||
NOP = $(PERL) -e ''
|
||||
CAT = $(PERL) -MExtUtils::Command -e cat
|
||||
TOUCH = $(PERL) -MExtUtils::Command -e touch
|
||||
|
||||
WIND_HOST_TYPE = x86-win32
|
||||
OSITHREAD_USE_DEFAULT_STACK = NO
|
||||
|
||||
@@ -14,15 +14,15 @@ OPT_WHOLE_PROGRAM = YES
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
WINLINK = link
|
||||
WINLINK = $(MSVC_DIR)link
|
||||
|
||||
RCCMD = rc -l 0x409 $(INCLUDES) -fo $@ $<
|
||||
RCCMD = $(MSVC_DIR)rc -l 0x409 $(INCLUDES) -fo $@ $<
|
||||
|
||||
ARCMD = lib -nologo -verbose -out:$@ $(LIB_OPT_LDFLAGS) $(LIBRARY_LD_OBJS)
|
||||
ARCMD = $(MSVC_DIR)lib -nologo -verbose -out:$@ $(LIB_OPT_LDFLAGS) $(LIBRARY_LD_OBJS)
|
||||
|
||||
#
|
||||
# Configure OS vendor C compiler
|
||||
CC = cl
|
||||
CC = $(MSVC_DIR)cl
|
||||
|
||||
# Override CONFIG.gnuCommon settings for cross builds.
|
||||
GNU = NO
|
||||
@@ -75,14 +75,14 @@ STATIC_CFLAGS_YES= -MT$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS)
|
||||
STATIC_CFLAGS_NO= -MD$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS) -DEPICS_CALL_DLL
|
||||
|
||||
# OS vendor c preprocessor
|
||||
CPP = cl -nologo -C -E
|
||||
CPP = $(MSVC_DIR)cl -nologo -C -E
|
||||
|
||||
# Configure OS vendor C++ compiler
|
||||
#
|
||||
# -EHsc - generate code for exceptions
|
||||
# -GR - generate code for run time type identification
|
||||
#
|
||||
CCC = cl -EHsc -GR
|
||||
CCC = $(MSVC_DIR)cl -EHsc -GR
|
||||
|
||||
# Other compiler flags, used for CPP, C and C++
|
||||
#
|
||||
|
||||
2
configure/os/CONFIG_SITE.Common.UnixCommon
Normal file
2
configure/os/CONFIG_SITE.Common.UnixCommon
Normal file
@@ -0,0 +1,2 @@
|
||||
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||
LOADABLE_SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||
@@ -9,3 +9,6 @@
|
||||
# loaded into RAM when the binary is loaded.
|
||||
OPT_CFLAGS_YES += -g
|
||||
OPT_CXXFLAGS_YES += -g
|
||||
|
||||
COMMANDLINE_LIBRARY = READLINE
|
||||
CODE_CPPFLAGS += -fno-strict-aliasing
|
||||
|
||||
@@ -2,24 +2,81 @@
|
||||
#
|
||||
# Site specific definitions for vxWorks target builds.
|
||||
|
||||
# Compiler options can vary with the vxWorks version number, so we
|
||||
# need to know that. Do not include any third-level digits.
|
||||
#### Fixes for CONFIG.Common.vxWorksCommon #######
|
||||
|
||||
# Note: vxWorks 5.4.x and 5.5.x (Tornado 2.x) are not supported.
|
||||
# VxWorks 6.0 through 6.5 use older, untested versions of GCC.
|
||||
|
||||
#VXWORKS_VERSION = 6.6
|
||||
#VXWORKS_VERSION = 6.7
|
||||
#VXWORKS_VERSION = 6.8
|
||||
VXWORKS_VERSION = 6.9
|
||||
VX_GNU_VERSION_7 = 4.8.1.11
|
||||
|
||||
|
||||
# Sites may override the following path for a particular host
|
||||
# architecture by adding it to an appropriate
|
||||
# CONFIG_SITE.$(EPICS_HOST_ARCH).vxWorksCommon file.
|
||||
# These are needed for vxWorks 6.x; the GNU toolset version number
|
||||
# is in the path to the compiler tools:
|
||||
VX_GNU_VERSION_5 = 2.96
|
||||
VX_GNU_VERSION_6 = $(VX_GNU_VERSION_$(VXWORKS_VERSION))
|
||||
VX_GNU_VERSION = $(VX_GNU_VERSION_$(VXWORKS_MAJOR_VERSION))
|
||||
VX_GNU_MAJOR_VERSION = $(firstword $(subst ., ,$(VX_GNU_VERSION)))
|
||||
VX_GNU_MINOR_VERSION = $(word 2,$(subst ., ,$(VX_GNU_VERSION)))
|
||||
|
||||
# gcc version before 3.4 are "old" and need special treatment
|
||||
VX_OLD_GCC_2 = OLD
|
||||
VX_OLD_GCC_3.3 = OLD
|
||||
VX_OLD_GCC_3 = $(VX_OLD_GCC_3.$(VX_GNU_MINOR_VERSION))
|
||||
VX_OLD_GCC = $(VX_OLD_GCC_$(VX_GNU_MAJOR_VERSION))
|
||||
|
||||
# vxWorks directory definitions
|
||||
VX_DIR_5 = $(WIND_BASE)
|
||||
VX_DIR_6 = $(WIND_BASE)/vxworks-$(VXWORKS_VERSION)
|
||||
VX_DIR_7 = $(WIND_BASE)/vxworks-$(VXWORKS_VERSION)/pkgs/os
|
||||
VX_DIR = $(VX_DIR_$(VXWORKS_MAJOR_VERSION))
|
||||
|
||||
VX_INCLUDE_DIRS_5 = $(VX_DIR)/target/h
|
||||
VX_INCLUDE_DIRS_6 = $(VX_DIR)/target/h
|
||||
VX_INCLUDE_DIRS_6 += $(VX_DIR)/target/h/wrn/coreip
|
||||
VX_INCLUDE_DIRS_7 = $(VX_DIR)/core/kernel-1.2.8.0/h
|
||||
VX_INCLUDE_DIRS_7 += $(VX_DIR)/lang-lib/libc-1.0.0.1/libc-kernel-1.0.8.0/h
|
||||
VX_INCLUDE_DIRS_7 += $(VX_DIR)/utils/ostools-1.0.5.0/h
|
||||
VX_INCLUDE_DIRS_7 += $(VX_DIR)/utils/ostools-1.0.5.0/shareh
|
||||
VX_INCLUDE_DIRS_7 += $(VX_DIR)/arch/ppc-1.3.4.0/kernel/base/h/
|
||||
VX_INCLUDE_DIRS_7 += $(VX_DIR)/arch/ppc-1.3.4.0/kernel/60x/h/arch/ppc/
|
||||
VX_INCLUDE_DIRS_7 += $(WIND_BASE)/vxworks-$(VXWORKS_VERSION)/samples/prebuilt_projects/vsb_vxsim_linux/krnl/h/public
|
||||
GNU_TARGET_INCLUDE_DIR = $(VX_INCLUDE_DIRS_$(VXWORKS_MAJOR_VERSION))
|
||||
|
||||
TARGET_CPPFLAGS_5 = -isystem $(VX_DIR)/target/h
|
||||
TARGET_CPPFLAGS_6 = -isystem $(VX_DIR)/target/h
|
||||
TARGET_CPPFLAGS_7 = -isystem $(VX_DIR)/core/kernel-1.2.8.0/h -D_VSB_CONFIG_FILE='<$(WIND_BASE)/vxworks-$(VXWORKS_VERSION)/samples/prebuilt_projects/vsb_vxsim_linux/h/config/vsbConfig.h>'
|
||||
TARGET_CPPFLAGS = $(TARGET_CPPFLAGS_$(VXWORKS_MAJOR_VERSION))
|
||||
|
||||
# vxWorks GNU directories
|
||||
|
||||
GNU_DIR_5 = $(WIND_BASE)/host/$(WIND_HOST_TYPE)
|
||||
GNU_DIR_6 = $(WIND_BASE)/gnu/$(VX_GNU_VERSION)-vxworks-$(VXWORKS_VERSION)/$(WIND_HOST_TYPE)
|
||||
GNU_DIR_7 = $(WIND_BASE)/compilers/gnu-$(VX_GNU_VERSION)/$(WIND_HOST_TYPE)
|
||||
GNU_DIR = $(GNU_DIR_$(VXWORKS_MAJOR_VERSION))
|
||||
|
||||
# Operating system flags
|
||||
OP_SYS_CFLAGS += -fno-strict-aliasing
|
||||
|
||||
OP_SYS_INCLUDE_CPPFLAGS_5 += -include $(VX_DIR)/target/h/vxWorks.h
|
||||
OP_SYS_INCLUDE_CPPFLAGS_6 += -include $(VX_DIR)/target/h/vxWorks.h
|
||||
OP_SYS_INCLUDE_CPPFLAGS_7 += -include vxWorks.h
|
||||
OP_SYS_INCLUDE_CPPFLAGS = $(OP_SYS_INCLUDE_CPPFLAGS_$(VXWORKS_MAJOR_VERSION))
|
||||
|
||||
# For gcc versions before 3.4 we need this g++ compiler flag
|
||||
# However WindRiver says gcc 3.3 does not need it any more
|
||||
# which would allow to build vxWorks 6 without this flag.
|
||||
# Maybe we can live without it at the penalty of larger code.
|
||||
# See vxWorks 5 docs/gnu2.96+ppc/gcc.html
|
||||
# chapter 4.5 "Where's the Template?"
|
||||
CODE_CXXFLAGS_OLD = -fno-implicit-templates
|
||||
CODE_CXXFLAGS = $(CODE_CXXFLAGS_$(VX_OLD_GCC))
|
||||
|
||||
# WIND_BASE is where you installed the Wind River software.
|
||||
WIND_BASE = /afs/psi.ch/project/vxworks/VxWorks$(VXWORKS_VERSION)
|
||||
|
||||
#--------------------------------------------------
|
||||
# Modules we cannot build with old compiler
|
||||
|
||||
PV_MODULES = pv% normativeTypes
|
||||
SKIP_BUILDS_5 = $(PV_MODULES)
|
||||
SKIP_BUILDS_OLD = $(PV_MODULES)
|
||||
SKIP_BUILDS_6 = $(SKIP_BUILDS_$(VX_OLD_GCC))
|
||||
SKIP_BUILDS = $(SKIP_BUILDS_$(VXWORKS_MAJOR_VERSION))
|
||||
|
||||
#WIND_BASE = /usr/local/vw/tornado22-$(ARCH_CLASS)
|
||||
WIND_BASE = /usr/local/vw/vxWorks-$(VXWORKS_VERSION)
|
||||
#WIND_BASE = /ade/vxWorks/$(VXWORKS_VERSION)
|
||||
|
||||
21
configure/os/CONFIG_SITE.RHEL7-x86_64.Common
Normal file
21
configure/os/CONFIG_SITE.RHEL7-x86_64.Common
Normal file
@@ -0,0 +1,21 @@
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.Common
|
||||
|
||||
# Build 32 bit version as a cross architecture
|
||||
#CROSS_COMPILER_TARGET_ARCHS += RHEL7-x86
|
||||
|
||||
# Improved error checking with clang
|
||||
CROSS_COMPILER_TARGET_ARCHS += RHEL7-x86_64-clang
|
||||
|
||||
# Build for old SL6 64 bit
|
||||
CROSS_COMPILER_TARGET_ARCHS += SL6-x86_64
|
||||
|
||||
# Build for old SL6 32 bit
|
||||
#CROSS_COMPILER_TARGET_ARCHS += SL6-x86
|
||||
|
||||
# WINE MSVC
|
||||
CROSS_COMPILER_TARGET_ARCHS += win32-x86 windows-x64
|
||||
|
||||
# NI Linux Real-Time 7.x
|
||||
# requires RPM gcc-c++-arm-linux-gnu
|
||||
CROSS_COMPILER_TARGET_ARCHS += nilrt7-armv7a
|
||||
|
||||
1
configure/os/CONFIG_SITE.SL5-x86.Common
Normal file
1
configure/os/CONFIG_SITE.SL5-x86.Common
Normal file
@@ -0,0 +1 @@
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86.Common
|
||||
3
configure/os/CONFIG_SITE.SL5-x86_64.Common
Normal file
3
configure/os/CONFIG_SITE.SL5-x86_64.Common
Normal file
@@ -0,0 +1,3 @@
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86.Common
|
||||
# Build 32 bit version as a cross architecture
|
||||
CROSS_COMPILER_TARGET_ARCHS += SL5-x86
|
||||
1
configure/os/CONFIG_SITE.SL6-x86.Common
Normal file
1
configure/os/CONFIG_SITE.SL6-x86.Common
Normal file
@@ -0,0 +1 @@
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86.Common
|
||||
7
configure/os/CONFIG_SITE.SL6-x86_64.Common
Normal file
7
configure/os/CONFIG_SITE.SL6-x86_64.Common
Normal file
@@ -0,0 +1,7 @@
|
||||
# Build 32 bit version as a cross architecture
|
||||
#CROSS_COMPILER_TARGET_ARCHS += SL6-x86
|
||||
|
||||
# Improved error checking with clang
|
||||
#CROSS_COMPILER_TARGET_ARCHS += SL6-x86_64-clang
|
||||
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.Common
|
||||
@@ -1,9 +1,46 @@
|
||||
# CONFIG_SITE.linux-x86.Common
|
||||
#
|
||||
# Site override definitions for linux-x86 host builds
|
||||
#-------------------------------------------------------
|
||||
INSTALL_LOCATION=/usr/local/epics/base-$(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)$(EPICS_PATCH_VSTRING)
|
||||
|
||||
# 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
|
||||
GNU_HOST_ARCH=i686
|
||||
GNU_HOST_OS=linux
|
||||
|
||||
# LD_LIBRARY_PATH may cause problems for eldk53-ppc4xxFP
|
||||
LD_LIBRARY_PATH=
|
||||
|
||||
# vxWorks 5.5 for MVxxxx boards
|
||||
CROSS_COMPILER_TARGET_ARCHS += T2-ppc604
|
||||
|
||||
# vxWorks 6.7 for MVxxxx boards
|
||||
CROSS_COMPILER_TARGET_ARCHS += V67-ppc604
|
||||
|
||||
# vxWorks 6.9 for MVxxxx boards
|
||||
CROSS_COMPILER_TARGET_ARCHS += V69-ppc604
|
||||
CROSS_COMPILER_TARGET_ARCHS += V69-ppc32
|
||||
|
||||
# NI compact RIO
|
||||
CROSS_COMPILER_TARGET_ARCHS += V63-ppc603
|
||||
|
||||
# MOXA montavista linux (No PVA because of missing boost support)
|
||||
CROSS_COMPILER_TARGET_ARCHS += mvl40-xscale_be
|
||||
|
||||
# MOXA SDK 4.2
|
||||
CROSS_COMPILER_TARGET_ARCHS += moxa42-armv6l
|
||||
|
||||
# Virtex embedded PPC
|
||||
CROSS_COMPILER_TARGET_ARCHS += eldk51-ppc4xxSF
|
||||
|
||||
# IOxOS IFC1210
|
||||
CROSS_COMPILER_TARGET_ARCHS += eldk52-e500v2
|
||||
|
||||
# DeltaTau PowerPMAC
|
||||
CROSS_COMPILER_TARGET_ARCHS += eldk42-ppc4xxFP
|
||||
CROSS_COMPILER_TARGET_ARCHS += eldk53-ppc4xxFP
|
||||
|
||||
# Test other vxWorks versions
|
||||
#CROSS_COMPILER_TARGET_ARCHS += V66-ppc603
|
||||
CROSS_COMPILER_TARGET_ARCHS += V66-ppc604
|
||||
#CROSS_COMPILER_TARGET_ARCHS += V63-ppc604
|
||||
# (No PVA because of old compiler)
|
||||
CROSS_COMPILER_TARGET_ARCHS += V62-ppc604
|
||||
|
||||
# Raspberry Pi
|
||||
CROSS_COMPILER_TARGET_ARCHS += raspbian-arm
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
# CONFIG_SITE.linux-x86_64.Common
|
||||
#
|
||||
# Site override definitions for linux-x86_64 host builds
|
||||
#-------------------------------------------------------
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86.Common
|
||||
|
||||
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040 solaris-sparc
|
||||
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040
|
||||
#CROSS_COMPILER_TARGET_ARCHS = RTEMS-mvme2100
|
||||
GNU_HOST_ARCH_64=x86_64
|
||||
|
||||
# IOxOS IFC1211
|
||||
CROSS_COMPILER_TARGET_ARCHS += fslqoriq20-e6500_64
|
||||
|
||||
# Zynq
|
||||
CROSS_COMPILER_TARGET_ARCHS += yocto21-aarch64
|
||||
|
||||
@@ -8,11 +8,201 @@ 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 external PVA submodules each have their own separate set of release notes
|
||||
which should also be read to understand what has changed since an earlier
|
||||
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.
|
||||
|
||||
# EPICS Release 7.0.3.1
|
||||
**This version of EPICS has not been released yet.**
|
||||
|
||||
## Changes made on the 7.0 branch since 7.0.4
|
||||
|
||||
<!-- Insert new items immediately below here ... -->
|
||||
|
||||
|
||||
## EPICS Release 7.0.4
|
||||
|
||||
### Bug fixes
|
||||
|
||||
The following launchpad bugs have fixes included in this release:
|
||||
|
||||
- [lp: 1812084](https://bugs.launchpad.net/bugs/1812084), Build failure on
|
||||
RTEMS 4.10.2
|
||||
- [lp: 1829919](https://bugs.launchpad.net/bugs/1829919), IOC segfaults when
|
||||
calling dbLoadRecords after iocInit
|
||||
- [lp: 1838792](https://bugs.launchpad.net/bugs/1838792), epicsCalc bit-wise
|
||||
operators on aarch64
|
||||
- [lp: 1853148](https://bugs.launchpad.net/bugs/1853148), mingw compiler
|
||||
problem with printf/scanf formats
|
||||
- [lp: 1852653](https://bugs.launchpad.net/bugs/1852653), USE_TYPED_DSET
|
||||
incompatible with C++
|
||||
- [lp: 1862328](https://bugs.launchpad.net/bugs/1862328), Race condition on
|
||||
IOC start leaves rsrv unresponsive
|
||||
- [lp: 1866651](https://bugs.launchpad.net/bugs/1866651), thread joinable race
|
||||
- [lp: 1868486](https://bugs.launchpad.net/bugs/1868486), epicsMessageQueue
|
||||
lost messages
|
||||
- [lp: 1868680](https://bugs.launchpad.net/bugs/1868680), Access Security file
|
||||
reload (asInit) fails
|
||||
|
||||
### \*_API macros in EPICS headers
|
||||
|
||||
Internally, the Com and ca libraries now express dllimport/export (Windows)
|
||||
and symbol visibility (GCC) using library-specific macros (eg. `LIBCOM_API`)
|
||||
instead of the macros `epicsShareFunc`, `epicsShareClass`, `epicsShareDef` etc.
|
||||
that are defined in the `shareLib.h` header.
|
||||
This change may affect some user code which uses the `epicsShare*` macros
|
||||
without having explicitly included the `shareLib.h` header themselves.
|
||||
Such code should be changed to include `shareLib.h` directly.
|
||||
|
||||
A new helper script `makeAPIheader.pl` and build rules to generate a
|
||||
library-specific `*API.h` header file has been added. Run `makeAPIheader.pl -h`
|
||||
for information on how to use this in your own applications, but note that the
|
||||
resulting sources will not be able to be compiled using earlier versions of
|
||||
EPICS Base.
|
||||
|
||||
### IOCsh usage messages
|
||||
|
||||
At the iocShell prompt `help <cmd>` now prints a descriptive usage message
|
||||
for many internal IOCsh commands in addition to the command parameters.
|
||||
Try `help *` to see all commands, or a glob pattern such as `help db*` to see
|
||||
a subset.
|
||||
|
||||
External code may provide usage messages when registering commands using a
|
||||
new `const char *usage` member of the `iocshFuncDef` structure.
|
||||
The `iocsh.h` header also now defines a macro `IOCSHFUNCDEF_HAS_USAGE` which
|
||||
can be used to detect Base versions that support this feature at compile-time.
|
||||
|
||||
### Variable names in RELEASE files
|
||||
|
||||
`configure/RELEASE` files are parsed by both GNUmake and the `convertRelease.pl`
|
||||
script. While GNUmake is quite relaxed about what characters may be used in a
|
||||
RELEASE variable name, the `convertRelease.pl` script parser has only recognized
|
||||
variable names that match the Perl regular expression `\w+`, i.e. upper and
|
||||
lower-case letters, digits and underscore characters.
|
||||
|
||||
The script has been modified so now RELEASE variable names must start with a
|
||||
letter or underscore, and be followed by any number of letters, digits,
|
||||
underscore or hyphen characters, matching the regular expression
|
||||
`[A-Za-z_][A-Za-z_0-9-]*`. The hyphen character `-` was not previously allowed
|
||||
and if used would have prevented a build from finding include files and
|
||||
libraries in any module using that in its RELEASE variable name.
|
||||
|
||||
This change does disallow names that start with a digit which used to be
|
||||
allowed, but hopefully nobody has been relying on that ability. The regular
|
||||
expression used for names can be found in the file `src/tools/EPICS/Release.pm`
|
||||
and can be adjusted locally if necessary.
|
||||
|
||||
### caRepeater /dev/null
|
||||
|
||||
On \*NIX targets caRepeater will now partially daemonize by redirecting
|
||||
stdin/out/err to /dev/null. This prevents caRepeater from inheriting
|
||||
the stdin/out of a process, like caget, which has spawned it in the
|
||||
background. This has been known to cause problems in some cases when
|
||||
caget is itself being run from a shell script.
|
||||
|
||||
caRepeater will now understand the `-v` argument to retain stdin/out/err
|
||||
which may be necessary to see any error messages it may emit.
|
||||
|
||||
### `state` record deprecated
|
||||
|
||||
IOCs now emit a warning when a database file containing the `state` record is
|
||||
loaded. This record has been deprecated for a while and will be removed
|
||||
beginning with EPICS 7.1. Consider using the `stringin` record instead.
|
||||
|
||||
### Record types publish dset's
|
||||
|
||||
The record types in Base now define their device support entry table (DSET)
|
||||
structures in the record header file. While still optional, developers of
|
||||
external support modules are encouraged to start converting their code to use
|
||||
the record's new definitions instead of the traditional approach of copying the
|
||||
structure definitions into each source file that needs them. By following the
|
||||
instructions below it is still possible for the converted code to build and
|
||||
work with older Base releases.
|
||||
|
||||
This would also be a good time to modify the device support to use the type-safe
|
||||
device support entry tables that were introduced in Base-3.16.2 -- see
|
||||
[#type-safe-device-and-driver-support-tables](this entry below) for the
|
||||
description of that change, which is also optional for now.
|
||||
|
||||
Look at the aiRecord for example. Near the top of the generated `aiRecord.h`
|
||||
header file is a new section that declares the `aidset`:
|
||||
|
||||
```C
|
||||
/* Declare Device Support Entry Table */
|
||||
struct aiRecord;
|
||||
typedef struct aidset {
|
||||
dset common;
|
||||
long (*read_ai)(struct aiRecord *prec);
|
||||
long (*special_linconv)(struct aiRecord *prec, int after);
|
||||
} aidset;
|
||||
#define HAS_aidset
|
||||
```
|
||||
|
||||
Notice that the common members (`number`, `report()`, `init()`, `init_record()`
|
||||
and `get_ioint_info()` don't appear directly but are included by embedding the
|
||||
`dset common` member instead. This avoids the need to have separate definitions
|
||||
of those members in each record dset, but does require those members to be
|
||||
wrapped inside another set of braces `{}` when initializing the data structure
|
||||
for the individual device supports. It also requires changes to code that
|
||||
references those common members, but that code usually only appears inside the
|
||||
record type implementation and very rarely in device supports.
|
||||
|
||||
An aiRecord device support that will only be built against this or later
|
||||
versions of EPICS can now declare its dset like this:
|
||||
|
||||
```C
|
||||
aidset devAiSoft = {
|
||||
{ 6, NULL, NULL, init_record, NULL },
|
||||
read_ai, NULL
|
||||
};
|
||||
epicsExportAddress(dset, devAiSoft);
|
||||
```
|
||||
|
||||
However most device support that is not built into EPICS itself will need to
|
||||
remain compatible with older EPICS versions, which is why the ai record's header
|
||||
file also declares the preprocessor macro `HAS_aidset`. This makes it easy to
|
||||
define the `aidset` in the device support code when it's needed, and not when
|
||||
it's provided in the header:
|
||||
|
||||
```C
|
||||
#ifndef HAS_aidset
|
||||
typedef struct aidset {
|
||||
dset common;
|
||||
long (*read_ai)(aiRecord *prec);
|
||||
long (*special_linconv)(aiRecord *prec, int after);
|
||||
} aidset;
|
||||
#endif
|
||||
aidset devAiSoft = {
|
||||
{ 6, NULL, NULL, init_record, NULL },
|
||||
read_ai, NULL
|
||||
};
|
||||
epicsExportAddress(dset, devAiSoft);
|
||||
```
|
||||
|
||||
The above `typedef struct` declaration was copied directly from the new
|
||||
aiRecord.h file and wrapped in the `#ifndef HAS_aidset` conditional.
|
||||
|
||||
This same pattern should be followed for all record types except for the lsi,
|
||||
lso and printf record types, which have published their device support entry
|
||||
table structures since they were first added to Base but didn't previously embed
|
||||
the `dset common` member. Device support for these record types therefore can't
|
||||
use the dset name since the new definitions are different from the originals and
|
||||
will cause a compile error, so this pattern should be used instead:
|
||||
|
||||
```C
|
||||
#ifndef HAS_lsidset
|
||||
struct {
|
||||
dset common;
|
||||
long (*read_string)(lsiRecord *prec);
|
||||
}
|
||||
#else
|
||||
lsidset
|
||||
#endif
|
||||
devLsiEtherIP = {
|
||||
{5, NULL, lsi_init, lsi_init_record, get_ioint_info},
|
||||
lsi_read
|
||||
};
|
||||
```
|
||||
|
||||
## EPICS Release 7.0.3.1
|
||||
|
||||
**IMPORTANT NOTE:** *Some record types in this release will not be compatible
|
||||
with device support binaries compiled against earlier versions of those record
|
||||
@@ -162,7 +352,7 @@ set to their default values.
|
||||
void startitup(void) {
|
||||
epicsThreadOpts opts = EPICS_THREAD_OPTS_INIT;
|
||||
epicsThreadId tid;
|
||||
|
||||
|
||||
opts.priority = epicsThreadPriorityMedium;
|
||||
tid = epicsThreadCreateOpt("my thread", &threadMain, NULL, &opts);
|
||||
}
|
||||
@@ -205,7 +395,7 @@ necessary, all RTEMS targets should now link although the IOC won't be able to
|
||||
be used with the VME I/O on those systems (that we don't have VMEbus I/O
|
||||
support for in libCom).
|
||||
|
||||
# EPICS Release 7.0.3
|
||||
## EPICS Release 7.0.3
|
||||
|
||||
### `epicsTimeGetCurrent()` optimization
|
||||
|
||||
@@ -225,7 +415,7 @@ This may result in slightly fewer, but larger frames being sent.
|
||||
Report NOBT as "precision" through the dbAccess API. This is not accessible
|
||||
through CA, but is planned to be used through QSRV.
|
||||
|
||||
# EPICS Release 7.0.2.2
|
||||
## EPICS Release 7.0.2.2
|
||||
|
||||
### Build System changes
|
||||
|
||||
@@ -259,7 +449,7 @@ substantial than bug fixes.
|
||||
|
||||
Turns out this is ~10x slower to query than `CLOCK_MONOTONIC`.
|
||||
|
||||
# EPICS Release 7.0.2.1
|
||||
## EPICS Release 7.0.2.1
|
||||
|
||||
### Linking shared libraries on macOS
|
||||
|
||||
@@ -310,7 +500,7 @@ rewrite of the link address parser code in dbStaticLib. This release fixes that
|
||||
issue, although in some cases the output may be slightly different than it used
|
||||
to be.
|
||||
|
||||
# EPICS Release 7.0.2
|
||||
## EPICS Release 7.0.2
|
||||
|
||||
### Launchpad Bugs
|
||||
|
||||
@@ -327,7 +517,7 @@ modules. The layout of the source files has not changed at all however, so the
|
||||
source code for libcom, ca and the database are still found separately under
|
||||
the module subdirectory.
|
||||
|
||||
# EPICS Release 7.0.1.1
|
||||
## EPICS Release 7.0.1.1
|
||||
|
||||
### Changed SIML failure behavior
|
||||
|
||||
@@ -629,14 +819,14 @@ number instead, like this:
|
||||
|
||||
```
|
||||
#include <epicsVersion.h>
|
||||
|
||||
|
||||
#ifndef VERSION_INT
|
||||
# define VERSION_INT(V,R,M,P) ( ((V)<<24) | ((R)<<16) | ((M)<<8) | (P))
|
||||
#endif
|
||||
#ifndef EPICS_VERSION_INT
|
||||
# define EPICS_VERSION_INT VERSION_INT(EPICS_VERSION, EPICS_REVISION, EPICS_MODIFICATION, EPICS_PATCH_LEVEL)
|
||||
#endif
|
||||
|
||||
|
||||
#if EPICS_VERSION_INT >= VERSION_INT(3,16,1,0)
|
||||
/* Code where Base has INT64 support */
|
||||
#else
|
||||
@@ -962,7 +1152,7 @@ excerpts from a database file:
|
||||
record(ai, math:pi) {
|
||||
field(INP, {const: 3.14159265358979}) # Correct
|
||||
field(SIOL, "{const: 3.142857}") # Wrong
|
||||
|
||||
|
||||
info(autosave, { # White-space and comments are allowed
|
||||
fields:[DESC, SIMM],
|
||||
pass0:[VAL]
|
||||
@@ -1110,7 +1300,7 @@ this:
|
||||
|
||||
```
|
||||
#include "epicsTime.h"
|
||||
|
||||
|
||||
#ifndef M_time
|
||||
/* S_time_... status values were not provided before Base 3.16 */
|
||||
#define S_time_unsynchronized epicsTimeERROR
|
||||
@@ -1135,9 +1325,123 @@ Added a new macro `callbackGetPriority(prio, callback)` to the callback.h
|
||||
header and removed the need for dbScan.c to reach into the internals of its
|
||||
`CALLBACK` objects.
|
||||
|
||||
## Changes from the 3.15 branch since 3.15.7
|
||||
|
||||
> None.
|
||||
# Changes incorporated from the 3.15 branch
|
||||
|
||||
|
||||
## Changes made on the 3.15 branch since 3.15.8
|
||||
|
||||
### Change to the `junitfiles` self-test build target
|
||||
|
||||
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.)
|
||||
|
||||
|
||||
## Changes made between 3.15.7 and 3.15.8
|
||||
|
||||
### Bug fixes
|
||||
|
||||
The following launchpad bugs have fixes included in this release:
|
||||
|
||||
- [lp: 1812084](https://bugs.launchpad.net/epics-base/+bug/1812084), Build
|
||||
failure on RTEMS 4.10.2
|
||||
- [lp: 1829770](https://bugs.launchpad.net/epics-base/+bug/1829770), event
|
||||
record device support broken with constant INP
|
||||
- [lp: 1829919](https://bugs.launchpad.net/epics-base/+bug/1829919), IOC
|
||||
segfaults when calling dbLoadRecords after iocInit
|
||||
- [lp: 1838792](https://bugs.launchpad.net/epics-base/+bug/1838792), epicsCalc
|
||||
bit-wise operators on aarch64
|
||||
- [lp: 1841608](https://bugs.launchpad.net/epics-base/+bug/1841608), logClient
|
||||
falsely sends error logs on all connections
|
||||
- [lp: 1853168](https://bugs.launchpad.net/epics-base/+bug/1853168), undefined
|
||||
reference to `clock_gettime()`
|
||||
- [lp: 1862328](https://bugs.launchpad.net/epics-base/+bug/1862328), Race
|
||||
condition on IOC start leaves rsrv unresponsive
|
||||
- [lp: 1868486](https://bugs.launchpad.net/epics-base/+bug/1868486),
|
||||
epicsMessageQueue lost messages
|
||||
|
||||
### Improvements to the self-test build targets
|
||||
|
||||
This release contains changes that make it possible to integrate another test
|
||||
running and reporting system (such as Google's gtest) into the EPICS build
|
||||
system. The built-in test-runner and reporting system will continue to be used
|
||||
by the test programs inside Base however.
|
||||
|
||||
These GNUmake `tapfiles` and `test-results` build targets now collect a list of
|
||||
the directories that experienced test failures and display those at the end of
|
||||
running and/or reporting all of the tests. The GNUmake process will also only
|
||||
exit with an error status after running and/or reporting all of the test
|
||||
results; previously the `-k` flag to make was needed and even that didn't always
|
||||
work.
|
||||
|
||||
Continuous Integration systems are recommended to run `make tapfiles` (or if
|
||||
they can read junittest output instead of TAP `make junitfiles`) followed by
|
||||
`make -s test-results` to display the results of the tests. If multiple CPUs are
|
||||
available the `-j` flag can be used to run tests in parallel, giving the maximum
|
||||
jobs that should be allowed so `make -j4 tapfiles` for a system with 4 CPUs say.
|
||||
Running many more jobs than you have CPUs is likely to be slower and is not
|
||||
recommended.
|
||||
|
||||
### Calc Engine Fixes and Enhancements
|
||||
|
||||
The code that implements bit operations for Calc expressions has been reworked
|
||||
to better handle some CPU architectures and compilers. As part of this work a
|
||||
new operator has been added: `>>>` performs a logical right-shift, inserting
|
||||
zero bits into the most significant bits (the operator `>>` is an arithmetic
|
||||
right-shift which copies the sign bit as it shifts the value rightwards).
|
||||
|
||||
### IOC logClient Changes
|
||||
|
||||
The IOC's error logging system has been updated significantly to fix a number
|
||||
of issues including:
|
||||
|
||||
- Only send errlog messages to iocLogClient listeners
|
||||
- Try to minimize lost messages while the log server is down:
|
||||
+ Detect disconnects sooner
|
||||
+ Don't discard the buffer on disconnect
|
||||
+ Flush the buffer immediately after a server reconnects
|
||||
|
||||
### epicsThread: Main thread defaults to allow blocking I/O
|
||||
|
||||
VxWorks IOCs (and potentially RTEMS IOCs running GeSys) have had problems with
|
||||
garbled error messages from dbStaticLib routines for some time — messages
|
||||
printed before `iocInit` were being queued through the errlog thread instead of
|
||||
being output immediately. This has been fixed by initializing the main thread
|
||||
with its `OkToBlock` flag set instead of cleared. IOCs running on other
|
||||
operating systems that use iocsh to execute the startup script previously had
|
||||
that set anyway in iocsh so were not affected, but this change might cause other
|
||||
programs that don't use iocsh to change their behavior slightly if they use
|
||||
`errlogPrintf()`, `epicsPrintf()` or `errPrintf()`.
|
||||
|
||||
### catools: Handle data type changes in camonitor
|
||||
|
||||
The camonitor program didn't properly cope if subscribed to a channel whose data
|
||||
type changed when its IOC was rebooted without restarting the camonitor program.
|
||||
This has now been fixed.
|
||||
|
||||
### More Record Reference Documentation
|
||||
|
||||
The remaining record types have had their reference pages moved from the Wiki,
|
||||
and some new reference pages have been written to cover the analog array and
|
||||
long string input and output record types plus the printf record type, none of
|
||||
which were previously documented. The wiki reference pages covering the fields
|
||||
common to all, input, and output record types have also been added, thanks to
|
||||
Rolf Keitel. The POD conversion scripts have also been improved and they now
|
||||
properly support linking to subsections in a different document, although the
|
||||
POD changes to add the cross-links that appeared in the original wiki pages
|
||||
still needs to be done in most cases.
|
||||
|
||||
### Fix build issues with newer MinGW versions
|
||||
|
||||
The `clock_gettime()` routine is no longer used under MinGW since newer versions
|
||||
don't provide it any more.
|
||||
|
||||
### Fix race for port in RSRV when multiple IOCs start simultaneously
|
||||
|
||||
If multiple IOCs were started at the same time, by systemd say, they could race
|
||||
to obtain the Channel Access TCP port number 5064. This issue has been fixed.
|
||||
|
||||
|
||||
## Changes made between 3.15.6 and 3.15.7
|
||||
|
||||
@@ -1320,8 +1624,8 @@ cases. This fixes
|
||||
Some documentation has been added to the `dbdToHtml.pl` script
|
||||
explaining how Perl POD (Plain Old Documentation) markup can be added to
|
||||
`.dbd` files to generate HTML documentation for the record types. To see
|
||||
these instructions, run `perl bin/<host>/dbdToHtml.pl -H`
|
||||
or `perldoc bin/<host>/dbdToHtml.pl`.
|
||||
these instructions, run `perl bin/<host>/dbdToHtml.pl -H`
|
||||
or `perldoc bin/<host>/dbdToHtml.pl`.
|
||||
|
||||
### Fix problem with numeric soft events
|
||||
|
||||
@@ -1854,4 +2158,3 @@ Simpler versions of the `epicsTime_gmtime()` and `epicsTime_localtime()`
|
||||
routines have been included in the Windows implementations, and a new test
|
||||
program added. The original versions do not report DST status properly. Fixes
|
||||
[Launchpad bug 1528284](https://bugs.launchpad.net/bugs/1528284).
|
||||
|
||||
|
||||
68
documentation/RecordReference.md
Normal file
68
documentation/RecordReference.md
Normal file
@@ -0,0 +1,68 @@
|
||||
# Record Reference Documentation
|
||||
|
||||
The following documentation for the record types and menus include with Base was
|
||||
converted from the old EPICS Wiki pages and updated. This list only includes the
|
||||
record types supplied with Base.
|
||||
|
||||
* [Fields Common to All Record Types](dbCommonRecord.html)
|
||||
* [Fields Common to Input Record Types](dbCommonInput.html)
|
||||
* [Fields Common to Output Record Types](dbCommonOutput.html)
|
||||
|
||||
## Record Types
|
||||
|
||||
* [Analog Array Input Record (aai)](aaiRecord.html)
|
||||
* [Analog Array Output Record (aao)](aaoRecord.html)
|
||||
* [Analog Input Record (ai)](aiRecord.html)
|
||||
* [Analog Output Record (ao)](aoRecord.html)
|
||||
* [Array Subroutine Record (aSub)](aSubRecord.html)
|
||||
* [Binary Input Record (bi)](biRecord.html)
|
||||
* [Binary Output Record (bo)](boRecord.html)
|
||||
* [Calculation Output Record (calcout)](calcoutRecord.html)
|
||||
* [Calculation Record (calc)](calcRecord.html)
|
||||
* [Compression Record (compress)](compressRecord.html)
|
||||
* [Data Fanout Record (dfanout)](dfanoutRecord.html)
|
||||
* [Event Record (event)](eventRecord.html)
|
||||
* [Fanout Record (fanout)](fanoutRecord.html)
|
||||
* [Histogram Record (histogram)](histogramRecord.html)
|
||||
* [64bit Integer Input Record (int64in)](int64inRecord.html)
|
||||
* [64bit Integer Output Record (int64out)](int64outRecord.html)
|
||||
* [Long Input Record (longin)](longinRecord.html)
|
||||
* [Long Output Record (longout)](longoutRecord.html)
|
||||
* [Long String Input Record (lsi)](lsiRecord.html)
|
||||
* [Long String Output Record (lso)](lsoRecord.html)
|
||||
* [Multi-Bit Binary Input Direct Record (mbbiDirect)](mbbiDirectRecord.html)
|
||||
* [Multi-Bit Binary Input Record (mbbi)](mbbiRecord.html)
|
||||
* [Multi-Bit Binary Output Direct Record (mbboDirect)](mbboDirectRecord.html)
|
||||
* [Multi-Bit Binary Output Record (mbbo)](mbboRecord.html)
|
||||
* [Permissive Record (permissive)](permissiveRecord.html)
|
||||
* [Printf Record (prinf)](printfRecord.html)
|
||||
* [Select Record (sel)](selRecord.html)
|
||||
* [Sequence Record (seq)](seqRecord.html)
|
||||
* [State Record (state)](stateRecord.html)
|
||||
* [String Input Record (stringin)](stringinRecord.html)
|
||||
* [String Output Record (stringout)](stringoutRecord.html)
|
||||
* [Sub-Array Record (subArray)](subArrayRecord.html)
|
||||
* [Subroutine Record (sub)](subRecord.html)
|
||||
* [Waveform Record (waveform)](waveformRecord.html)
|
||||
|
||||
## Menu Definitions
|
||||
|
||||
* [Alarm Severity Menu](menuAlarmSevr.html)
|
||||
* [Alarm Status Menu](menuAlarmStat.html)
|
||||
* [Analog Conversions Menu](menuConvert.html)
|
||||
* [Field Type Menu](menuFtype.html)
|
||||
* [Invalid Value Output Action Menu](menuIvoa.html)
|
||||
* [Output Mode Select Menu](menuOmsl.html)
|
||||
* [Scan Menu](menuScan.html)
|
||||
* [Simulation Mode Menu](menuSimm.html)
|
||||
* [Yes/No Menu](menuYesNo.html)
|
||||
|
||||
## Corrections and Updates
|
||||
|
||||
Corrections to these documents can be submitted as patch files to the EPICS core
|
||||
developers, or as merge requests or pull requests to the 7.0 branch of Base.
|
||||
The document sources can be found in the `modules/database/src/std/rec` and
|
||||
`modules/database/src/ioc/db` directories in files with extension `.dbd.pod`.
|
||||
The documentation source format is a combination of the EPICS DBD file format
|
||||
with an extended version of Perl's POD (plain old documentation); run `perldoc
|
||||
pod` for details of POD.
|
||||
@@ -147,17 +147,17 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
<td>Tag the module in Git, using these tag conventions:
|
||||
<ul>
|
||||
<li>
|
||||
<tt>R7.0.3.1-pre<i>n</i></tt>
|
||||
<tt>R7.0.4.1-pre<i>n</i></tt>
|
||||
— pre-release tag
|
||||
</li>
|
||||
<li>
|
||||
<tt>R7.0.3.1-rc<i>n</i></tt>
|
||||
<tt>R7.0.4.1-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.3.1-rc1' R7.0.3.1-rc1
|
||||
git tag -m 'ANJ: Tagged for 7.0.4.1-rc1' R7.0.4.1-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
|
||||
@@ -171,11 +171,11 @@ 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.3.1-rc1 base-7.0.3.1-rc1.tar.gz base-7.0.3.1-rc1/
|
||||
./.tools/make-tar.sh R7.0.4.1-rc1 base-7.0.4.1-rc1.tar.gz base-7.0.4.1-rc1/
|
||||
</tt></blockquote>
|
||||
Create a GPG signature file of the tarfile as follows:
|
||||
<blockquote><tt>
|
||||
gpg --armor --sign --detach-sig base-7.0.3.1-rc1.tar.gz
|
||||
gpg --armor --sign --detach-sig base-7.0.4.1-rc1.tar.gz
|
||||
</tt></blockquote>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -298,7 +298,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.3.1' <module-version>
|
||||
git tag -m 'ANJ: Tag for EPICS 7.0.4.1' <module-version>
|
||||
</tt></blockquote>
|
||||
</li>
|
||||
|
||||
@@ -355,7 +355,7 @@ 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 7.0.3.1' R7.0.3.1
|
||||
git tag -m 'ANJ: Tagged for release' R7.0.4.1
|
||||
</tt></blockquote>
|
||||
<p>Don't push these commits or the new tag to the Launchpad repository
|
||||
yet.</p>
|
||||
@@ -387,11 +387,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.3.1 base-7.0.3.1.tar.gz base-7.0.3.1/
|
||||
./.tools/make-tar.sh R7.0.4.1 ../base-7.0.4.1.tar.gz base-7.0.4.1/
|
||||
</tt></blockquote>
|
||||
Create a GPG signature file of the tarfile as follows:
|
||||
<blockquote><tt>
|
||||
gpg --armor --sign --detach-sig base-7.0.3.1.tar.gz
|
||||
cd ..<br />
|
||||
gpg --armor --sign --detach-sig base-7.0.4.1.tar.gz
|
||||
</tt></blockquote>
|
||||
</td>
|
||||
</tr>
|
||||
@@ -456,7 +457,7 @@ starting at <a href="#ReleaseApproval">Release Approval</a>.</p>
|
||||
<td>Upload the tar file and its <tt>.asc</tt> signature file to the
|
||||
epics-controls web-server.
|
||||
<blockquote><tt>
|
||||
scp base-7.0.3.1.tar.gz base-7.0.3.1.tar.gz.asc epics-controls:download/base<br />
|
||||
scp base-7.0.4.1.tar.gz base-7.0.4.1.tar.gz.asc epics-controls:download/base<br />
|
||||
</tt></blockquote>
|
||||
</td>
|
||||
</tr>
|
||||
|
||||
@@ -37,6 +37,9 @@ pva2pva_DEPEND_DIRS = pvAccess
|
||||
SUBMODULES += example
|
||||
example_DEPEND_DIRS = pva2pva pvaClient
|
||||
|
||||
SUBMODULES += pcas
|
||||
pcas_DEPEND_DIRS = ca
|
||||
|
||||
# Allow sites to add extra submodules
|
||||
-include Makefile.local
|
||||
|
||||
|
||||
@@ -12,4 +12,4 @@ include $(TOP)/configure/CONFIG
|
||||
|
||||
DIRS += src
|
||||
|
||||
include $(TOP)/configure/RULES_TOP
|
||||
include $(TOP)/configure/RULES_DIRS
|
||||
|
||||
@@ -18,7 +18,6 @@
|
||||
|
||||
#include "errlog.h"
|
||||
|
||||
#define epicsExportSharedSymbols
|
||||
#include "iocinf.h"
|
||||
#include "syncGroup.h"
|
||||
#include "oldAccess.h"
|
||||
@@ -83,7 +82,7 @@ int CASG::block (
|
||||
return ECA_TIMEOUT;
|
||||
}
|
||||
|
||||
cur_time = epicsTime::getMonotonic ();
|
||||
cur_time = epicsTime::getCurrent ();
|
||||
|
||||
this->client.flush ( guard );
|
||||
|
||||
@@ -121,7 +120,7 @@ int CASG::block (
|
||||
/*
|
||||
* force a time update
|
||||
*/
|
||||
cur_time = epicsTime::getMonotonic ();
|
||||
cur_time = epicsTime::getCurrent ();
|
||||
|
||||
delay = cur_time - beg_time;
|
||||
}
|
||||
@@ -209,23 +208,23 @@ bool CASG::ioComplete (
|
||||
return this->ioPendingList.count () == 0u;
|
||||
}
|
||||
|
||||
void CASG::put ( epicsGuard < epicsMutex > & guard, chid pChan,
|
||||
void CASG::put ( epicsGuard < epicsMutex > & guard, chid pChan,
|
||||
unsigned type, arrayElementCount count, const void * pValue )
|
||||
{
|
||||
guard.assertIdenticalMutex ( this->client.mutexRef() );
|
||||
sgAutoPtr < syncGroupWriteNotify > pNotify ( guard, *this );
|
||||
pNotify = syncGroupWriteNotify::factory (
|
||||
pNotify = syncGroupWriteNotify::factory (
|
||||
this->freeListWriteOP, *this, & CASG :: recycleWriteNotifyIO, pChan );
|
||||
pNotify->begin ( guard, type, count, pValue );
|
||||
pNotify.release ();
|
||||
}
|
||||
|
||||
void CASG::get ( epicsGuard < epicsMutex > & guard, chid pChan,
|
||||
void CASG::get ( epicsGuard < epicsMutex > & guard, chid pChan,
|
||||
unsigned type, arrayElementCount count, void *pValue )
|
||||
{
|
||||
guard.assertIdenticalMutex ( this->client.mutexRef() );
|
||||
sgAutoPtr < syncGroupReadNotify > pNotify ( guard, *this );
|
||||
pNotify = syncGroupReadNotify::factory (
|
||||
pNotify = syncGroupReadNotify::factory (
|
||||
this->freeListReadOP, *this, & CASG :: recycleReadNotifyIO, pChan, pValue );
|
||||
pNotify->begin ( guard, type, count );
|
||||
pNotify.release ();
|
||||
@@ -242,14 +241,14 @@ void CASG::completionNotify (
|
||||
}
|
||||
}
|
||||
|
||||
void CASG :: recycleReadNotifyIO ( epicsGuard < epicsMutex > & guard,
|
||||
void CASG :: recycleReadNotifyIO ( epicsGuard < epicsMutex > & guard,
|
||||
syncGroupReadNotify & io )
|
||||
{
|
||||
guard.assertIdenticalMutex ( this->client.mutexRef() );
|
||||
this->freeListReadOP.release ( & io );
|
||||
}
|
||||
|
||||
void CASG :: recycleWriteNotifyIO ( epicsGuard < epicsMutex > & guard,
|
||||
void CASG :: recycleWriteNotifyIO ( epicsGuard < epicsMutex > & guard,
|
||||
syncGroupWriteNotify & io )
|
||||
{
|
||||
guard.assertIdenticalMutex ( this->client.mutexRef() );
|
||||
|
||||
@@ -26,7 +26,13 @@ INC += cacIO.h
|
||||
INC += caDiagnostics.h
|
||||
INC += net_convert.h
|
||||
INC += caVersion.h
|
||||
INC += caVersionNum.h
|
||||
|
||||
EXPAND_COMMON += caVersion.h@
|
||||
|
||||
EXPAND_ME += EPICS_CA_MAJOR_VERSION
|
||||
EXPAND_ME += EPICS_CA_MINOR_VERSION
|
||||
EXPAND_ME += EPICS_CA_MAINTENANCE_VERSION
|
||||
EXPAND_ME += EPICS_CA_DEVELOPMENT_FLAG
|
||||
|
||||
LIBSRCS += cac.cpp
|
||||
LIBSRCS += cacChannel.cpp
|
||||
@@ -72,6 +78,10 @@ LIBSRCS += comQueSend.cpp
|
||||
LIBSRCS += comBuf.cpp
|
||||
LIBSRCS += hostNameCache.cpp
|
||||
LIBSRCS += msgForMultiplyDefinedPV.cpp
|
||||
LIBSRCS_vxWorks += templateInstances.cpp
|
||||
|
||||
API_HEADER = libCaAPI.h
|
||||
ca_API = libCa
|
||||
|
||||
LIBRARY=ca
|
||||
|
||||
@@ -117,20 +127,7 @@ ca_test_SYS_LIBS_WIN32 = ws2_32 advapi32 user32
|
||||
|
||||
OBJS_vxWorks += ca_test
|
||||
|
||||
EXPANDVARS += EPICS_CA_MAJOR_VERSION
|
||||
EXPANDVARS += EPICS_CA_MINOR_VERSION
|
||||
EXPANDVARS += EPICS_CA_MAINTENANCE_VERSION
|
||||
EXPANDVARS += EPICS_CA_DEVELOPMENT_FLAG
|
||||
|
||||
EXPANDFLAGS += $(foreach var,$(EXPANDVARS),-D$(var)="$(strip $($(var)))")
|
||||
|
||||
# shared library ABI version.
|
||||
SHRLIB_VERSION = $(EPICS_CA_MAJOR_VERSION).$(EPICS_CA_MINOR_VERSION).$(EPICS_CA_MAINTENANCE_VERSION)
|
||||
|
||||
include $(TOP)/configure/RULES
|
||||
|
||||
|
||||
# Can't use EXPAND as generated headers must appear
|
||||
# in O.Common, but EXPAND emits rules for O.$(T_A)
|
||||
../O.Common/caVersionNum.h: ../caVersionNum.h@
|
||||
$(EXPAND_TOOL) $(EXPANDFLAGS) $($@_EXPANDFLAGS) $< $@
|
||||
|
||||
@@ -5,11 +5,11 @@
|
||||
* Operator of Los Alamos National Laboratory.
|
||||
* EPICS BASE Versions 3.13.7
|
||||
* and higher are distributed subject to a Software License Agreement found
|
||||
* in file LICENSE that is included with this distribution.
|
||||
* in file LICENSE that is included with this distribution.
|
||||
\*************************************************************************/
|
||||
|
||||
#ifndef SearchDest_h
|
||||
#define SearchDest_h
|
||||
#ifndef INC_SearchDest_H
|
||||
#define INC_SearchDest_H
|
||||
|
||||
#include <osiSock.h>
|
||||
#include <epicsTime.h>
|
||||
@@ -28,7 +28,7 @@ struct SearchDest :
|
||||
virtual void notify (
|
||||
const caHdr & msg, const void * pPayload,
|
||||
const osiSockAddr & addr, const epicsTime & ) = 0;
|
||||
virtual void show (
|
||||
virtual void show (
|
||||
epicsGuard < epicsMutex > &, unsigned level ) const = 0;
|
||||
};
|
||||
virtual void searchRequest ( epicsGuard < epicsMutex > &,
|
||||
@@ -36,4 +36,4 @@ struct SearchDest :
|
||||
virtual void show ( epicsGuard < epicsMutex > &, unsigned level ) const = 0;
|
||||
};
|
||||
|
||||
#endif // SearchDest_h
|
||||
#endif // ifndef INC_SearchDest_H
|
||||
|
||||
@@ -3,8 +3,7 @@
|
||||
* National Laboratory.
|
||||
* Copyright (c) 2002 The Regents of the University of California, as
|
||||
* Operator of Los Alamos National Laboratory.
|
||||
* EPICS BASE Versions 3.13.7
|
||||
* and higher are distributed subject to a Software License Agreement found
|
||||
* EPICS BASE is distributed subject to a Software License Agreement found
|
||||
* in file LICENSE that is included with this distribution.
|
||||
\*************************************************************************/
|
||||
|
||||
@@ -40,7 +39,6 @@
|
||||
*/
|
||||
#define CAC_VERSION_GLOBAL
|
||||
|
||||
#define epicsExportSharedSymbols
|
||||
#include "iocinf.h"
|
||||
#include "oldAccess.h"
|
||||
#include "cac.h"
|
||||
@@ -165,13 +163,13 @@ int fetchClientContext ( ca_client_context **ppcac )
|
||||
* ca_task_initialize ()
|
||||
*/
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_task_initialize ( void )
|
||||
int epicsStdCall ca_task_initialize ( void )
|
||||
{
|
||||
return ca_context_create ( ca_disable_preemptive_callback );
|
||||
}
|
||||
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_context_create (
|
||||
int epicsStdCall ca_context_create (
|
||||
ca_preemptive_callback_select premptiveCallbackSelect )
|
||||
{
|
||||
ca_client_context *pcac;
|
||||
@@ -183,19 +181,19 @@ int epicsShareAPI ca_context_create (
|
||||
}
|
||||
|
||||
pcac = ( ca_client_context * ) epicsThreadPrivateGet ( caClientContextId );
|
||||
if ( pcac ) {
|
||||
if ( pcac ) {
|
||||
if ( premptiveCallbackSelect == ca_enable_preemptive_callback &&
|
||||
! pcac->preemptiveCallbakIsEnabled() ) {
|
||||
return ECA_NOTTHREADED;
|
||||
}
|
||||
return ECA_NORMAL;
|
||||
}
|
||||
return ECA_NORMAL;
|
||||
}
|
||||
|
||||
pcac = new ca_client_context (
|
||||
premptiveCallbackSelect == ca_enable_preemptive_callback );
|
||||
if ( ! pcac ) {
|
||||
return ECA_ALLOCMEM;
|
||||
}
|
||||
if ( ! pcac ) {
|
||||
return ECA_ALLOCMEM;
|
||||
}
|
||||
|
||||
epicsThreadPrivateSet ( caClientContextId, (void *) pcac );
|
||||
}
|
||||
@@ -211,7 +209,7 @@ int epicsShareAPI ca_context_create (
|
||||
// defunct
|
||||
//
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_modify_host_name ( const char * )
|
||||
int epicsStdCall ca_modify_host_name ( const char * )
|
||||
{
|
||||
return ECA_NORMAL;
|
||||
}
|
||||
@@ -222,7 +220,7 @@ int epicsShareAPI ca_modify_host_name ( const char * )
|
||||
// defunct
|
||||
//
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_modify_user_name ( const char * )
|
||||
int epicsStdCall ca_modify_user_name ( const char * )
|
||||
{
|
||||
return ECA_NORMAL;
|
||||
}
|
||||
@@ -231,7 +229,7 @@ int epicsShareAPI ca_modify_user_name ( const char * )
|
||||
// ca_context_destroy ()
|
||||
//
|
||||
// extern "C"
|
||||
void epicsShareAPI ca_context_destroy ()
|
||||
void epicsStdCall ca_context_destroy ()
|
||||
{
|
||||
ca_client_context *pcac;
|
||||
|
||||
@@ -250,7 +248,7 @@ void epicsShareAPI ca_context_destroy ()
|
||||
* releases all resources alloc to a channel access client
|
||||
*/
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_task_exit ()
|
||||
int epicsStdCall ca_task_exit ()
|
||||
{
|
||||
ca_context_destroy ();
|
||||
return ECA_NORMAL;
|
||||
@@ -263,7 +261,7 @@ int epicsShareAPI ca_task_exit ()
|
||||
* backwards compatible entry point to ca_search_and_connect()
|
||||
*/
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_build_and_connect ( const char *name_str, chtype get_type,
|
||||
int epicsStdCall ca_build_and_connect ( const char *name_str, chtype get_type,
|
||||
arrayElementCount get_count, chid * chan, void *pvalue,
|
||||
caCh *conn_func, void *puser )
|
||||
{
|
||||
@@ -278,7 +276,7 @@ int epicsShareAPI ca_build_and_connect ( const char *name_str, chtype get_type,
|
||||
* ca_search_and_connect()
|
||||
*/
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_search_and_connect (
|
||||
int epicsStdCall ca_search_and_connect (
|
||||
const char * name_str, chid * chanptr,
|
||||
caCh * conn_func, void * puser )
|
||||
{
|
||||
@@ -287,7 +285,7 @@ int epicsShareAPI ca_search_and_connect (
|
||||
}
|
||||
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_create_channel (
|
||||
int epicsStdCall ca_create_channel (
|
||||
const char * name_str, caCh * conn_func, void * puser,
|
||||
capri priority, chid * chanptr )
|
||||
{
|
||||
@@ -362,7 +360,7 @@ int epicsShareAPI ca_create_channel (
|
||||
* its context
|
||||
*/
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_clear_channel ( chid pChan )
|
||||
int epicsStdCall ca_clear_channel ( chid pChan )
|
||||
{
|
||||
ca_client_context & cac = pChan->getClientCtx ();
|
||||
{
|
||||
@@ -401,7 +399,7 @@ int epicsShareAPI ca_clear_channel ( chid pChan )
|
||||
* Specify an event subroutine to be run for asynch exceptions
|
||||
*/
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_add_exception_event ( caExceptionHandler *pfunc, void *arg )
|
||||
int epicsStdCall ca_add_exception_event ( caExceptionHandler *pfunc, void *arg )
|
||||
{
|
||||
ca_client_context *pcac;
|
||||
int caStatus = fetchClientContext ( &pcac );
|
||||
@@ -417,7 +415,7 @@ int epicsShareAPI ca_add_exception_event ( caExceptionHandler *pfunc, void *arg
|
||||
/*
|
||||
* ca_add_masked_array_event
|
||||
*/
|
||||
int epicsShareAPI ca_add_masked_array_event (
|
||||
int epicsStdCall ca_add_masked_array_event (
|
||||
chtype type, arrayElementCount count, chid pChan,
|
||||
caEventCallBackFunc *pCallBack, void *pCallBackArg,
|
||||
ca_real, ca_real, ca_real,
|
||||
@@ -430,19 +428,19 @@ int epicsShareAPI ca_add_masked_array_event (
|
||||
/*
|
||||
* ca_clear_event ()
|
||||
*/
|
||||
int epicsShareAPI ca_clear_event ( evid pMon )
|
||||
int epicsStdCall ca_clear_event ( evid pMon )
|
||||
{
|
||||
return ca_clear_subscription ( pMon );
|
||||
}
|
||||
|
||||
// extern "C"
|
||||
chid epicsShareAPI ca_evid_to_chid ( evid pMon )
|
||||
chid epicsStdCall ca_evid_to_chid ( evid pMon )
|
||||
{
|
||||
return & pMon->channel ();
|
||||
}
|
||||
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_pend ( ca_real timeout, int early )
|
||||
int epicsStdCall ca_pend ( ca_real timeout, int early )
|
||||
{
|
||||
if ( early ) {
|
||||
return ca_pend_io ( timeout );
|
||||
@@ -456,7 +454,7 @@ int epicsShareAPI ca_pend ( ca_real timeout, int early )
|
||||
* ca_pend_event ()
|
||||
*/
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_pend_event ( ca_real timeout )
|
||||
int epicsStdCall ca_pend_event ( ca_real timeout )
|
||||
{
|
||||
ca_client_context *pcac;
|
||||
int status = fetchClientContext ( &pcac );
|
||||
@@ -467,7 +465,7 @@ int epicsShareAPI ca_pend_event ( ca_real timeout )
|
||||
try {
|
||||
// preserve past odd ball behavior of waiting forever when
|
||||
// the delay is zero
|
||||
if ( timeout == 0.0 ) {
|
||||
if ( timeout == 0.0 ) {
|
||||
while ( true ) {
|
||||
pcac->pendEvent ( 60.0 );
|
||||
}
|
||||
@@ -483,7 +481,7 @@ int epicsShareAPI ca_pend_event ( ca_real timeout )
|
||||
* ca_pend_io ()
|
||||
*/
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_pend_io ( ca_real timeout )
|
||||
int epicsStdCall ca_pend_io ( ca_real timeout )
|
||||
{
|
||||
ca_client_context *pcac;
|
||||
int status = fetchClientContext ( &pcac );
|
||||
@@ -508,7 +506,7 @@ int epicsShareAPI ca_pend_io ( ca_real timeout )
|
||||
/*
|
||||
* ca_flush_io ()
|
||||
*/
|
||||
int epicsShareAPI ca_flush_io ()
|
||||
int epicsStdCall ca_flush_io ()
|
||||
{
|
||||
ca_client_context * pcac;
|
||||
int caStatus = fetchClientContext (&pcac);
|
||||
@@ -525,7 +523,7 @@ int epicsShareAPI ca_flush_io ()
|
||||
/*
|
||||
* CA_TEST_IO ()
|
||||
*/
|
||||
int epicsShareAPI ca_test_io ()
|
||||
int epicsStdCall ca_test_io ()
|
||||
{
|
||||
ca_client_context *pcac;
|
||||
int caStatus = fetchClientContext ( &pcac );
|
||||
@@ -545,7 +543,7 @@ int epicsShareAPI ca_test_io ()
|
||||
* CA_SIGNAL()
|
||||
*/
|
||||
// extern "C"
|
||||
void epicsShareAPI ca_signal ( long ca_status, const char *message )
|
||||
void epicsStdCall ca_signal ( long ca_status, const char *message )
|
||||
{
|
||||
ca_signal_with_file_and_lineno ( ca_status, message, NULL, 0 );
|
||||
}
|
||||
@@ -560,7 +558,7 @@ void epicsShareAPI ca_signal ( long ca_status, const char *message )
|
||||
* (if they call this routine again).
|
||||
*/
|
||||
// extern "C"
|
||||
const char * epicsShareAPI ca_message ( long ca_status )
|
||||
const char * epicsStdCall ca_message ( long ca_status )
|
||||
{
|
||||
unsigned msgNo = CA_EXTRACT_MSG_NO ( ca_status );
|
||||
|
||||
@@ -576,7 +574,7 @@ const char * epicsShareAPI ca_message ( long ca_status )
|
||||
* ca_signal_with_file_and_lineno()
|
||||
*/
|
||||
// extern "C"
|
||||
void epicsShareAPI ca_signal_with_file_and_lineno ( long ca_status,
|
||||
void epicsStdCall ca_signal_with_file_and_lineno ( long ca_status,
|
||||
const char *message, const char *pfilenm, int lineno )
|
||||
{
|
||||
ca_signal_formated ( ca_status, pfilenm, lineno, message );
|
||||
@@ -586,7 +584,7 @@ void epicsShareAPI ca_signal_with_file_and_lineno ( long ca_status,
|
||||
* ca_signal_formated()
|
||||
*/
|
||||
// extern "C"
|
||||
void epicsShareAPI ca_signal_formated ( long ca_status, const char *pfilenm,
|
||||
void epicsStdCall ca_signal_formated ( long ca_status, const char *pfilenm,
|
||||
int lineno, const char *pFormat, ... )
|
||||
{
|
||||
ca_client_context *pcac;
|
||||
@@ -605,7 +603,7 @@ void epicsShareAPI ca_signal_formated ( long ca_status, const char *pfilenm,
|
||||
}
|
||||
else {
|
||||
fprintf ( stderr, "CA exception in thread w/o CA ctx: status=%s file=%s line=%d: \n",
|
||||
ca_message ( ca_status ), pfilenm, lineno );
|
||||
ca_message ( ca_status ), pfilenm ? pfilenm : "<null>", lineno );
|
||||
if ( pFormat ) {
|
||||
vfprintf ( stderr, pFormat, theArgs );
|
||||
}
|
||||
@@ -622,7 +620,7 @@ void epicsShareAPI ca_signal_formated ( long ca_status, const char *pfilenm,
|
||||
*
|
||||
*/
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_add_fd_registration ( CAFDHANDLER * func, void * arg )
|
||||
int epicsStdCall ca_add_fd_registration ( CAFDHANDLER * func, void * arg )
|
||||
{
|
||||
ca_client_context *pcac;
|
||||
int caStatus = fetchClientContext ( &pcac );
|
||||
@@ -640,7 +638,7 @@ int epicsShareAPI ca_add_fd_registration ( CAFDHANDLER * func, void * arg )
|
||||
* function that returns the CA version string
|
||||
*/
|
||||
// extern "C"
|
||||
const char * epicsShareAPI ca_version ()
|
||||
const char * epicsStdCall ca_version ()
|
||||
{
|
||||
return CA_VERSION_STRING ( CA_MINOR_PROTOCOL_REVISION );
|
||||
}
|
||||
@@ -649,7 +647,7 @@ const char * epicsShareAPI ca_version ()
|
||||
* ca_replace_printf_handler ()
|
||||
*/
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_replace_printf_handler ( caPrintfFunc *ca_printf_func )
|
||||
int epicsStdCall ca_replace_printf_handler ( caPrintfFunc *ca_printf_func )
|
||||
{
|
||||
ca_client_context *pcac;
|
||||
int caStatus = fetchClientContext (&pcac);
|
||||
@@ -669,7 +667,7 @@ int epicsShareAPI ca_replace_printf_handler ( caPrintfFunc *ca_printf_func )
|
||||
* (for testing purposes only)
|
||||
*/
|
||||
// extern "C"
|
||||
unsigned epicsShareAPI ca_get_ioc_connection_count ()
|
||||
unsigned epicsStdCall ca_get_ioc_connection_count ()
|
||||
{
|
||||
ca_client_context * pcac;
|
||||
int caStatus = fetchClientContext ( & pcac );
|
||||
@@ -680,7 +678,7 @@ unsigned epicsShareAPI ca_get_ioc_connection_count ()
|
||||
return pcac->circuitCount ();
|
||||
}
|
||||
|
||||
unsigned epicsShareAPI ca_beacon_anomaly_count ()
|
||||
unsigned epicsStdCall ca_beacon_anomaly_count ()
|
||||
{
|
||||
ca_client_context * pcac;
|
||||
int caStatus = fetchClientContext ( & pcac );
|
||||
@@ -692,15 +690,15 @@ unsigned epicsShareAPI ca_beacon_anomaly_count ()
|
||||
}
|
||||
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_channel_status ( epicsThreadId /* tid */ )
|
||||
int epicsStdCall ca_channel_status ( epicsThreadId /* tid */ )
|
||||
{
|
||||
::printf ("The R3.14 EPICS OS abstraction API does not allow peeking at thread private storage of another thread.\n");
|
||||
::printf ("Please call \"ca_client_status ( unsigned level )\" from the subsystem specific diagnostic code.\n");
|
||||
return ECA_ANACHRONISM;
|
||||
return ECA_ANACHRONISM;
|
||||
}
|
||||
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_client_status ( unsigned level )
|
||||
int epicsStdCall ca_client_status ( unsigned level )
|
||||
{
|
||||
ca_client_context *pcac;
|
||||
int caStatus = fetchClientContext ( &pcac );
|
||||
@@ -712,7 +710,7 @@ int epicsShareAPI ca_client_status ( unsigned level )
|
||||
return ECA_NORMAL;
|
||||
}
|
||||
|
||||
int epicsShareAPI ca_context_status ( ca_client_context * pcac, unsigned level )
|
||||
int epicsStdCall ca_context_status ( ca_client_context * pcac, unsigned level )
|
||||
{
|
||||
pcac->show ( level );
|
||||
return ECA_NORMAL;
|
||||
@@ -725,7 +723,7 @@ int epicsShareAPI ca_context_status ( ca_client_context * pcac, unsigned level )
|
||||
* by another thread
|
||||
*/
|
||||
// extern "C"
|
||||
struct ca_client_context * epicsShareAPI ca_current_context ()
|
||||
struct ca_client_context * epicsStdCall ca_current_context ()
|
||||
{
|
||||
struct ca_client_context *pCtx;
|
||||
if ( caClientContextId ) {
|
||||
@@ -745,7 +743,7 @@ struct ca_client_context * epicsShareAPI ca_current_context ()
|
||||
* by another thread
|
||||
*/
|
||||
// extern "C"
|
||||
int epicsShareAPI ca_attach_context ( struct ca_client_context * pCtx )
|
||||
int epicsStdCall ca_attach_context ( struct ca_client_context * pCtx )
|
||||
{
|
||||
ca_client_context *pcac = (ca_client_context *) epicsThreadPrivateGet ( caClientContextId );
|
||||
if ( pcac && pCtx != 0 ) {
|
||||
@@ -758,14 +756,14 @@ int epicsShareAPI ca_attach_context ( struct ca_client_context * pCtx )
|
||||
return ECA_NORMAL;
|
||||
}
|
||||
|
||||
void epicsShareAPI ca_detach_context ()
|
||||
void epicsStdCall ca_detach_context ()
|
||||
{
|
||||
if ( caClientContextId ) {
|
||||
epicsThreadPrivateSet ( caClientContextId, 0 );
|
||||
}
|
||||
}
|
||||
|
||||
int epicsShareAPI ca_preemtive_callback_is_enabled ()
|
||||
int epicsStdCall ca_preemtive_callback_is_enabled ()
|
||||
{
|
||||
ca_client_context *pcac = (ca_client_context *) epicsThreadPrivateGet ( caClientContextId );
|
||||
if ( ! pcac ) {
|
||||
@@ -776,7 +774,7 @@ int epicsShareAPI ca_preemtive_callback_is_enabled ()
|
||||
|
||||
|
||||
// extern "C"
|
||||
void epicsShareAPI ca_self_test ()
|
||||
void epicsStdCall ca_self_test ()
|
||||
{
|
||||
ca_client_context *pcac = (ca_client_context *) epicsThreadPrivateGet ( caClientContextId );
|
||||
if ( ! pcac ) {
|
||||
@@ -785,8 +783,7 @@ void epicsShareAPI ca_self_test ()
|
||||
pcac->selfTest ();
|
||||
}
|
||||
|
||||
// extern "C"
|
||||
epicsShareDef const int epicsTypeToDBR_XXXX [lastEpicsType+1] = {
|
||||
const int epicsTypeToDBR_XXXX [lastEpicsType+1] = {
|
||||
DBR_SHORT, /* forces conversion fronm uint8 to int16 */
|
||||
DBR_CHAR,
|
||||
DBR_SHORT,
|
||||
@@ -800,265 +797,257 @@ epicsShareDef const int epicsTypeToDBR_XXXX [lastEpicsType+1] = {
|
||||
DBR_STRING
|
||||
};
|
||||
|
||||
// extern "C"
|
||||
epicsShareDef const epicsType DBR_XXXXToEpicsType [LAST_BUFFER_TYPE+1] = {
|
||||
epicsOldStringT,
|
||||
epicsInt16T,
|
||||
epicsFloat32T,
|
||||
epicsEnum16T,
|
||||
epicsUInt8T,
|
||||
epicsInt32T,
|
||||
epicsFloat64T,
|
||||
const epicsType DBR_XXXXToEpicsType [LAST_BUFFER_TYPE+1] = {
|
||||
epicsOldStringT,
|
||||
epicsInt16T,
|
||||
epicsFloat32T,
|
||||
epicsEnum16T,
|
||||
epicsUInt8T,
|
||||
epicsInt32T,
|
||||
epicsFloat64T,
|
||||
|
||||
epicsOldStringT,
|
||||
epicsInt16T,
|
||||
epicsFloat32T,
|
||||
epicsEnum16T,
|
||||
epicsUInt8T,
|
||||
epicsInt32T,
|
||||
epicsFloat64T,
|
||||
epicsOldStringT,
|
||||
epicsInt16T,
|
||||
epicsFloat32T,
|
||||
epicsEnum16T,
|
||||
epicsUInt8T,
|
||||
epicsInt32T,
|
||||
epicsFloat64T,
|
||||
|
||||
epicsOldStringT,
|
||||
epicsInt16T,
|
||||
epicsFloat32T,
|
||||
epicsEnum16T,
|
||||
epicsUInt8T,
|
||||
epicsInt32T,
|
||||
epicsFloat64T,
|
||||
epicsOldStringT,
|
||||
epicsInt16T,
|
||||
epicsFloat32T,
|
||||
epicsEnum16T,
|
||||
epicsUInt8T,
|
||||
epicsInt32T,
|
||||
epicsFloat64T,
|
||||
|
||||
epicsOldStringT,
|
||||
epicsInt16T,
|
||||
epicsFloat32T,
|
||||
epicsEnum16T,
|
||||
epicsUInt8T,
|
||||
epicsInt32T,
|
||||
epicsFloat64T,
|
||||
epicsOldStringT,
|
||||
epicsInt16T,
|
||||
epicsFloat32T,
|
||||
epicsEnum16T,
|
||||
epicsUInt8T,
|
||||
epicsInt32T,
|
||||
epicsFloat64T,
|
||||
|
||||
epicsOldStringT,
|
||||
epicsInt16T,
|
||||
epicsFloat32T,
|
||||
epicsEnum16T,
|
||||
epicsUInt8T,
|
||||
epicsInt32T,
|
||||
epicsFloat64T,
|
||||
epicsOldStringT,
|
||||
epicsInt16T,
|
||||
epicsFloat32T,
|
||||
epicsEnum16T,
|
||||
epicsUInt8T,
|
||||
epicsInt32T,
|
||||
epicsFloat64T,
|
||||
|
||||
epicsUInt16T,
|
||||
epicsUInt16T,
|
||||
epicsOldStringT,
|
||||
epicsOldStringT
|
||||
epicsUInt16T,
|
||||
epicsUInt16T,
|
||||
epicsOldStringT,
|
||||
epicsOldStringT
|
||||
};
|
||||
|
||||
// extern "C"
|
||||
epicsShareDef const unsigned short dbr_size[LAST_BUFFER_TYPE+1] = {
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
sizeof(dbr_short_t), /* short */
|
||||
sizeof(dbr_float_t), /* IEEE Float */
|
||||
sizeof(dbr_enum_t), /* item number */
|
||||
sizeof(dbr_char_t), /* character */
|
||||
const unsigned short dbr_size[LAST_BUFFER_TYPE+1] = {
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
sizeof(dbr_short_t), /* short */
|
||||
sizeof(dbr_float_t), /* IEEE Float */
|
||||
sizeof(dbr_enum_t), /* item number */
|
||||
sizeof(dbr_char_t), /* character */
|
||||
|
||||
sizeof(dbr_long_t), /* long */
|
||||
sizeof(dbr_double_t), /* double */
|
||||
sizeof(struct dbr_sts_string), /* string field with status */
|
||||
sizeof(struct dbr_sts_short), /* short field with status */
|
||||
sizeof(struct dbr_sts_float), /* float field with status */
|
||||
sizeof(dbr_long_t), /* long */
|
||||
sizeof(dbr_double_t), /* double */
|
||||
sizeof(struct dbr_sts_string), /* string field with status */
|
||||
sizeof(struct dbr_sts_short), /* short field with status */
|
||||
sizeof(struct dbr_sts_float), /* float field with status */
|
||||
|
||||
sizeof(struct dbr_sts_enum), /* item number with status */
|
||||
sizeof(struct dbr_sts_char), /* char field with status */
|
||||
sizeof(struct dbr_sts_long), /* long field with status */
|
||||
sizeof(struct dbr_sts_double), /* double field with time */
|
||||
sizeof(struct dbr_time_string), /* string field with time */
|
||||
sizeof(struct dbr_sts_enum), /* item number with status */
|
||||
sizeof(struct dbr_sts_char), /* char field with status */
|
||||
sizeof(struct dbr_sts_long), /* long field with status */
|
||||
sizeof(struct dbr_sts_double), /* double field with time */
|
||||
sizeof(struct dbr_time_string), /* string field with time */
|
||||
|
||||
sizeof(struct dbr_time_short), /* short field with time */
|
||||
sizeof(struct dbr_time_float), /* float field with time */
|
||||
sizeof(struct dbr_time_enum), /* item number with time */
|
||||
sizeof(struct dbr_time_char), /* char field with time */
|
||||
sizeof(struct dbr_time_long), /* long field with time */
|
||||
sizeof(struct dbr_time_short), /* short field with time */
|
||||
sizeof(struct dbr_time_float), /* float field with time */
|
||||
sizeof(struct dbr_time_enum), /* item number with time */
|
||||
sizeof(struct dbr_time_char), /* char field with time */
|
||||
sizeof(struct dbr_time_long), /* long field with time */
|
||||
|
||||
sizeof(struct dbr_time_double), /* double field with time */
|
||||
sizeof(struct dbr_sts_string), /* graphic string info */
|
||||
sizeof(struct dbr_gr_short), /* graphic short info */
|
||||
sizeof(struct dbr_gr_float), /* graphic float info */
|
||||
sizeof(struct dbr_gr_enum), /* graphic item info */
|
||||
sizeof(struct dbr_time_double), /* double field with time */
|
||||
sizeof(struct dbr_sts_string), /* graphic string info */
|
||||
sizeof(struct dbr_gr_short), /* graphic short info */
|
||||
sizeof(struct dbr_gr_float), /* graphic float info */
|
||||
sizeof(struct dbr_gr_enum), /* graphic item info */
|
||||
|
||||
sizeof(struct dbr_gr_char), /* graphic char info */
|
||||
sizeof(struct dbr_gr_long), /* graphic long info */
|
||||
sizeof(struct dbr_gr_double), /* graphic double info */
|
||||
sizeof(struct dbr_sts_string), /* control string info */
|
||||
sizeof(struct dbr_ctrl_short), /* control short info */
|
||||
sizeof(struct dbr_gr_char), /* graphic char info */
|
||||
sizeof(struct dbr_gr_long), /* graphic long info */
|
||||
sizeof(struct dbr_gr_double), /* graphic double info */
|
||||
sizeof(struct dbr_sts_string), /* control string info */
|
||||
sizeof(struct dbr_ctrl_short), /* control short info */
|
||||
|
||||
sizeof(struct dbr_ctrl_float), /* control float info */
|
||||
sizeof(struct dbr_ctrl_enum), /* control item info */
|
||||
sizeof(struct dbr_ctrl_char), /* control char info */
|
||||
sizeof(struct dbr_ctrl_long), /* control long info */
|
||||
sizeof(struct dbr_ctrl_double), /* control double info */
|
||||
sizeof(struct dbr_ctrl_float), /* control float info */
|
||||
sizeof(struct dbr_ctrl_enum), /* control item info */
|
||||
sizeof(struct dbr_ctrl_char), /* control char info */
|
||||
sizeof(struct dbr_ctrl_long), /* control long info */
|
||||
sizeof(struct dbr_ctrl_double), /* control double info */
|
||||
|
||||
sizeof(dbr_put_ackt_t), /* put ackt */
|
||||
sizeof(dbr_put_acks_t), /* put acks */
|
||||
sizeof(struct dbr_stsack_string),/* string field with status/ack*/
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
sizeof(dbr_put_ackt_t), /* put ackt */
|
||||
sizeof(dbr_put_acks_t), /* put acks */
|
||||
sizeof(struct dbr_stsack_string),/* string field with status/ack*/
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
};
|
||||
|
||||
// extern "C"
|
||||
epicsShareDef const unsigned short dbr_value_size[LAST_BUFFER_TYPE+1] = {
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
sizeof(dbr_short_t), /* short */
|
||||
sizeof(dbr_float_t), /* IEEE Float */
|
||||
sizeof(dbr_enum_t), /* item number */
|
||||
sizeof(dbr_char_t), /* character */
|
||||
const unsigned short dbr_value_size[LAST_BUFFER_TYPE+1] = {
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
sizeof(dbr_short_t), /* short */
|
||||
sizeof(dbr_float_t), /* IEEE Float */
|
||||
sizeof(dbr_enum_t), /* item number */
|
||||
sizeof(dbr_char_t), /* character */
|
||||
|
||||
sizeof(dbr_long_t), /* long */
|
||||
sizeof(dbr_double_t), /* double */
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
sizeof(dbr_short_t), /* short */
|
||||
sizeof(dbr_float_t), /* IEEE Float */
|
||||
sizeof(dbr_long_t), /* long */
|
||||
sizeof(dbr_double_t), /* double */
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
sizeof(dbr_short_t), /* short */
|
||||
sizeof(dbr_float_t), /* IEEE Float */
|
||||
|
||||
sizeof(dbr_enum_t), /* item number */
|
||||
sizeof(dbr_char_t), /* character */
|
||||
sizeof(dbr_long_t), /* long */
|
||||
sizeof(dbr_double_t), /* double */
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
sizeof(dbr_enum_t), /* item number */
|
||||
sizeof(dbr_char_t), /* character */
|
||||
sizeof(dbr_long_t), /* long */
|
||||
sizeof(dbr_double_t), /* double */
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
|
||||
sizeof(dbr_short_t), /* short */
|
||||
sizeof(dbr_float_t), /* IEEE Float */
|
||||
sizeof(dbr_enum_t), /* item number */
|
||||
sizeof(dbr_char_t), /* character */
|
||||
sizeof(dbr_long_t), /* long */
|
||||
sizeof(dbr_short_t), /* short */
|
||||
sizeof(dbr_float_t), /* IEEE Float */
|
||||
sizeof(dbr_enum_t), /* item number */
|
||||
sizeof(dbr_char_t), /* character */
|
||||
sizeof(dbr_long_t), /* long */
|
||||
|
||||
sizeof(dbr_double_t), /* double */
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
sizeof(dbr_short_t), /* short */
|
||||
sizeof(dbr_float_t), /* IEEE Float */
|
||||
sizeof(dbr_enum_t), /* item number */
|
||||
sizeof(dbr_double_t), /* double */
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
sizeof(dbr_short_t), /* short */
|
||||
sizeof(dbr_float_t), /* IEEE Float */
|
||||
sizeof(dbr_enum_t), /* item number */
|
||||
|
||||
sizeof(dbr_char_t), /* character */
|
||||
sizeof(dbr_long_t), /* long */
|
||||
sizeof(dbr_double_t), /* double */
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
sizeof(dbr_short_t), /* short */
|
||||
sizeof(dbr_char_t), /* character */
|
||||
sizeof(dbr_long_t), /* long */
|
||||
sizeof(dbr_double_t), /* double */
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
sizeof(dbr_short_t), /* short */
|
||||
|
||||
sizeof(dbr_float_t), /* IEEE Float */
|
||||
sizeof(dbr_enum_t), /* item number */
|
||||
sizeof(dbr_char_t), /* character */
|
||||
sizeof(dbr_long_t), /* long */
|
||||
sizeof(dbr_double_t), /* double */
|
||||
sizeof(dbr_float_t), /* IEEE Float */
|
||||
sizeof(dbr_enum_t), /* item number */
|
||||
sizeof(dbr_char_t), /* character */
|
||||
sizeof(dbr_long_t), /* long */
|
||||
sizeof(dbr_double_t), /* double */
|
||||
|
||||
sizeof(dbr_ushort_t), /* put_ackt */
|
||||
sizeof(dbr_ushort_t), /* put_acks */
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
sizeof(dbr_ushort_t), /* put_ackt */
|
||||
sizeof(dbr_ushort_t), /* put_acks */
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
sizeof(dbr_string_t), /* string max size */
|
||||
};
|
||||
|
||||
//extern "C"
|
||||
epicsShareDef const enum dbr_value_class dbr_value_class[LAST_BUFFER_TYPE+1] = {
|
||||
dbr_class_string, /* string max size */
|
||||
dbr_class_int, /* short */
|
||||
dbr_class_float, /* IEEE Float */
|
||||
dbr_class_int, /* item number */
|
||||
dbr_class_int, /* character */
|
||||
dbr_class_int, /* long */
|
||||
dbr_class_float, /* double */
|
||||
const enum dbr_value_class dbr_value_class[LAST_BUFFER_TYPE+1] = {
|
||||
dbr_class_string, /* string max size */
|
||||
dbr_class_int, /* short */
|
||||
dbr_class_float, /* IEEE Float */
|
||||
dbr_class_int, /* item number */
|
||||
dbr_class_int, /* character */
|
||||
dbr_class_int, /* long */
|
||||
dbr_class_float, /* double */
|
||||
|
||||
dbr_class_string, /* string max size */
|
||||
dbr_class_int, /* short */
|
||||
dbr_class_float, /* IEEE Float */
|
||||
dbr_class_int, /* item number */
|
||||
dbr_class_int, /* character */
|
||||
dbr_class_int, /* long */
|
||||
dbr_class_float, /* double */
|
||||
dbr_class_string, /* string max size */
|
||||
dbr_class_int, /* short */
|
||||
dbr_class_float, /* IEEE Float */
|
||||
dbr_class_int, /* item number */
|
||||
dbr_class_int, /* character */
|
||||
dbr_class_int, /* long */
|
||||
dbr_class_float, /* double */
|
||||
|
||||
dbr_class_string, /* string max size */
|
||||
dbr_class_int, /* short */
|
||||
dbr_class_float, /* IEEE Float */
|
||||
dbr_class_int, /* item number */
|
||||
dbr_class_int, /* character */
|
||||
dbr_class_int, /* long */
|
||||
dbr_class_float, /* double */
|
||||
dbr_class_string, /* string max size */
|
||||
dbr_class_int, /* short */
|
||||
dbr_class_float, /* IEEE Float */
|
||||
dbr_class_int, /* item number */
|
||||
dbr_class_int, /* character */
|
||||
dbr_class_int, /* long */
|
||||
dbr_class_float, /* double */
|
||||
|
||||
dbr_class_string, /* string max size */
|
||||
dbr_class_int, /* short */
|
||||
dbr_class_float, /* IEEE Float */
|
||||
dbr_class_int, /* item number */
|
||||
dbr_class_int, /* character */
|
||||
dbr_class_int, /* long */
|
||||
dbr_class_float, /* double */
|
||||
dbr_class_string, /* string max size */
|
||||
dbr_class_int, /* short */
|
||||
dbr_class_float, /* IEEE Float */
|
||||
dbr_class_int, /* item number */
|
||||
dbr_class_int, /* character */
|
||||
dbr_class_int, /* long */
|
||||
dbr_class_float, /* double */
|
||||
|
||||
dbr_class_string, /* string max size */
|
||||
dbr_class_int, /* short */
|
||||
dbr_class_float, /* IEEE Float */
|
||||
dbr_class_int, /* item number */
|
||||
dbr_class_int, /* character */
|
||||
dbr_class_int, /* long */
|
||||
dbr_class_float, /* double */
|
||||
dbr_class_int,
|
||||
dbr_class_int,
|
||||
dbr_class_string,
|
||||
dbr_class_string, /* string max size */
|
||||
dbr_class_string, /* string max size */
|
||||
dbr_class_int, /* short */
|
||||
dbr_class_float, /* IEEE Float */
|
||||
dbr_class_int, /* item number */
|
||||
dbr_class_int, /* character */
|
||||
dbr_class_int, /* long */
|
||||
dbr_class_float, /* double */
|
||||
dbr_class_int,
|
||||
dbr_class_int,
|
||||
dbr_class_string,
|
||||
dbr_class_string, /* string max size */
|
||||
};
|
||||
|
||||
// extern "C"
|
||||
epicsShareDef const unsigned short dbr_value_offset[LAST_BUFFER_TYPE+1] = {
|
||||
0, /* string */
|
||||
0, /* short */
|
||||
0, /* IEEE Float */
|
||||
0, /* item number */
|
||||
0, /* character */
|
||||
0, /* long */
|
||||
0, /* IEEE double */
|
||||
(unsigned short) offsetof(dbr_sts_string,value[0]),/* string field with status */
|
||||
(unsigned short) offsetof(dbr_sts_short,value), /* short field with status */
|
||||
(unsigned short) offsetof(dbr_sts_float,value), /* float field with status */
|
||||
(unsigned short) offsetof(dbr_sts_enum,value), /* item number with status */
|
||||
(unsigned short) offsetof(dbr_sts_char,value), /* char field with status */
|
||||
(unsigned short) offsetof(dbr_sts_long,value), /* long field with status */
|
||||
(unsigned short) offsetof(dbr_sts_double,value), /* double field with time */
|
||||
(unsigned short) offsetof(dbr_time_string,value[0] ),/* string field with time */
|
||||
(unsigned short) offsetof(dbr_time_short,value), /* short field with time */
|
||||
(unsigned short) offsetof(dbr_time_float,value), /* float field with time */
|
||||
(unsigned short) offsetof(dbr_time_enum,value), /* item number with time */
|
||||
(unsigned short) offsetof(dbr_time_char,value), /* char field with time */
|
||||
(unsigned short) offsetof(dbr_time_long,value), /* long field with time */
|
||||
(unsigned short) offsetof(dbr_time_double,value), /* double field with time */
|
||||
(unsigned short) offsetof(dbr_sts_string,value[0]),/* graphic string info */
|
||||
(unsigned short) offsetof(dbr_gr_short,value), /* graphic short info */
|
||||
(unsigned short) offsetof(dbr_gr_float,value), /* graphic float info */
|
||||
(unsigned short) offsetof(dbr_gr_enum,value), /* graphic item info */
|
||||
(unsigned short) offsetof(dbr_gr_char,value), /* graphic char info */
|
||||
(unsigned short) offsetof(dbr_gr_long,value), /* graphic long info */
|
||||
(unsigned short) offsetof(dbr_gr_double,value), /* graphic double info */
|
||||
(unsigned short) offsetof(dbr_sts_string,value[0]),/* control string info */
|
||||
(unsigned short) offsetof(dbr_ctrl_short,value), /* control short info */
|
||||
(unsigned short) offsetof(dbr_ctrl_float,value), /* control float info */
|
||||
(unsigned short) offsetof(dbr_ctrl_enum,value), /* control item info */
|
||||
(unsigned short) offsetof(dbr_ctrl_char,value), /* control char info */
|
||||
(unsigned short) offsetof(dbr_ctrl_long,value), /* control long info */
|
||||
(unsigned short) offsetof(dbr_ctrl_double,value), /* control double info */
|
||||
0, /* put ackt */
|
||||
0, /* put acks */
|
||||
(unsigned short) offsetof(dbr_stsack_string,value[0]),/* string field with status */
|
||||
0, /* string */
|
||||
const unsigned short dbr_value_offset[LAST_BUFFER_TYPE+1] = {
|
||||
0, /* string */
|
||||
0, /* short */
|
||||
0, /* IEEE Float */
|
||||
0, /* item number */
|
||||
0, /* character */
|
||||
0, /* long */
|
||||
0, /* IEEE double */
|
||||
(unsigned short) offsetof(dbr_sts_string,value[0]), /* string field with status */
|
||||
(unsigned short) offsetof(dbr_sts_short,value), /* short field with status */
|
||||
(unsigned short) offsetof(dbr_sts_float,value), /* float field with status */
|
||||
(unsigned short) offsetof(dbr_sts_enum,value), /* item number with status */
|
||||
(unsigned short) offsetof(dbr_sts_char,value), /* char field with status */
|
||||
(unsigned short) offsetof(dbr_sts_long,value), /* long field with status */
|
||||
(unsigned short) offsetof(dbr_sts_double,value), /* double field with time */
|
||||
(unsigned short) offsetof(dbr_time_string,value[0] ), /* string field with time */
|
||||
(unsigned short) offsetof(dbr_time_short,value), /* short field with time */
|
||||
(unsigned short) offsetof(dbr_time_float,value), /* float field with time */
|
||||
(unsigned short) offsetof(dbr_time_enum,value), /* item number with time */
|
||||
(unsigned short) offsetof(dbr_time_char,value), /* char field with time */
|
||||
(unsigned short) offsetof(dbr_time_long,value), /* long field with time */
|
||||
(unsigned short) offsetof(dbr_time_double,value), /* double field with time */
|
||||
(unsigned short) offsetof(dbr_sts_string,value[0]), /* graphic string info */
|
||||
(unsigned short) offsetof(dbr_gr_short,value), /* graphic short info */
|
||||
(unsigned short) offsetof(dbr_gr_float,value), /* graphic float info */
|
||||
(unsigned short) offsetof(dbr_gr_enum,value), /* graphic item info */
|
||||
(unsigned short) offsetof(dbr_gr_char,value), /* graphic char info */
|
||||
(unsigned short) offsetof(dbr_gr_long,value), /* graphic long info */
|
||||
(unsigned short) offsetof(dbr_gr_double,value), /* graphic double info */
|
||||
(unsigned short) offsetof(dbr_sts_string,value[0]), /* control string info */
|
||||
(unsigned short) offsetof(dbr_ctrl_short,value), /* control short info */
|
||||
(unsigned short) offsetof(dbr_ctrl_float,value), /* control float info */
|
||||
(unsigned short) offsetof(dbr_ctrl_enum,value), /* control item info */
|
||||
(unsigned short) offsetof(dbr_ctrl_char,value), /* control char info */
|
||||
(unsigned short) offsetof(dbr_ctrl_long,value), /* control long info */
|
||||
(unsigned short) offsetof(dbr_ctrl_double,value), /* control double info */
|
||||
0, /* put ackt */
|
||||
0, /* put acks */
|
||||
(unsigned short) offsetof(dbr_stsack_string,value[0]), /* string field with status */
|
||||
0, /* string */
|
||||
};
|
||||
|
||||
// extern "C"
|
||||
epicsShareDef const char *dbf_text[LAST_TYPE+3] = {
|
||||
"TYPENOTCONN",
|
||||
"DBF_STRING",
|
||||
"DBF_SHORT",
|
||||
"DBF_FLOAT",
|
||||
"DBF_ENUM",
|
||||
"DBF_CHAR",
|
||||
"DBF_LONG",
|
||||
"DBF_DOUBLE",
|
||||
"DBF_NO_ACCESS"
|
||||
const char *dbf_text[LAST_TYPE+3] = {
|
||||
"TYPENOTCONN",
|
||||
"DBF_STRING",
|
||||
"DBF_SHORT",
|
||||
"DBF_FLOAT",
|
||||
"DBF_ENUM",
|
||||
"DBF_CHAR",
|
||||
"DBF_LONG",
|
||||
"DBF_DOUBLE",
|
||||
"DBF_NO_ACCESS"
|
||||
};
|
||||
|
||||
// extern "C"
|
||||
epicsShareDef const char *dbf_text_invalid = "DBF_invalid";
|
||||
const char *dbf_text_invalid = "DBF_invalid";
|
||||
|
||||
// extern "C"
|
||||
epicsShareDef const short dbf_text_dim = (sizeof dbf_text)/(sizeof (char *));
|
||||
const short dbf_text_dim = (sizeof dbf_text)/(sizeof (char *));
|
||||
|
||||
// extern "C"
|
||||
epicsShareDef const char *dbr_text[LAST_BUFFER_TYPE+1] = {
|
||||
const char *dbr_text[LAST_BUFFER_TYPE+1] = {
|
||||
"DBR_STRING",
|
||||
"DBR_SHORT",
|
||||
"DBR_FLOAT",
|
||||
@@ -1100,8 +1089,6 @@ epicsShareDef const char *dbr_text[LAST_BUFFER_TYPE+1] = {
|
||||
"DBR_CLASS_NAME"
|
||||
};
|
||||
|
||||
// extern "C"
|
||||
epicsShareDef const char *dbr_text_invalid = "DBR_invalid";
|
||||
const char *dbr_text_invalid = "DBR_invalid";
|
||||
|
||||
// extern "C"
|
||||
epicsShareDef const short dbr_text_dim = (sizeof dbr_text) / (sizeof (char *)) + 1;
|
||||
const short dbr_text_dim = (sizeof dbr_text) / (sizeof (char *)) + 1;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user