Compare commits
379 Commits
7.0
...
PSI-7.0.9.
| Author | SHA1 | Date | |
|---|---|---|---|
| d6481e190f | |||
| 2e77bc8cc1 | |||
| ea7459084e | |||
| ddc49e9f79 | |||
| a3a99e4d14 | |||
| 12144fe267 | |||
| c5315d95b8 | |||
| 74d231b04f | |||
| 23521e0a08 | |||
| 55791ef470 | |||
| 7b2fb669ec | |||
| 312a602952 | |||
| bc27476554 | |||
| 9c1334ae15 | |||
|
|
9481deacb0 | ||
| 8f1a3888c6 | |||
| c9183b5241 | |||
| c3f57ee818 | |||
| 27f4261dfb | |||
| 5eb9997791 | |||
| bfc2f832ec | |||
| f09b235fce | |||
| ece031c88b | |||
| cbbbd67843 | |||
| 57c0295024 | |||
|
|
8f77e941c7 | ||
|
|
c76395abc6 | ||
| 1ee8338886 | |||
| 250c9658c2 | |||
| eb59cb6c7e | |||
| ab91aee581 | |||
| ccfb5711c8 | |||
| 8accf19239 | |||
| 9b8712e095 | |||
| d13441ebba | |||
| b53505d339 | |||
| 75524e43bc | |||
| 1567da1366 | |||
| 35ba9d65a2 | |||
| 6bb78e0d59 | |||
| 7d73932dc8 | |||
| 4a442bb56c | |||
| 60075df3cf | |||
| 42892f3921 | |||
| 52b3496084 | |||
| 2296dbc132 | |||
| 4af01ed26a | |||
| d83079999b | |||
| 15a2e22149 | |||
| 2dc71ebd6e | |||
| 7077ece7f9 | |||
| 22aaded26d | |||
| c1b8831205 | |||
| 1e64b08c32 | |||
| d67036fcc0 | |||
| d494d91ba2 | |||
| 97ffcb725c | |||
| 5930e8e2e4 | |||
| 212f387d1b | |||
| 1ae21cdde4 | |||
| 03f17a08c3 | |||
| 54117d5371 | |||
| cc134d4649 | |||
| 012c4c73f1 | |||
| 96864abb6c | |||
| ad00947d48 | |||
| 2db99d46a7 | |||
| 11661455f1 | |||
| ecb02803c8 | |||
| fcb720275a | |||
| 87d492bffd | |||
| b379c6f3a5 | |||
| da010afde9 | |||
| cb710920d0 | |||
| 87dea74dcd | |||
| d35c7fe5eb | |||
| c5469efca1 | |||
| fd436c40e8 | |||
| 8557d8adce | |||
| a0c55f597b | |||
| 9090f54f45 | |||
| 6085f9eb0b | |||
| a1de706d2c | |||
| 0b12a0cf7e | |||
| e9dcdd8936 | |||
| e2bb42d8d3 | |||
| abcada0d85 | |||
| 2c35d60a64 | |||
| af1b77eb0f | |||
| 93947eb027 | |||
| 961671259f | |||
|
|
db2482117d | ||
| a66caa5985 | |||
| 4803aae904 | |||
| 427be18e2e | |||
| fff690a449 | |||
| 428b836500 | |||
| 6c74507b11 | |||
| 122ca4e1d3 | |||
|
|
ba1bf00ce7 | ||
|
|
68fea5c2ca | ||
|
|
3f03efe7fe | ||
|
|
98dc97022a | ||
|
|
5d01b637a7 | ||
|
|
69a184ee1d | ||
|
|
aebacff3db | ||
|
|
27ad623d68 | ||
|
|
1b23701946 | ||
|
|
0502fe25e4 | ||
|
|
77a37781af | ||
|
|
ba21e655df | ||
|
|
2e727a0262 | ||
|
|
f4cb31d5d5 | ||
|
|
ab4e687816 | ||
|
|
1d1926eaf3 | ||
|
|
d31ba6ade3 | ||
| 609147dad0 | |||
|
|
5a5535aa5b | ||
|
|
de61390049 | ||
|
|
304d8217d9 | ||
|
|
2c95dc91e9 | ||
|
|
8cc15c6e68 | ||
|
|
680e1734a4 | ||
| 4aea7de032 | |||
|
|
bddbc38e0b | ||
|
|
67e669c5e5 | ||
|
|
e291ca0a03 | ||
|
|
5b84a86ccd | ||
|
|
cb6442da71 | ||
|
|
49b9573f3a | ||
|
|
42dfca2b54 | ||
|
|
3fd79a21a2 | ||
|
|
12f311b780 | ||
|
|
8abc9f8d03 | ||
|
|
ae6f01b8ee | ||
| 1d3a2defa2 | |||
| 43f6fd5060 | |||
|
|
c8d596034a | ||
|
|
1d3459982c | ||
|
|
9934242ccf | ||
|
|
e6dab90bf4 | ||
|
|
c680b9bebd | ||
|
|
9555ca05b8 | ||
|
|
0cd56fa40b | ||
|
|
485ac85fa5 | ||
| 1148931226 | |||
| 73f80cced9 | |||
| 152c72bab0 | |||
| 0f086126b7 | |||
| 5b058d7d27 | |||
|
|
ccbe608c4a | ||
|
|
c68d5a8dc3 | ||
|
|
cfa5ad3195 | ||
|
|
d7a0edf121 | ||
|
|
61fa360461 | ||
|
|
01fc9f83a9 | ||
|
|
ccc730332a | ||
|
|
b948c03675 | ||
|
|
538a3d2f09 | ||
|
|
3724420dc6 | ||
|
|
6b1d30408f | ||
|
|
b615232788 | ||
|
|
763760c58b | ||
|
|
f0d98b9b9a | ||
|
|
60239498a1 | ||
|
|
166157dcbf | ||
|
|
29da5d67e1 | ||
|
|
8e8fb81062 | ||
|
|
448bde1798 | ||
| 28d33d43ec | |||
| b72fcff44d | |||
| d3dc2afd8d | |||
| e9237ef4e8 | |||
| c578148e36 | |||
| 92a461fbd9 | |||
| d5988446c6 | |||
| 26e1e94b90 | |||
| 64f67d036b | |||
| e33728362d | |||
| 23511c4a53 | |||
| 5db310813f | |||
| 6ec0c3b844 | |||
| 8bad990471 | |||
| cb4cb6f4d7 | |||
| 33ecfcb6bc | |||
| 565ccae0b5 | |||
| ddfa24e15d | |||
| 6dc7224cea | |||
| 25a2258663 | |||
|
|
13bd6bac5f | ||
| 39de02f350 | |||
| efd9e7908a | |||
| 96fe9306c7 | |||
| 0caa5a045c | |||
| 4ffa5c8c88 | |||
| 5e076e6d30 | |||
| dcb2c5affd | |||
| 3ac3906fea | |||
| 2d597a68b9 | |||
| 1bfe3dec3c | |||
| ea0b05c32b | |||
| 9c64469f1e | |||
| 2a4ebdf347 | |||
| d5756faef4 | |||
| 77fb5cf425 | |||
| 46141e98d5 | |||
| 5ac51f86ad | |||
| 0af4fce080 | |||
| 4fb42763a2 | |||
| 211d29c0e1 | |||
| da7bca9c16 | |||
| ec346a7b8d | |||
| 81d1082bfd | |||
| 3f8cee7d73 | |||
| aae9d68818 | |||
| f43d21eab3 | |||
| 9e1e4ddd91 | |||
| 8d1cd837d1 | |||
| dc277d1d99 | |||
|
|
b7ad6d906a | ||
|
|
3cfc16f5ff | ||
|
|
05bf567f3b | ||
|
|
ff1b9d4250 | ||
|
|
9b9de013db | ||
|
|
c546f6da23 | ||
| 8a08974f15 | |||
| 04d23354b9 | |||
| ddad6e7b6f | |||
| 9a17604e70 | |||
| c7e3359f08 | |||
| 16d068353a | |||
| f7b4c91163 | |||
| 55536a13db | |||
| 66abb7116f | |||
| bb89d5d24e | |||
| ad7a2ddf65 | |||
| 19031a7d11 | |||
| 1c9887bd45 | |||
| 209b979e56 | |||
| 34ce5c1d21 | |||
| 605aff2461 | |||
| ba1c40df7c | |||
| e25dafa9ca | |||
| ce78836328 | |||
| 8225c313b9 | |||
| be78b33570 | |||
| 9926fe3036 | |||
|
|
718390cfba | ||
|
|
6f864fc10e | ||
|
|
4b6cb2bcdd | ||
|
|
c866609f24 | ||
|
|
ee193edd42 | ||
|
|
40c55d65b3 | ||
|
|
a83b3a5331 | ||
|
|
65098a4120 | ||
|
|
0650fba936 | ||
|
|
16244acd3c | ||
|
|
fe52b0aa1a | ||
|
|
2af0fe894e | ||
|
|
387481799b | ||
|
|
d606155f17 | ||
|
|
c4d639e72a | ||
|
|
19d10b3161 | ||
|
|
220e2f9b12 | ||
|
|
3661874c92 | ||
|
|
a9a3ce535c | ||
|
|
6a81b2c6a0 | ||
|
|
139fac2928 | ||
| dcc6a36bf7 | |||
| 3b7fd004b8 | |||
| 2796764905 | |||
| 4c27619ee9 | |||
| a40737c06b | |||
| 34aebf7eea | |||
| da350d0d54 | |||
| 243807cbe5 | |||
| b3c18ebc4e | |||
| f25f067e9c | |||
| 74d269304c | |||
| c949cb5c8c | |||
| 2495919611 | |||
| 7ed4f6c704 | |||
| eb828f3807 | |||
| a98708302b | |||
| 0dae3e206f | |||
| 505e6f45c1 | |||
| 424de7d9c4 | |||
| 1a0de528e1 | |||
| d795dd76a6 | |||
|
|
45924d28e0 | ||
|
|
b1d0a0d036 | ||
|
|
45e9cf9a94 | ||
|
|
a8dcff2f0d | ||
| 53a7d25923 | |||
|
|
c701e7e98e | ||
|
|
bf8e097756 | ||
|
|
837a2bbdde | ||
|
|
6fb361a965 | ||
| 1db2cba81d | |||
| ce43a67cbd | |||
| 7ac8f056ed | |||
| d157e96aac | |||
| 1d1e3e9527 | |||
| 48d37e6b45 | |||
| 5d03f20831 | |||
| 9e72edb544 | |||
| 4476c71f62 | |||
| e9471b3072 | |||
| 4082cb27c3 | |||
| 88cdffddb6 | |||
| b27d1416b5 | |||
| ab97b5fe54 | |||
| bbaa207603 | |||
|
|
605937bbac | ||
|
|
594fcb9a0d | ||
|
|
e033c0cfb2 | ||
|
|
53ebbab941 | ||
| 86adc529ef | |||
| 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 |
@@ -52,6 +52,8 @@ environment:
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
- CMP: vs2015
|
||||
- CMP: vs2013
|
||||
- CMP: vs2012
|
||||
- CMP: vs2010
|
||||
- CMP: gcc
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
# TODO: static linking w/ readline isn't working. Bypass auto-detect
|
||||
@@ -65,6 +67,11 @@ platform:
|
||||
# Matrix configuration: exclude sets of jobs
|
||||
matrix:
|
||||
exclude:
|
||||
# VS2012 and older installs don't have the 64 bit compiler
|
||||
- platform: x64
|
||||
CMP: vs2012
|
||||
- platform: x64
|
||||
CMP: vs2010
|
||||
# Exclude more jobs to reduce build time
|
||||
# Skip 32-bit for "middle-aged" compilers
|
||||
- platform: x86
|
||||
|
||||
@@ -59,6 +59,8 @@ environment:
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
|
||||
- CMP: vs2015
|
||||
- CMP: vs2013
|
||||
- CMP: vs2012
|
||||
- CMP: vs2010
|
||||
- CMP: gcc
|
||||
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
|
||||
# TODO: static linking w/ readline isn't working. Bypass auto-detect
|
||||
@@ -72,6 +74,11 @@ platform:
|
||||
# Matrix configuration: exclude sets of jobs
|
||||
matrix:
|
||||
exclude:
|
||||
# VS2012 and older installs don't have the 64 bit compiler
|
||||
- platform: x64
|
||||
CMP: vs2012
|
||||
- platform: x64
|
||||
CMP: vs2010
|
||||
# Exclude more jobs to reduce build time
|
||||
# Skip 32-bit for "middle-aged" compilers
|
||||
- platform: x86
|
||||
|
||||
175
.github/workflows/ci-scripts-build.yml
vendored
175
.github/workflows/ci-scripts-build.yml
vendored
@@ -45,14 +45,15 @@ jobs:
|
||||
CI_CROSS_TARGETS: ${{ matrix.cross }}
|
||||
EXTRA: ${{ matrix.extra }}
|
||||
TEST: ${{ matrix.test }}
|
||||
CHOCO: llvm
|
||||
strategy:
|
||||
fail-fast: false
|
||||
fail-fast: true
|
||||
matrix:
|
||||
# Job names also name artifacts, character limitations apply
|
||||
include:
|
||||
- os: ubuntu-24.04
|
||||
cmp: gcc
|
||||
name: "Ub-24 gcc-13 c++20 Werror"
|
||||
- os: ubuntu-22.04
|
||||
cmp: gcc-12
|
||||
name: "Ub-22 gcc-12 c++20 Werror"
|
||||
# Turn all warnings into errors,
|
||||
# except for those we could not fix (yet).
|
||||
# Remove respective -Wno-error=... flag once it is fixed.
|
||||
@@ -73,79 +74,79 @@ jobs:
|
||||
-U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=3'
|
||||
CMD_LDFLAGS=-Wl,-z,relro"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
cross: "windows-x64-mingw"
|
||||
name: "Ub-22 gcc + MinGW"
|
||||
name: "Ub-20 gcc + MinGW"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: static
|
||||
cross: "windows-x64-mingw"
|
||||
name: "Ub-22 gcc + MinGW, static"
|
||||
name: "Ub-20 gcc + MinGW, static"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: static
|
||||
extra: "CMD_CXXFLAGS=-std=c++11"
|
||||
name: "Ub-22 gcc C++11, static"
|
||||
name: "Ub-20 gcc C++11, static"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: static
|
||||
extra: "CMD_CFLAGS=-funsigned-char CMD_CXXFLAGS=-funsigned-char"
|
||||
name: "Ub-22 gcc unsigned char"
|
||||
name: "Ub-20 gcc unsigned char"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- os: ubuntu-20.04
|
||||
cmp: clang
|
||||
configuration: default
|
||||
name: "Ub-22 clang"
|
||||
name: "Ub-20 clang"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- os: ubuntu-20.04
|
||||
cmp: clang
|
||||
configuration: default
|
||||
extra: "CMD_CXXFLAGS=-std=c++11"
|
||||
name: "Ub-22 clang C++11"
|
||||
name: "Ub-20 clang C++11"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
cross: "RTEMS-pc686-qemu@5"
|
||||
name: "Ub-22 gcc + RT-5.1 pc686"
|
||||
name: "Ub-20 gcc + RT-5.1 pc686"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
cross: "RTEMS-beatnik@5"
|
||||
test: NO
|
||||
name: "Ub-22 gcc + RT-5.1 beatnik"
|
||||
name: "Ub-20 gcc + RT-5.1 beatnik"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
cross: "RTEMS-xilinx_zynq_a9_qemu@5"
|
||||
test: NO
|
||||
name: "Ub-22 gcc + RT-5.1 xilinx_zynq_a9_qemu"
|
||||
name: "Ub-20 gcc + RT-5.1 xilinx_zynq_a9_qemu"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
cross: "RTEMS-uC5282@5"
|
||||
test: NO
|
||||
name: "Ub-22 gcc + RT-5.1 uC5282"
|
||||
name: "Ub-20 gcc + RT-5.1 uC5282"
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
name: "Ub-22 gcc + RT-4.10"
|
||||
name: "Ub-20 gcc + RT-4.10"
|
||||
cross: "RTEMS-pc386-qemu@4.10"
|
||||
test: NO
|
||||
|
||||
- os: ubuntu-22.04
|
||||
- os: ubuntu-20.04
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
name: "Ub-22 gcc + RT-4.9"
|
||||
name: "Ub-20 gcc + RT-4.9"
|
||||
cross: "RTEMS-pc386-qemu@4.9"
|
||||
|
||||
- os: macos-latest
|
||||
@@ -170,10 +171,16 @@ jobs:
|
||||
configuration: debug
|
||||
name: "Win2019 MSC-19, debug"
|
||||
|
||||
- os: windows-2019
|
||||
- os: windows-2022
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
name: "Win2019 mingw"
|
||||
name: "Win2022 mingw"
|
||||
|
||||
- os: windows-2019
|
||||
cmp: clang+vs2019
|
||||
configuration: default
|
||||
name: "Win2019 clang-cl"
|
||||
choco: ["llvm"]
|
||||
|
||||
# Cross builds
|
||||
|
||||
@@ -239,15 +246,10 @@ jobs:
|
||||
matrix:
|
||||
# Job names also name artifacts, character limitations apply
|
||||
include:
|
||||
- name: "CentOS-8"
|
||||
image: centos:8
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
|
||||
- name: "Rocky-9"
|
||||
image: rockylinux:9
|
||||
cmp: gcc
|
||||
configuration: default
|
||||
#- name: "CentOS-7"
|
||||
# image: centos:7
|
||||
# cmp: gcc
|
||||
# configuration: default
|
||||
|
||||
- name: "Fedora-33"
|
||||
image: fedora:33
|
||||
@@ -260,29 +262,47 @@ jobs:
|
||||
configuration: default
|
||||
|
||||
steps:
|
||||
- name: "Fix repo URLs on CentOS-8"
|
||||
# centos:8 is frozen, repos are in the vault
|
||||
if: matrix.image=='centos:8'
|
||||
- name: "Build newer Git"
|
||||
# actions/checkout@v2 wants git >=2.18
|
||||
# centos:7 has 1.8
|
||||
if: matrix.image=='centos:7'
|
||||
run: |
|
||||
sed -i -e "s|mirrorlist=|#mirrorlist=|" \
|
||||
-e "s|#baseurl=http://mirror|baseurl=http://vault|" \
|
||||
/etc/yum.repos.d/CentOS-Linux-{BaseOS,AppStream,Extras,Plus}.repo
|
||||
yum -y install curl make gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker
|
||||
curl https://mirrors.edge.kernel.org/pub/software/scm/git/git-2.29.0.tar.gz | tar -xz
|
||||
cd git-*
|
||||
make -j2 prefix=/usr/local all
|
||||
make prefix=/usr/local install
|
||||
cd ..
|
||||
rm -rf git-*
|
||||
type -a git
|
||||
git --version
|
||||
- name: "Redhat setup"
|
||||
run: |
|
||||
dnf -y install python3 gdb make perl gcc-c++ glibc-devel readline-devel ncurses-devel perl-devel perl-Test-Simple
|
||||
git --version || dnf -y install git
|
||||
python3 --version
|
||||
dnfyum() {
|
||||
dnf -y "$@" || yum -y "$@"
|
||||
return $?
|
||||
}
|
||||
dnfyum install python3 gdb make perl gcc-c++ glibc-devel readline-devel ncurses-devel perl-devel perl-Test-Simple
|
||||
git --version || dnfyum install git
|
||||
# rather than just bite the bullet and link python3 -> python,
|
||||
# people would rather just break all existing scripts...
|
||||
[ -e /usr/bin/python ] || ln -sf python3 /usr/bin/python
|
||||
python --version
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
- name: Automatic core dumper analysis
|
||||
uses: mdavidsaver/ci-core-dumper@master
|
||||
if: matrix.image!='centos:7'
|
||||
- name: Automatic core dumper analysis
|
||||
uses: mdavidsaver/ci-core-dumper@node16
|
||||
if: matrix.image=='centos:7'
|
||||
- name: Prepare and compile dependencies
|
||||
run: python3 .ci/cue.py prepare
|
||||
run: python .ci/cue.py prepare
|
||||
- name: Build main module
|
||||
run: python3 .ci/cue.py build
|
||||
run: python .ci/cue.py build
|
||||
- name: Run main module tests
|
||||
run: python3 .ci/cue.py -T 20M test
|
||||
run: python .ci/cue.py -T 20M test
|
||||
- name: Upload tapfiles Artifact
|
||||
if: ${{ always() }}
|
||||
uses: actions/upload-artifact@v4
|
||||
@@ -292,55 +312,4 @@ jobs:
|
||||
if-no-files-found: ignore
|
||||
- name: Collect and show test results
|
||||
if: ${{ always() }}
|
||||
run: python3 .ci/cue.py -T 5M test-results
|
||||
|
||||
build-docker:
|
||||
name: Docker CentOS-7
|
||||
runs-on: ubuntu-latest
|
||||
env:
|
||||
CMP: gcc
|
||||
BCFG: default
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: true
|
||||
|
||||
- name: Run...
|
||||
run: |
|
||||
env > env.list
|
||||
cat <<EOF > runit.sh
|
||||
#!/bin/sh
|
||||
set -e -x
|
||||
cd /io
|
||||
id
|
||||
|
||||
sed -i s/mirror.centos.org/vault.centos.org/g /etc/yum.repos.d/*.repo
|
||||
sed -i s/^#.*baseurl=http/baseurl=http/g /etc/yum.repos.d/*.repo
|
||||
sed -i s/^mirrorlist=http/#mirrorlist=http/g /etc/yum.repos.d/*.repo
|
||||
yum -y install epel-release
|
||||
yum -y install \
|
||||
curl make gcc curl-devel expat-devel gettext-devel openssl-devel zlib-devel perl-ExtUtils-MakeMaker \
|
||||
python3 gdb make perl gcc-c++ glibc-devel readline-devel ncurses-devel perl-devel perl-Test-Simple \
|
||||
libevent-devel sudo re2c
|
||||
[ -e /usr/bin/python ] || ln -sf /usr/bin/python3 /usr/bin/python
|
||||
|
||||
# fake out cue.py
|
||||
ln -s /bin/true /usr/bin/apt-get
|
||||
|
||||
# quiet warnings spam from perl
|
||||
export LANG=C
|
||||
|
||||
python --version
|
||||
python .ci/cue.py prepare
|
||||
python .ci/cue.py build
|
||||
python .ci/cue.py -T 15M test
|
||||
python .ci/cue.py test-results
|
||||
EOF
|
||||
chmod +x runit.sh
|
||||
docker run --rm --quiet \
|
||||
--pull=always \
|
||||
--env-file env.list \
|
||||
-v `pwd`:/io \
|
||||
centos:7 \
|
||||
/io/runit.sh
|
||||
run: python .ci/cue.py -T 5M test-results
|
||||
|
||||
4
.gitignore
vendored
4
.gitignore
vendored
@@ -19,3 +19,7 @@ O.*/
|
||||
.*.swp
|
||||
.DS_Store
|
||||
.iocsh_history
|
||||
RPMS
|
||||
SRPMS
|
||||
BUILDROOT
|
||||
*.rpm
|
||||
|
||||
6
.gitmodules
vendored
6
.gitmodules
vendored
@@ -1,6 +1,7 @@
|
||||
[submodule "modules/pvData"]
|
||||
path = modules/pvData
|
||||
url = https://github.com/epics-base/pvDataCPP
|
||||
# url = https://github.com/epics-base/pvDataCPP
|
||||
url = git@git.psi.ch:epics_base/pvData.git
|
||||
branch = master
|
||||
[submodule "modules/pvAccess"]
|
||||
path = modules/pvAccess
|
||||
@@ -26,3 +27,6 @@
|
||||
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
|
||||
|
||||
10
Makefile
10
Makefile
@@ -23,3 +23,13 @@ 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)
|
||||
|
||||
rpm:
|
||||
rpmbuild -bb epics-base.spec
|
||||
|
||||
280
configure/CONFIG.msvcCommon
Normal file
280
configure/CONFIG.msvcCommon
Normal file
@@ -0,0 +1,280 @@
|
||||
# MSVC/clang-cl compiler defaults
|
||||
|
||||
CMPLR_CLASS = msvc
|
||||
|
||||
OPT_WHOLE_PROGRAM = YES
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
WINLINK = link
|
||||
|
||||
RCCMD = $(MSVC_PREFIX)rc$(MSVC_SUFFIX) -nologo -l 0x409 $(INCLUDES) -fo $@ $<
|
||||
|
||||
ARCMD = $(MSVC_PREFIX)lib$(MSVC_SUFFIX) -nologo -verbose -out:$@ $(LIB_OPT_LDFLAGS) $(LIBRARY_LD_OBJS)
|
||||
|
||||
#
|
||||
# Configure OS vendor C compiler
|
||||
CC = cl
|
||||
|
||||
# OS vendor c preprocessor
|
||||
CPP = $(CC) -nologo -C -E
|
||||
|
||||
# Configure OS vendor C++ compiler
|
||||
#
|
||||
# -EHsc - generate code for exceptions
|
||||
# -GR - generate code for run time type identification
|
||||
#
|
||||
CCC = $(CC) -EHsc -GR
|
||||
|
||||
# Override CONFIG.gnuCommon settings for cross builds.
|
||||
GNU = NO
|
||||
HDEPENDS_METHOD = MKMF
|
||||
|
||||
# Compiler flags for C files (C++ is below)
|
||||
|
||||
#
|
||||
# -W<d> display warnings at level d
|
||||
# -W4 is for maximum (lint type) warnings
|
||||
# -W3 is for production quality warnings
|
||||
# -W2 displays significant warnings
|
||||
# -W1 is the default and shows severe warnings only
|
||||
# -w<d><n> Set warning C<n> to be shown at level <d>
|
||||
WARN_CFLAGS_YES = -W3
|
||||
WARN_CFLAGS_NO = -W1
|
||||
|
||||
#
|
||||
# -Ox maximum optimizations
|
||||
# -GL whole program optimization
|
||||
# -Oy- re-enable creation of frame pointers
|
||||
OPT_CFLAGS_YES_YES = -Ox -GL -Oy-
|
||||
OPT_CFLAGS_YES_NO = -Ox -Oy-
|
||||
OPT_CFLAGS_YES = $(OPT_CFLAGS_YES_$(OPT_WHOLE_PROGRAM))
|
||||
|
||||
#
|
||||
# -Z7 generate C7 compatible debugging information (inside .obj)
|
||||
# -RTCsu enable run-time error checks
|
||||
OPT_CFLAGS_NO = -Z7 -RTCsu
|
||||
|
||||
# specify object file name and location
|
||||
OBJ_CFLAG = -Fo
|
||||
|
||||
#
|
||||
# the following options are required when
|
||||
# vis c++ compiles the code (and includes
|
||||
# the header files)
|
||||
#
|
||||
# -MT static multithreaded C RTL
|
||||
# -MTd static multithreaded C RTL (debug version)
|
||||
# -MD multithreaded C RTL in DLL
|
||||
# -MDd multithreaded C RTL in DLL (debug version)
|
||||
BUILD_DLL_CFLAGS_NO =
|
||||
BUILD_DLL_CFLAGS_YES = -DEPICS_BUILD_DLL
|
||||
BUILD_DLL_CFLAGS = $(BUILD_DLL_CFLAGS_$(SHARED_LIBRARIES))
|
||||
VISC_CFLAGS_DEBUG_NO = d
|
||||
VISC_CFLAGS_DEBUG_YES =
|
||||
VISC_CFLAGS_DEBUG = $(VISC_CFLAGS_DEBUG_$(HOST_OPT))
|
||||
STATIC_CFLAGS_YES= -MT$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS)
|
||||
STATIC_CFLAGS_NO= -MD$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS) -DEPICS_CALL_DLL
|
||||
|
||||
# Other compiler flags, used for CPP, C and C++
|
||||
#
|
||||
# -FC - Show absolute path of source file in diagnostics
|
||||
# -D__STDC__=0 gives us both:
|
||||
# 1) define STDC for code (pretend ANSI conformance)
|
||||
# 2) set it to 0 to use MS C "extensions" (open for _open etc.)
|
||||
# because MS uses: if __STDC__ ... disable many nice things
|
||||
#
|
||||
CODE_CPPFLAGS += -nologo -FC -D__STDC__=0
|
||||
CODE_CPPFLAGS += -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
|
||||
|
||||
# Compiler flags for C++ files
|
||||
|
||||
#
|
||||
# -W<n> disable warnings from levels > n
|
||||
# -w<n><m> set warning m to level n
|
||||
# -w44355 "'this' used in the base initializer list"
|
||||
# -w44344 "behavior change: use of explicit template arguments results in ..."
|
||||
# -w44251 "class needs to have dll-interface to be used by clients of ..."
|
||||
WARN_CXXFLAGS_YES = -W3 -w44355 -w44344 -w44251
|
||||
WARN_CXXFLAGS_NO = -W1
|
||||
|
||||
# Silence tr1 namespace deprecation warnings
|
||||
WARN_CXXFLAGS += -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
|
||||
|
||||
#
|
||||
# -Ox maximum optimizations
|
||||
# -GL whole program optimization
|
||||
# -Oy- re-enable creation of frame pointers
|
||||
OPT_CXXFLAGS_YES_YES = -Ox -GL -Oy-
|
||||
OPT_CXXFLAGS_YES_NO = -Ox -Oy-
|
||||
OPT_CXXFLAGS_YES = $(OPT_CXXFLAGS_YES_$(OPT_WHOLE_PROGRAM))
|
||||
|
||||
#
|
||||
# -Z7 generate C7 compatible debugging information (inside .obj)
|
||||
# -RTCsu enable run-time error checks
|
||||
OPT_CXXFLAGS_NO = -RTCsu -Z7
|
||||
|
||||
# specify object file name and location
|
||||
OBJ_CXXFLAG = -Fo
|
||||
|
||||
#
|
||||
# the following options are required when
|
||||
# vis c++ compiles the code (and includes
|
||||
# the header files)
|
||||
#
|
||||
# -MT static multithreaded C RTL
|
||||
# -MTd static multithreaded C RTL (debug version)
|
||||
# -MD multithreaded C RTL in DLL
|
||||
# -MDd multithreaded C RTL in DLL (debug version)
|
||||
STATIC_CXXFLAGS_YES= -MT$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS)
|
||||
STATIC_CXXFLAGS_NO= -MD$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS) -DEPICS_CALL_DLL
|
||||
|
||||
STATIC_LDLIBS_YES=ws2_32.lib advapi32.lib user32.lib kernel32.lib winmm.lib dbghelp.lib
|
||||
STATIC_LDLIBS_NO=
|
||||
STATIC_LDFLAGS=
|
||||
RANLIB=
|
||||
|
||||
# add -profile here to run the ms profiler
|
||||
# -LTCG whole program optimization
|
||||
# -incremental:no full linking
|
||||
# -fixed:no generate relocatable code
|
||||
# -version:<major>.<minor> - only 2 components allowed, 0-65535 each
|
||||
# -debug generate debugging info
|
||||
LINK_OPT_FLAGS_WHOLE_YES = -LTCG
|
||||
LINK_OPT_FLAGS_YES = $(LINK_OPT_FLAGS_WHOLE_$(OPT_WHOLE_PROGRAM))
|
||||
LINK_OPT_FLAGS_YES += -incremental:no -opt:ref
|
||||
LINK_OPT_FLAGS_YES += -release $(PROD_VERSION:%=-version:%)
|
||||
LINK_OPT_FLAGS_NO = -debug -incremental:no -fixed:no
|
||||
OPT_LDFLAGS = $(LINK_OPT_FLAGS_$(HOST_OPT))
|
||||
|
||||
LIB_OPT_FLAGS_YES = $(LINK_OPT_FLAGS_WHOLE_$(OPT_WHOLE_PROGRAM))
|
||||
LIB_OPT_LDFLAGS = $(LIB_OPT_FLAGS_$(HOST_OPT))
|
||||
|
||||
ARCH_DEP_CFLAGS=
|
||||
SHRLIB_CFLAGS=
|
||||
|
||||
OS_CLASS=WIN32
|
||||
POSIX=NO
|
||||
|
||||
# ifdef WIN32 looks better that ifeq ($(OS_CLASS),WIN32) ??
|
||||
WIN32=1
|
||||
|
||||
EXE=.exe
|
||||
OBJ=.obj
|
||||
RES=.res
|
||||
|
||||
# MS Visual C++ doesn't recognize *.cc as a C++ source file,
|
||||
# so C++ compiles get the flag -TP
|
||||
COMPILER_CXXFLAGS = -TP
|
||||
|
||||
# Operating system flags
|
||||
OP_SYS_CFLAGS =
|
||||
OP_SYS_CXXFLAGS = $(COMPILER_CXXFLAGS)
|
||||
|
||||
# Files and flags needed to link DLLs (used in RULES_BUILD)
|
||||
WIN32_DLLFLAGS = -subsystem:windows -dll $(OPT_LDFLAGS) \
|
||||
$(USR_LDFLAGS) $(CMD_LDFLAGS) $(TARGET_LDFLAGS) $(LIB_LDFLAGS)
|
||||
|
||||
# Specify dll .def file only if it exists
|
||||
DLL_DEF_FLAG = $(addprefix -def:,$(wildcard ../$(addsuffix .def,$*)))
|
||||
|
||||
# A WIN32 dll has three parts:
|
||||
# x.dll: the real dll (SHRLIBNAME)
|
||||
# x.lib: what you link to progs that use the dll (DLLSTUB_LIBNAME)
|
||||
# x.exp: what you need to build the dll (in no variable)
|
||||
LINK.shrlib = $(WINLINK) -nologo $(WIN32_DLLFLAGS) -out:$@ \
|
||||
-implib:$(@:%$(SHRLIB_SUFFIX)=%$(LIB_SUFFIX)) \
|
||||
$(DLL_DEF_FLAG) $(LIBRARY_LD_OBJS) $(LIBRARY_LD_RESS) $(SHRLIB_LDLIBS)
|
||||
|
||||
# Adjust names of libraries to build
|
||||
SHRLIB_SUFFIX_BASE = .dll
|
||||
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||
SHRLIBNAME_YES = $(BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
||||
LOADABLE_SHRLIBNAME = $(LOADABLE_BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
||||
TESTSHRLIBNAME_YES = $(TESTBUILD_LIBRARY:%=%$(SHRLIB_SUFFIX_BASE))
|
||||
|
||||
# When SHARED_LIBRARIES is YES we are building a DLL shared library.
|
||||
# When SHARED_LIBRARIES is NO we are building an object library
|
||||
DLLSTUB_SUFFIX = .lib
|
||||
DLLSTUB_LIBNAME_YES = $(BUILD_LIBRARY:%=%.lib)
|
||||
DLLSTUB_LIBNAME = $(DLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
|
||||
TESTDLLSTUB_LIBNAME_YES = $(TESTBUILD_LIBRARY:%=%.lib)
|
||||
TESTDLLSTUB_LIBNAME = $(TESTDLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
|
||||
|
||||
LIB_PREFIX=
|
||||
LIB_SUFFIX=.lib
|
||||
LIBNAME_NO = $(BUILD_LIBRARY:%=%.lib)
|
||||
LIBNAME = $(LIBNAME_$(SHARED_LIBRARIES))
|
||||
TESTLIBNAME_NO = $(TESTBUILD_LIBRARY:%=%.lib)
|
||||
TESTLIBNAME = $(TESTLIBNAME_$(SHARED_LIBRARIES))
|
||||
|
||||
# dll install location
|
||||
INSTALL_SHRLIB = $(INSTALL_BIN)
|
||||
|
||||
|
||||
#--------------------------------------------------
|
||||
# Products dependancy definitions
|
||||
|
||||
PROD_DEPLIBS = $(foreach lib, $(PROD_LIBS) $(USR_LIBS), \
|
||||
$(firstword $(wildcard \
|
||||
$(addsuffix /$(DLLSTUB_PREFIX)$(lib)$(DLLSTUB_SUFFIX), \
|
||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||
$(addsuffix /$(SHRLIB_PREFIX)$(lib)*$(SHRLIB_SUFFIX_BASE)*, \
|
||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
|
||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||
) $(addsuffix /$(BUILDLIB_PREFIX)$(lib)$(BUILDLIB_SUFFIX), \
|
||||
$(if $(filter $(lib),$(TESTLIBRARY)),.,$(INSTALL_LIB)))))
|
||||
|
||||
|
||||
PROD_LDLIBS += $($*_DEPLIBS) $(PROD_DEPLIBS)
|
||||
PROD_LDLIBS += $(addsuffix .lib, \
|
||||
$($*_SYS_LIBS) $(PROD_SYS_LIBS) $(USR_SYS_LIBS))
|
||||
|
||||
LDLIBS_STATIC_YES = LDLIBS
|
||||
LDLIBS_SHARED_NO = LDLIBS
|
||||
PROD_LDLIBS += $(STATIC_LDLIBS) \
|
||||
$($(firstword $(LDLIBS_STATIC_$(STATIC_BUILD)) \
|
||||
$(LDLIBS_SHARED_$(SHARED_LIBRARIES))))
|
||||
|
||||
#--------------------------------------------------
|
||||
# Libraries dependancy definitions
|
||||
|
||||
# libs that we need to link the DLL with
|
||||
# (it isnt necessary to rebuild the dll if these change)
|
||||
|
||||
SHRLIB_DEPLIBS = $(foreach lib, $(LIB_LIBS) $(USR_LIBS), \
|
||||
$(firstword $(wildcard \
|
||||
$(addsuffix /$(DLLSTUB_PREFIX)$(lib)$(DLLSTUB_SUFFIX), \
|
||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||
$(addsuffix /$(SHRLIB_PREFIX)$(lib)*$(SHRLIB_SUFFIX_BASE)*, \
|
||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
|
||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||
) $(addsuffix /$(BUILDLIB_PREFIX)$(lib)$(BUILDLIB_SUFFIX), \
|
||||
$(if $(filter $(lib),$(TESTLIBRARY)),.,$(INSTALL_LIB)))))
|
||||
|
||||
|
||||
SHRLIB_LDLIBS += $($*_DLL_DEPLIBS) $($*_DEPLIBS) $(SHRLIB_DEPLIBS)
|
||||
SHRLIB_LDLIBS += $(addsuffix .lib, \
|
||||
$($*_SYS_DLL_LIBS) \
|
||||
$($*_SYS_LIBS) $(LIB_SYS_LIBS) $(USR_SYS_LIBS) )
|
||||
|
||||
#--------------------------------------------------
|
||||
# Linker definition
|
||||
LINK.cpp = $(WINLINK) -nologo $(STATIC_LDFLAGS) $(LDFLAGS) $(PROD_LDFLAGS) \
|
||||
-out:$@ $(PROD_LD_OBJS) $(PROD_LD_RESS) $(PROD_LDLIBS)
|
||||
|
||||
#--------------------------------------------------
|
||||
# UseManifestTool.pl checks MS Visual c++ compiler version number to
|
||||
# decide whether or not to use the Manifest Tool command to embed the
|
||||
# linker created .manifest file into a library or product target.
|
||||
# useManifestTool.pl returns 0(don't use) or 1(use).
|
||||
#
|
||||
MT.exe = $(MSVC_PREFIX)mt$(MSVC_SUFFIX) -nologo -manifest $@.manifest
|
||||
MT_DLL_COMMAND1 = $(MT.exe) "-outputresource:$@;\#2"
|
||||
MT_EXE_COMMAND_YES =
|
||||
MT_EXE_COMMAND_NO = $(MT.exe) "-outputresource:$@;\#1"
|
||||
MT_EXE_COMMAND1 = $(MT_EXE_COMMAND_$(STATIC_BUILD))
|
||||
MT_DLL_COMMAND = $(MT_DLL_COMMAND$(shell $(PERL) $(TOOLS)/useManifestTool.pl))
|
||||
MT_EXE_COMMAND = $(MT_EXE_COMMAND$(shell $(PERL) $(TOOLS)/useManifestTool.pl))
|
||||
@@ -157,7 +157,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.
|
||||
|
||||
@@ -101,6 +101,23 @@ include $(CONFIG)/RULES_FILE_TYPE
|
||||
|
||||
include $(CONFIG)/RULES.Db
|
||||
|
||||
#---------------------------------------------------------------
|
||||
# Do not build anything if current path matches SKIP_BUILDS
|
||||
|
||||
ifneq (,$(strip $(SKIP_BUILDS)))
|
||||
CURRENT_MODULE=$(subst modules/,,$(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
|
||||
|
||||
@@ -227,7 +244,7 @@ $(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)
|
||||
$(MT_EXE_COMMAND)
|
||||
@@ -330,10 +347,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
|
||||
|
||||
@@ -502,6 +515,13 @@ ifneq (,$(strip $(SHRLIB_VERSION)))
|
||||
@$(RM) $(subst $(SHRLIB_SUFFIX),$(SHRLIB_SUFFIX_BASE),$@)
|
||||
ln -s $< $(subst $(SHRLIB_SUFFIX),$(SHRLIB_SUFFIX_BASE),$@)
|
||||
endif # SHRLIB_VERSION
|
||||
else # SHRLIB_SUFFIX
|
||||
ifeq ($(BUILD_CLASS),HOST)
|
||||
ifneq (,$(strip $(SHRLIB_VERSION)))
|
||||
@$(RM) $@.$(SHRLIB_VERSION)
|
||||
ln -s $< $@.$(SHRLIB_VERSION)
|
||||
endif # HOST
|
||||
endif # SHRLIB_VERSION
|
||||
endif # SHRLIB_SUFFIX
|
||||
|
||||
ifneq ($(INSTALL_TCLLIB),$(INSTALL_BIN))
|
||||
|
||||
8
configure/os/CONFIG.Common.RHEL7-x86_64
Normal file
8
configure/os/CONFIG.Common.RHEL7-x86_64
Normal file
@@ -0,0 +1,8 @@
|
||||
# Include definitions common to linux pentium targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-x86_64
|
||||
|
||||
BUILD_CLASS = HOST
|
||||
|
||||
TOOLSET_LOCATION = /opt/rh
|
||||
TOOLSET = devtoolset-12
|
||||
STD_CXXFLAGS = -std=c++20
|
||||
3
configure/os/CONFIG.Common.RHEL7-x86_64-clang
Normal file
3
configure/os/CONFIG.Common.RHEL7-x86_64-clang
Normal file
@@ -0,0 +1,3 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-clang
|
||||
|
||||
BUILD_CLASS = HOST
|
||||
20
configure/os/CONFIG.Common.RHEL8-x86_64
Normal file
20
configure/os/CONFIG.Common.RHEL8-x86_64
Normal file
@@ -0,0 +1,20 @@
|
||||
# Include definitions common to linux pentium targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-x86_64
|
||||
|
||||
BUILD_CLASS = HOST
|
||||
|
||||
TOOLSET_LOCATION = /opt/rh
|
||||
TOOLSET = gcc-toolset-12
|
||||
STD_CXXFLAGS = -std=c++20
|
||||
|
||||
# Fix bug in gcc-toolset-11 calling the old assembler
|
||||
ifneq ($(filter %-11,$(TOOLSET)),)
|
||||
TARGET_CPPFLAGS += $(TOOLSET_DIR:%=-B$(SYSROOT)%/bin)
|
||||
TARGET_LDFLAGS += $(TOOLSET_DIR:%=-B$(SYSROOT)%/bin)
|
||||
endif
|
||||
|
||||
ifneq (($(TOOLSET)),)
|
||||
# Perl requests (native) annobin incompatible with the annobin from any TOOLSET
|
||||
# Disable Perl specific CFLAGS
|
||||
override Cap5_CFLAGS=
|
||||
endif
|
||||
5
configure/os/CONFIG.Common.RHEL8-x86_64-clang
Normal file
5
configure/os/CONFIG.Common.RHEL8-x86_64-clang
Normal file
@@ -0,0 +1,5 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-clang
|
||||
|
||||
BUILD_CLASS = HOST
|
||||
|
||||
STD_CXXFLAGS = -std=c++2a
|
||||
20
configure/os/CONFIG.Common.RHEL9-x86_64
Normal file
20
configure/os/CONFIG.Common.RHEL9-x86_64
Normal file
@@ -0,0 +1,20 @@
|
||||
# Include definitions common to linux pentium targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-x86_64
|
||||
|
||||
BUILD_CLASS = HOST
|
||||
|
||||
TOOLSET_LOCATION = /opt/rh
|
||||
TOOLSET = gcc-toolset-12
|
||||
STD_CXXFLAGS = -std=c++20
|
||||
|
||||
# Fix bug in gcc-toolset-11 calling the old assembler
|
||||
ifneq ($(filter %-11,$(TOOLSET)),)
|
||||
TARGET_CPPFLAGS += $(TOOLSET_DIR:%=-B$(SYSROOT)%/bin)
|
||||
TARGET_LDFLAGS += $(TOOLSET_DIR:%=-B$(SYSROOT)%/bin)
|
||||
endif
|
||||
|
||||
ifneq (($(TOOLSET)),)
|
||||
# Perl requests (native) annobin incompatible with the annobin from any TOOLSET
|
||||
# Disable Perl specific CFLAGS
|
||||
override Cap5_CFLAGS=
|
||||
endif
|
||||
5
configure/os/CONFIG.Common.RHEL9-x86_64-clang
Normal file
5
configure/os/CONFIG.Common.RHEL9-x86_64-clang
Normal file
@@ -0,0 +1,5 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-clang
|
||||
|
||||
BUILD_CLASS = HOST
|
||||
|
||||
STD_CXXFLAGS = -std=c++2a
|
||||
2
configure/os/CONFIG.Common.RTEMS49-pc386
Normal file
2
configure/os/CONFIG.Common.RTEMS49-pc386
Normal file
@@ -0,0 +1,2 @@
|
||||
RTEMS_VERSION = 4.9
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS-pc386
|
||||
2
configure/os/CONFIG.Common.RTEMS51-pc686
Normal file
2
configure/os/CONFIG.Common.RTEMS51-pc686
Normal file
@@ -0,0 +1,2 @@
|
||||
RTEMS_VERSION = 5
|
||||
include $(CONFIG)/os/CONFIG.Common.RTEMS-pc686
|
||||
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 = /opt/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
|
||||
@@ -8,7 +8,7 @@
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Unix valid build types
|
||||
VALID_BUILDS = Host Ioc Command
|
||||
VALID_BUILDS = $(if $(filter HOST,$(BUILD_CLASS)),Host) Ioc Command
|
||||
|
||||
#-------------------------------------------------------
|
||||
# Unix prefix and suffix definitions
|
||||
|
||||
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
|
||||
5
configure/os/CONFIG.Common.V64-ppc604
Normal file
5
configure/os/CONFIG.Common.V64-ppc604
Normal file
@@ -0,0 +1,5 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
|
||||
VXWORKS_VERSION = 6.4
|
||||
|
||||
# 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
|
||||
8
configure/os/CONFIG.Common.V67-ppc604
Normal file
8
configure/os/CONFIG.Common.V67-ppc604
Normal file
@@ -0,0 +1,8 @@
|
||||
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>'
|
||||
|
||||
# compiler tries to access license server (even though no license isneeded)
|
||||
export LM_LICENSE_FILE=37000@lic-windriver.psi.ch
|
||||
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=$(LD_LIBRARY_PATH:%=%:)$(WIND_BASE)/lmapi-5.0/$(WIND_HOST_TYPE)/lib
|
||||
6
configure/os/CONFIG.Common.V69-ppc604
Normal file
6
configure/os/CONFIG.Common.V69-ppc604
Normal file
@@ -0,0 +1,6 @@
|
||||
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
|
||||
VXWORKS_VERSION = 6.9
|
||||
#export LD_LIBRARY_PATH:=$(LD_LIBRARY_PATH:%=%:)($(WIND_BASE)/lmapi-5.0/$(WIND_HOST_TYPE)/lib
|
||||
|
||||
# -fno-implicit-fp causes error: "unable to find a register to spill in class 'FLOAT_REGS'"
|
||||
ARCH_DEP_CFLAGS = -mcpu=604 -mstrict-align
|
||||
16
configure/os/CONFIG.Common.deb10-x86_64
Normal file
16
configure/os/CONFIG.Common.deb10-x86_64
Normal file
@@ -0,0 +1,16 @@
|
||||
# Debian 10
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-x86_64
|
||||
|
||||
BUILD_CLASS = HOST
|
||||
|
||||
STD_CXXFLAGS = -std=c++17
|
||||
|
||||
ifneq ($(EPICS_HOST_ARCH),$(T_A))
|
||||
# Cross compile
|
||||
GNU_DIR = /opt/xgcc/gcc-8.3.0-deb10
|
||||
GNU_TARGET = x86_64-deb10-linux-gnu
|
||||
SYSROOT = $(GNU_DIR)/$(GNU_TARGET)/sys-root
|
||||
CMPLR_PREFIX = $(GNU_TARGET)-
|
||||
endif
|
||||
17
configure/os/CONFIG.Common.deb12-x86_64
Normal file
17
configure/os/CONFIG.Common.deb12-x86_64
Normal file
@@ -0,0 +1,17 @@
|
||||
# Debian 12
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linux-x86_64
|
||||
|
||||
BUILD_CLASS = HOST
|
||||
|
||||
STD_CXXFLAGS = -std=c++17
|
||||
|
||||
ifneq ($(EPICS_HOST_ARCH),$(T_A))
|
||||
# Cross compile
|
||||
GNU_DIR = /opt/xgcc/gcc-12.2.0-deb12
|
||||
GNU_TARGET = x86_64-deb12-linux-gnu
|
||||
SYSROOT = $(GNU_DIR)/$(GNU_TARGET)/sys-root
|
||||
CMPLR_PREFIX = $(GNU_TARGET)-
|
||||
ARCH_DEP_LDFLAGS+=-Wl,-rpath-link,$(SYSROOT)/lib/x86_64-linux-gnu
|
||||
endif
|
||||
28
configure/os/CONFIG.Common.eldk42-ppc4xxFP
Normal file
28
configure/os/CONFIG.Common.eldk42-ppc4xxFP
Normal file
@@ -0,0 +1,28 @@
|
||||
# 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
|
||||
|
||||
# have no C++11
|
||||
STD_CXXFLAGS =
|
||||
|
||||
# suppress strict alias warnings
|
||||
CODE_CPPFLAGS += -fno-strict-aliasing
|
||||
17
configure/os/CONFIG.Common.eldk51-ppc4xxSF
Normal file
17
configure/os/CONFIG.Common.eldk51-ppc4xxSF
Normal file
@@ -0,0 +1,17 @@
|
||||
# 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)
|
||||
|
||||
# have no full C++11
|
||||
STD_CXXFLAGS = -std=c++0x
|
||||
18
configure/os/CONFIG.Common.eldk52-e500v2
Normal file
18
configure/os/CONFIG.Common.eldk52-e500v2
Normal file
@@ -0,0 +1,18 @@
|
||||
# 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 =
|
||||
|
||||
# have no full C++11
|
||||
STD_CXXFLAGS = -std=c++0x
|
||||
20
configure/os/CONFIG.Common.eldk53-ppc4xxFP
Normal file
20
configure/os/CONFIG.Common.eldk53-ppc4xxFP
Normal file
@@ -0,0 +1,20 @@
|
||||
# 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
|
||||
SYSROOT = $(SDKTARGETSYSROOT)/$(GNU_ARCH)
|
||||
|
||||
ARCH_DEP_CPPFLAGS = -m32 -mcpu=440fp -mhard-float
|
||||
AS=$(GNU_BIN)/$(GNU_TARGET)-as
|
||||
17
configure/os/CONFIG.Common.fslqoriq20-e6500_64
Normal file
17
configure/os/CONFIG.Common.fslqoriq20-e6500_64
Normal file
@@ -0,0 +1,17 @@
|
||||
# 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
|
||||
SYSROOT = $(SDK_DIR)/sysroots/$(SDK_TARGET)
|
||||
GNU_DIR = $(SDK_DIR)/sysroots/$(SDK_HOST_ARCH)/usr
|
||||
GNU_BIN = $(GNU_DIR)/bin/$(GNU_TARGET)
|
||||
|
||||
ARCH_DEP_CFLAGS = -mcpu=e6500 -m64 -mhard-float
|
||||
14
configure/os/CONFIG.Common.gcc8-ppc4xxFP
Normal file
14
configure/os/CONFIG.Common.gcc8-ppc4xxFP
Normal file
@@ -0,0 +1,14 @@
|
||||
# DeltaTau PowerPMAC with gcc 8.5
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
ARCH_CLASS = ppc
|
||||
|
||||
GNU_DIR = /opt/xgcc/gcc-8.5.0
|
||||
GNU_TARGET = powerpc-ppmac-linux-gnu
|
||||
|
||||
ARCH_DEP_CPPFLAGS = -m32 -mcpu=440fp -mhard-float
|
||||
ARCH_DEP_LDFLAGS += -Wl,-rpath-link,$(GNU_DIR)/$(GNU_TARGET)/sys-root/lib/powerpc-linux-gnu
|
||||
|
||||
STD_CXXFLAGS = -std=c++17
|
||||
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++
|
||||
@@ -24,13 +24,13 @@ STATIC_LDFLAGS_NO=
|
||||
STATIC_LDLIBS_YES= -Wl,-Bdynamic
|
||||
|
||||
# Set runtime path for shared libraries if LINKER_USE_RPATH=YES
|
||||
SHRLIBDIR_RPATH_LDFLAGS_YES = $(SHRLIB_DEPLIB_DIRS:%=-Wl,-rpath,%)
|
||||
SHRLIBDIR_RPATH_LDFLAGS_YES = $(subst $(abspath $(LINKER_ORIGIN_ROOT)),$(FINAL_LOCATION),$(SHRLIB_DEPLIB_DIRS:%=-Wl,-rpath,%)) $(SHRLIB_DEPLIB_DIRS:%=-Wl,-rpath-link,%)
|
||||
SHRLIBDIR_RPATH_LDFLAGS_ORIGIN = $(shell $(MAKERPATH) -O '\$$ORIGIN' -F $(FINAL_DIR) -R $(LINKER_ORIGIN_ROOT) $(SHRLIB_DEPLIB_DIRS))
|
||||
SHRLIBDIR_LDFLAGS += \
|
||||
$(SHRLIBDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH))
|
||||
|
||||
# Set runtime path for products if LINKER_USE_RPATH=YES
|
||||
PRODDIR_RPATH_LDFLAGS_YES = $(PROD_DEPLIB_DIRS:%=-Wl,-rpath,%)
|
||||
PRODDIR_RPATH_LDFLAGS_YES = $(subst $(abspath $(LINKER_ORIGIN_ROOT)),$(FINAL_LOCATION),$(PROD_DEPLIB_DIRS:%=-Wl,-rpath,%)) $(SHRLIB_DEPLIB_DIRS:%=-Wl,-rpath-link,%)
|
||||
PRODDIR_RPATH_LDFLAGS_ORIGIN = $(shell $(MAKERPATH) -O '\$$ORIGIN' -F $(FINAL_DIR) -R $(LINKER_ORIGIN_ROOT) $(PROD_DEPLIB_DIRS))
|
||||
PRODDIR_LDFLAGS += \
|
||||
$(PRODDIR_RPATH_LDFLAGS_$(LINKER_USE_RPATH))
|
||||
|
||||
25
configure/os/CONFIG.Common.moxa42-armv6l
Normal file
25
configure/os/CONFIG.Common.moxa42-armv6l
Normal file
@@ -0,0 +1,25 @@
|
||||
# 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=/opt/moxa/arm-linux-4.4.2-v4
|
||||
GNU_TARGET=arm
|
||||
ARCH_DEP_LDFLAGS+=-Wl,-rpath-link,$(GNU_DIR)/arm-none-linux-gnueabi/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
|
||||
|
||||
# have no full C++11
|
||||
STD_CXXFLAGS = -std=c++0x
|
||||
|
||||
# suppress strict alias warnings
|
||||
CODE_CPPFLAGS += -fno-strict-aliasing
|
||||
|
||||
# accept4() exists but does not work
|
||||
# Give fake __rtems__ macro to posix/osdSock.c because that disables accept4()
|
||||
osdSock_CFLAGS += -D__rtems__
|
||||
18
configure/os/CONFIG.Common.mvl40-xscale_be
Normal file
18
configure/os/CONFIG.Common.mvl40-xscale_be
Normal file
@@ -0,0 +1,18 @@
|
||||
# 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=/opt/moxa/xscale_be/armv5teb-montavista-linuxeabi
|
||||
|
||||
ARCH_DEP_CFLAGS += -funwind-tables
|
||||
|
||||
# have no C++11
|
||||
STD_CXXFLAGS =
|
||||
|
||||
# Cannot build PVA because of missing boost support
|
||||
SKIP_BUILDS = pv% normativeTypes
|
||||
21
configure/os/CONFIG.Common.nilrt7-armv7a
Normal file
21
configure/os/CONFIG.Common.nilrt7-armv7a
Normal file
@@ -0,0 +1,21 @@
|
||||
# National Instruments CompactRIO running LabView RT 19.5.1
|
||||
# requires RPM gcc-c++-arm-linux-gnu
|
||||
|
||||
# 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
|
||||
GNU_BIN = /opt/RHEL7/bin
|
||||
|
||||
# Needed on RHEL9:
|
||||
export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH:%=%:)/usr/$$LIB:/opt/RHEL7/$$LIB
|
||||
|
||||
ARCH_DEP_CPPFLAGS += -march=armv7-a -mthumb-interwork -mfloat-abi=softfp -mfpu=neon
|
||||
ARCH_DEP_CXXFLAGS += -I=/usr/include/c++/4.7.2/arm-nilrt-linux-gnueabi
|
||||
ARCH_DEP_CXXFLAGS += -I=/usr/include/c++/4.7.2
|
||||
|
||||
COMMANDLINE_LIBRARY = READLINE_NCURSES
|
||||
44
configure/os/CONFIG.Common.raspbian-arm
Normal file
44
configure/os/CONFIG.Common.raspbian-arm
Normal file
@@ -0,0 +1,44 @@
|
||||
# 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)/$(SDK_TARGET)/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)/$(SDK_TARGET)/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
|
||||
|
||||
# gcc 4.9.3 for 64 bit hosts
|
||||
# arm-rpi-4.9.3-linux-gnueabihf
|
||||
|
||||
GNU_DIR = $(SDK_DIR)/$(SDK_TARGET)
|
||||
GNU_TARGET = $(if $(filter arm-bcm2708%,SDK_TARGET),$(SDK_TARGET),arm-linux-gnueabihf)
|
||||
18
configure/os/CONFIG.Common.win32-x86-clang
Normal file
18
configure/os/CONFIG.Common.win32-x86-clang
Normal file
@@ -0,0 +1,18 @@
|
||||
# CONFIG.Common.win32-x86-clang
|
||||
#
|
||||
# Definitions for win32-x86-clang target build
|
||||
# Override these definitions in CONFIG_SITE.Common.win32-x86-clang
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Include definitions common to msvc compiler
|
||||
include $(CONFIG)/CONFIG.msvcCommon
|
||||
|
||||
VALID_BUILDS = Ioc Host Command
|
||||
|
||||
# Override CONFIG.msvcCommon settings:
|
||||
MSVC_PREFIX = llvm-
|
||||
CC = clang-cl$(MSVC_SUFFIX) --target=i686-pc-windows-msvc
|
||||
WINLINK = lld-link$(MSVC_SUFFIX)
|
||||
|
||||
# clang-cl does not support /GL option
|
||||
OPT_WHOLE_PROGRAM = NO
|
||||
18
configure/os/CONFIG.Common.windows-x64-clang
Normal file
18
configure/os/CONFIG.Common.windows-x64-clang
Normal file
@@ -0,0 +1,18 @@
|
||||
# CONFIG.Common.windows-x64-clang
|
||||
#
|
||||
# Definitions for windows-x64-clang target builds
|
||||
# Sites may override these definitions in CONFIG_SITE.Common.windows-x64-clang
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Include definitions common to msvc compiler
|
||||
include $(CONFIG)/CONFIG.msvcCommon
|
||||
|
||||
VALID_BUILDS = Ioc Host Command
|
||||
|
||||
# Override CONFIG.msvcCommon settings:
|
||||
MSVC_PREFIX = llvm-
|
||||
CC = clang-cl$(MSVC_SUFFIX) --target=x86_64-pc-windows-msvc
|
||||
WINLINK = lld-link$(MSVC_SUFFIX)
|
||||
|
||||
# clang-cl does not support /GL option
|
||||
OPT_WHOLE_PROGRAM = NO
|
||||
15
configure/os/CONFIG.Common.yocto21-aarch64
Normal file
15
configure/os/CONFIG.Common.yocto21-aarch64
Normal file
@@ -0,0 +1,15 @@
|
||||
# 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/2018.1
|
||||
SDK_HOST_ARCH = $(GNU_HOST_ARCH_64)-$(SDK)-$(GNU_HOST_OS)
|
||||
SDK_TARGET = aarch64-xilinx-linux
|
||||
GNU_TARGET = $(SDK_TARGET)
|
||||
SYSROOT = $(SDK_DIR)/sysroots/$(SDK_TARGET)
|
||||
GNU_DIR = $(SDK_DIR)/sysroots/$(SDK_HOST_ARCH)/usr
|
||||
GNU_BIN = $(GNU_DIR)/bin/$(GNU_TARGET)
|
||||
19
configure/os/CONFIG.Common.yocto40-aarch64
Normal file
19
configure/os/CONFIG.Common.yocto40-aarch64
Normal file
@@ -0,0 +1,19 @@
|
||||
# XILINX Zynq with Yocto 4.0 toolchain
|
||||
|
||||
# Include definitions common to all Linux targets
|
||||
include $(CONFIG)/os/CONFIG.Common.linuxCommon
|
||||
|
||||
ARCH_CLASS = arm64
|
||||
|
||||
SDK = pokysdk
|
||||
SDK_DIR = /opt/yocto40-aarch64
|
||||
SDK_HOST_ARCH = $(GNU_HOST_ARCH_64)-$(SDK)-$(GNU_HOST_OS)
|
||||
SDK_TARGET = cortexa53-poky-linux
|
||||
GNU_TARGET = aarch64-poky-linux
|
||||
SYSROOT = $(SDK_DIR)/sysroots/$(SDK_TARGET)
|
||||
GNU_DIR = $(SDK_DIR)/sysroots/$(SDK_HOST_ARCH)/usr
|
||||
GNU_BIN = $(GNU_DIR)/bin/$(GNU_TARGET)
|
||||
|
||||
ARCH_DEP_CPPFLAGS = -mcpu=cortex-a53 -march=armv8-a+crc
|
||||
|
||||
STD_CXXFLAGS = -std=c++23
|
||||
11
configure/os/CONFIG.Linux.windows-x64
Normal file
11
configure/os/CONFIG.Linux.windows-x64
Normal file
@@ -0,0 +1,11 @@
|
||||
include $(CONFIG)/os/CONFIG.windows-x64.windows-x64
|
||||
|
||||
VALID_BUILDS = Ioc Command
|
||||
|
||||
MSVC_VERSION ?= 2019
|
||||
PATH := /opt/gfa-wine/bin:/opt/wine-msvc-$(MSVC_VERSION)/bin/x64:$(PATH)
|
||||
export WINEPREFIX = $(HOME)/.wine-$(EPICS_HOST_ARCH)
|
||||
export WINEDEBUG=fixme-all
|
||||
export WINEDLLOVERRIDES="mscoree,mshtml="
|
||||
export WINE = wine64
|
||||
export WINEPATH = $(realpath $(INSTALL_BIN))
|
||||
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
|
||||
3
configure/os/CONFIG.RHEL7-x86_64.windows-x64
Normal file
3
configure/os/CONFIG.RHEL7-x86_64.windows-x64
Normal file
@@ -0,0 +1,3 @@
|
||||
# MSVC_VERSION 2019 in wine 4 for on RHEL7 would require winetricks
|
||||
MSVC_VERSION = 2017
|
||||
include $(CONFIG)/os/CONFIG.Linux.windows-x64
|
||||
3
configure/os/CONFIG.RHEL8-x86_64.Common
Normal file
3
configure/os/CONFIG.RHEL8-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
|
||||
25
configure/os/CONFIG.RHEL8-x86_64.RHEL7-x86_64
Normal file
25
configure/os/CONFIG.RHEL8-x86_64.RHEL7-x86_64
Normal file
@@ -0,0 +1,25 @@
|
||||
# Include common linux definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
|
||||
# "Cross compile" for RHEL7-x86_64
|
||||
# Expects RHEL7 RPMs c++ and readline-devel installed
|
||||
# in $(SYSROOT)
|
||||
# This can be installed on RHEL7 with:
|
||||
# yum install --installroot=$(SYSROOT) <packages>
|
||||
# (Assuming $(SYSROOT) is on a shared network volume.)
|
||||
# Optionally use a newer TOOLSET (installed on $(SYSROOT)).
|
||||
|
||||
SYSROOT = /opt/RHEL7
|
||||
|
||||
# "Cross" TOOLSET progs need to find their libraries
|
||||
export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH:%=%:)$(TOOLSET_DIR:%=$(SYSROOT)%/usr/$$LIB)
|
||||
|
||||
# The linker has problems to find indirectly referenced libraries
|
||||
ARCH_DEP_LDFLAGS+=-Wl,-rpath-link,$(INSTALL_LIB)
|
||||
|
||||
# These programs have library problems when using them
|
||||
# from SYSROOT but without TOOLSET.
|
||||
# But provinding LD_LIBRARY PATH crashes other progams.
|
||||
# Our host versions work just fine.
|
||||
AR = ar -rc
|
||||
RANLIB = ranlib
|
||||
2
configure/os/CONFIG.RHEL8-x86_64.RHEL8-x86_64
Normal file
2
configure/os/CONFIG.RHEL8-x86_64.RHEL8-x86_64
Normal file
@@ -0,0 +1,2 @@
|
||||
# Include common linux definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
1
configure/os/CONFIG.RHEL8-x86_64.win32-x86-mingw
Normal file
1
configure/os/CONFIG.RHEL8-x86_64.win32-x86-mingw
Normal file
@@ -0,0 +1 @@
|
||||
include $(CONFIG)/os/CONFIG.linux-x86_64.win32-x86-mingw
|
||||
1
configure/os/CONFIG.RHEL8-x86_64.windows-x64
Normal file
1
configure/os/CONFIG.RHEL8-x86_64.windows-x64
Normal file
@@ -0,0 +1 @@
|
||||
include $(CONFIG)/os/CONFIG.Linux.windows-x64
|
||||
1
configure/os/CONFIG.RHEL8-x86_64.windows-x64-mingw
Normal file
1
configure/os/CONFIG.RHEL8-x86_64.windows-x64-mingw
Normal file
@@ -0,0 +1 @@
|
||||
include $(CONFIG)/os/CONFIG.linux-x86_64.windows-x64-mingw
|
||||
9
configure/os/CONFIG.RHEL9-x86_64.Common
Normal file
9
configure/os/CONFIG.RHEL9-x86_64.Common
Normal file
@@ -0,0 +1,9 @@
|
||||
#CONFIG.$(EPICS_HOST_ARCH).Common is required by build system
|
||||
#Include definitions common to linux hosts
|
||||
include $(CONFIG)/os/CONFIG.linux-x86_64.Common
|
||||
|
||||
# Windows 32 bit cross builds using mingw
|
||||
# (broken on RHEL8)
|
||||
|
||||
CROSS_COMPILER_TARGET_ARCHS += win32-x86-mingw
|
||||
CROSS_COMPILER_RUNTEST_ARHCS += win32-x86-mingw
|
||||
18
configure/os/CONFIG.RHEL9-x86_64.RHEL7-x86_64
Normal file
18
configure/os/CONFIG.RHEL9-x86_64.RHEL7-x86_64
Normal file
@@ -0,0 +1,18 @@
|
||||
# Include common linux definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
|
||||
# "Cross compile" for RHEL7-x86_64
|
||||
# Expects RHEL7 RPMs c++ and readline-devel installed
|
||||
# in $(SYSROOT)
|
||||
# This can be installed on RHEL7 with:
|
||||
# yum install --installroot=$(SYSROOT) <packages>
|
||||
# (Assuming $(SYSROOT) is on a shared network volume.)
|
||||
# Optionally use a newer TOOLSET (installed on $(SYSROOT)).
|
||||
|
||||
SYSROOT = /opt/RHEL7
|
||||
|
||||
# "Cross" TOOLSET progs need to find their libraries
|
||||
export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH:%=%:)$(TOOLSET_DIR:%=$(SYSROOT)%/usr/$$LIB:)/usr/$$LIB:$(SYSROOT)/usr/$$LIB
|
||||
|
||||
# The linker has problems to find indirectly referenced libraries
|
||||
PROD_LDLIBS += $(LDLIBS)
|
||||
22
configure/os/CONFIG.RHEL9-x86_64.RHEL8-x86_64
Normal file
22
configure/os/CONFIG.RHEL9-x86_64.RHEL8-x86_64
Normal file
@@ -0,0 +1,22 @@
|
||||
# Include common linux definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
|
||||
# "Cross compile" for RHEL8-x86_64
|
||||
# Expects RHEL8 RPMs gcc-toolset-12-gcc-c++ and readline-devel
|
||||
# to be installed in $(SYSROOT)
|
||||
# These can be installed on RHEL8 with:
|
||||
# yum install --installroot=$(SYSROOT) <packages>
|
||||
# (Assuming $(SYSROOT) is on a shared network volume.)
|
||||
|
||||
SYSROOT = /opt/RHEL8
|
||||
|
||||
# "Cross" TOOLSET progs need to find their libraries.
|
||||
# But linker gets confused with LD_LIBRARY_PATH.
|
||||
# Thus only wrap the compiler.
|
||||
WRAPPER = -wrapper env,LD_LIBRARY_PATH=$(TOOLSET_DIR:%=$(SYSROOT)%/usr/lib64:)/usr/lib64:$(SYSROOT)/usr/lib64
|
||||
TARGET_CPPFLAGS += $(WRAPPER)
|
||||
|
||||
# These programs as cross tools would also need LD_LIBRARY_PATH.
|
||||
# But but our host versions work just fine.
|
||||
AR = ar -rc
|
||||
RANLIB = ranlib
|
||||
2
configure/os/CONFIG.RHEL9-x86_64.RHEL9-x86_64
Normal file
2
configure/os/CONFIG.RHEL9-x86_64.RHEL9-x86_64
Normal file
@@ -0,0 +1,2 @@
|
||||
# Include common linux definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
1
configure/os/CONFIG.RHEL9-x86_64.win32-x86-mingw
Normal file
1
configure/os/CONFIG.RHEL9-x86_64.win32-x86-mingw
Normal file
@@ -0,0 +1 @@
|
||||
include $(CONFIG)/os/CONFIG.linux-x86_64.win32-x86-mingw
|
||||
1
configure/os/CONFIG.RHEL9-x86_64.windows-x64
Normal file
1
configure/os/CONFIG.RHEL9-x86_64.windows-x64
Normal file
@@ -0,0 +1 @@
|
||||
include $(CONFIG)/os/CONFIG.Linux.windows-x64
|
||||
1
configure/os/CONFIG.RHEL9-x86_64.windows-x64-mingw
Normal file
1
configure/os/CONFIG.RHEL9-x86_64.windows-x64-mingw
Normal file
@@ -0,0 +1 @@
|
||||
include $(CONFIG)/os/CONFIG.linux-x86_64.windows-x64-mingw
|
||||
3
configure/os/CONFIG.deb10-x86_64.Common
Normal file
3
configure/os/CONFIG.deb10-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
|
||||
3
configure/os/CONFIG.deb10-x86_64.deb10-x86_64
Normal file
3
configure/os/CONFIG.deb10-x86_64.deb10-x86_64
Normal file
@@ -0,0 +1,3 @@
|
||||
# Include common linux definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
GNU_DIR=/usr
|
||||
3
configure/os/CONFIG.deb12-x86_64.Common
Normal file
3
configure/os/CONFIG.deb12-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
|
||||
3
configure/os/CONFIG.deb12-x86_64.deb12-x86_64
Normal file
3
configure/os/CONFIG.deb12-x86_64.deb12-x86_64
Normal file
@@ -0,0 +1,3 @@
|
||||
# Include common linux definitions
|
||||
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
|
||||
GNU_DIR=/usr
|
||||
9
configure/os/CONFIG.win32-x86-clang.Common
Normal file
9
configure/os/CONFIG.win32-x86-clang.Common
Normal file
@@ -0,0 +1,9 @@
|
||||
# CONFIG.win32-x86-clang.Common
|
||||
#
|
||||
# Definitions for win32-x86-clang host arch
|
||||
# Override these definitions in CONFIG_SITE.win32-x86-clang.Common
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Include definitions common to win32-x86 hosts
|
||||
include $(CONFIG)/os/CONFIG.win32-x86.Common
|
||||
|
||||
@@ -4,286 +4,7 @@
|
||||
# Override these definitions in CONFIG_SITE.win32-x86.win32-x86
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Win32 valid build types and include directory suffixes
|
||||
# Include common msvc compiler definitions
|
||||
include $(CONFIG)/CONFIG.msvcCommon
|
||||
|
||||
VALID_BUILDS = Host Ioc Command
|
||||
|
||||
CMPLR_CLASS = msvc
|
||||
|
||||
OPT_WHOLE_PROGRAM = YES
|
||||
|
||||
#-------------------------------------------------------
|
||||
|
||||
WINLINK = link
|
||||
|
||||
RCCMD = rc -nologo -l 0x409 $(INCLUDES) -fo $@ $<
|
||||
|
||||
ARCMD = lib -nologo -verbose -out:$@ $(LIB_OPT_LDFLAGS) $(LIBRARY_LD_OBJS)
|
||||
|
||||
#
|
||||
# Configure OS vendor C compiler
|
||||
CC = cl
|
||||
|
||||
# Override CONFIG.gnuCommon settings for cross builds.
|
||||
GNU = NO
|
||||
HDEPENDS_METHOD = MKMF
|
||||
|
||||
# Compiler flags for C files (C++ is below)
|
||||
|
||||
#
|
||||
# -W<d> display warnings at level d
|
||||
# -W4 is for maximum (lint type) warnings
|
||||
# -W3 is for production quality warnings
|
||||
# -W2 displays significant warnings
|
||||
# -W1 is the default and shows severe warnings only
|
||||
# -w<d><n> Set warning C<n> to be shown at level <d>
|
||||
WARN_CFLAGS_YES = -W3
|
||||
WARN_CFLAGS_NO = -W1
|
||||
|
||||
#
|
||||
# -Ox maximum optimizations
|
||||
# -GL whole program optimization
|
||||
# -Oy- re-enable creation of frame pointers
|
||||
OPT_CFLAGS_YES_YES = -Ox -GL -Oy-
|
||||
OPT_CFLAGS_YES_NO = -Ox -Oy-
|
||||
OPT_CFLAGS_YES = $(OPT_CFLAGS_YES_$(OPT_WHOLE_PROGRAM))
|
||||
|
||||
#
|
||||
# -Z7 generate C7 compatible debugging information (inside .obj)
|
||||
# -RTCsu enable run-time error checks
|
||||
OPT_CFLAGS_NO = -Z7 -RTCsu
|
||||
|
||||
# specify object file name and location
|
||||
OBJ_CFLAG = -Fo
|
||||
|
||||
#
|
||||
# the following options are required when
|
||||
# vis c++ compiles the code (and includes
|
||||
# the header files)
|
||||
#
|
||||
# -MT static multithreaded C RTL
|
||||
# -MTd static multithreaded C RTL (debug version)
|
||||
# -MD multithreaded C RTL in DLL
|
||||
# -MDd multithreaded C RTL in DLL (debug version)
|
||||
BUILD_DLL_CFLAGS_NO =
|
||||
BUILD_DLL_CFLAGS_YES = -DEPICS_BUILD_DLL
|
||||
BUILD_DLL_CFLAGS = $(BUILD_DLL_CFLAGS_$(SHARED_LIBRARIES))
|
||||
VISC_CFLAGS_DEBUG_NO = d
|
||||
VISC_CFLAGS_DEBUG_YES =
|
||||
VISC_CFLAGS_DEBUG = $(VISC_CFLAGS_DEBUG_$(HOST_OPT))
|
||||
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
|
||||
|
||||
# Configure OS vendor C++ compiler
|
||||
#
|
||||
# -EHsc - generate code for exceptions
|
||||
# -GR - generate code for run time type identification
|
||||
#
|
||||
CCC = cl -EHsc -GR
|
||||
|
||||
# Other compiler flags, used for CPP, C and C++
|
||||
#
|
||||
# -FC - Show absolute path of source file in diagnostics
|
||||
# -D__STDC__=0 gives us both:
|
||||
# 1) define STDC for code (pretend ANSI conformance)
|
||||
# 2) set it to 0 to use MS C "extensions" (open for _open etc.)
|
||||
# because MS uses: if __STDC__ ... disable many nice things
|
||||
#
|
||||
CODE_CPPFLAGS += -nologo -FC -D__STDC__=0
|
||||
CODE_CPPFLAGS += -D_CRT_SECURE_NO_DEPRECATE -D_CRT_NONSTDC_NO_DEPRECATE
|
||||
|
||||
|
||||
# Compiler flags for C++ files
|
||||
|
||||
#
|
||||
# -W<n> disable warnings from levels > n
|
||||
# -w<n><m> set warning m to level n
|
||||
# -w44355 "'this' used in the base initializer list"
|
||||
# -w44344 "behavior change: use of explicit template arguments results in ..."
|
||||
# -w44251 "class needs to have dll-interface to be used by clients of ..."
|
||||
WARN_CXXFLAGS_YES = -W3 -w44355 -w44344 -w44251
|
||||
WARN_CXXFLAGS_NO = -W1
|
||||
|
||||
# Silence tr1 namespace deprecation warnings
|
||||
WARN_CXXFLAGS += -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
|
||||
|
||||
#
|
||||
# -Ox maximum optimizations
|
||||
# -GL whole program optimization
|
||||
# -Oy- re-enable creation of frame pointers
|
||||
OPT_CXXFLAGS_YES_YES = -Ox -GL -Oy-
|
||||
OPT_CXXFLAGS_YES_NO = -Ox -Oy-
|
||||
OPT_CXXFLAGS_YES = $(OPT_CXXFLAGS_YES_$(OPT_WHOLE_PROGRAM))
|
||||
|
||||
#
|
||||
# -Z7 generate C7 compatible debugging information (inside .obj)
|
||||
# -RTCsu enable run-time error checks
|
||||
OPT_CXXFLAGS_NO = -RTCsu -Z7
|
||||
|
||||
# specify object file name and location
|
||||
OBJ_CXXFLAG = -Fo
|
||||
|
||||
#
|
||||
# the following options are required when
|
||||
# vis c++ compiles the code (and includes
|
||||
# the header files)
|
||||
#
|
||||
# -MT static multithreaded C RTL
|
||||
# -MTd static multithreaded C RTL (debug version)
|
||||
# -MD multithreaded C RTL in DLL
|
||||
# -MDd multithreaded C RTL in DLL (debug version)
|
||||
STATIC_CXXFLAGS_YES= -MT$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS)
|
||||
STATIC_CXXFLAGS_NO= -MD$(VISC_CFLAGS_DEBUG) $(BUILD_DLL_CFLAGS) -DEPICS_CALL_DLL
|
||||
|
||||
STATIC_LDLIBS_YES=ws2_32.lib advapi32.lib user32.lib kernel32.lib winmm.lib dbghelp.lib
|
||||
STATIC_LDLIBS_NO=
|
||||
STATIC_LDFLAGS=
|
||||
RANLIB=
|
||||
|
||||
# add -profile here to run the ms profiler
|
||||
# -LTCG whole program optimization
|
||||
# -incremental:no full linking
|
||||
# -fixed:no generate relocatable code
|
||||
# -version:<major>.<minor> - only 2 components allowed, 0-65535 each
|
||||
# -debug generate debugging info
|
||||
LINK_OPT_FLAGS_WHOLE_YES = -LTCG
|
||||
LINK_OPT_FLAGS_YES = $(LINK_OPT_FLAGS_WHOLE_$(OPT_WHOLE_PROGRAM))
|
||||
LINK_OPT_FLAGS_YES += -incremental:no -opt:ref
|
||||
LINK_OPT_FLAGS_YES += -release $(PROD_VERSION:%=-version:%)
|
||||
LINK_OPT_FLAGS_NO = -debug -incremental:no -fixed:no
|
||||
OPT_LDFLAGS = $(LINK_OPT_FLAGS_$(HOST_OPT))
|
||||
|
||||
LIB_OPT_FLAGS_YES = $(LINK_OPT_FLAGS_WHOLE_$(OPT_WHOLE_PROGRAM))
|
||||
LIB_OPT_LDFLAGS = $(LIB_OPT_FLAGS_$(HOST_OPT))
|
||||
|
||||
ARCH_DEP_CFLAGS=
|
||||
SHRLIB_CFLAGS=
|
||||
|
||||
OS_CLASS=WIN32
|
||||
POSIX=NO
|
||||
|
||||
# ifdef WIN32 looks better that ifeq ($(OS_CLASS),WIN32) ??
|
||||
WIN32=1
|
||||
|
||||
EXE=.exe
|
||||
OBJ=.obj
|
||||
RES=.res
|
||||
|
||||
# MS Visual C++ doesn't recognize *.cc as a C++ source file,
|
||||
# so C++ compiles get the flag -TP
|
||||
COMPILER_CXXFLAGS = -TP
|
||||
|
||||
# Operating system flags
|
||||
OP_SYS_CFLAGS =
|
||||
OP_SYS_CXXFLAGS = $(COMPILER_CXXFLAGS)
|
||||
|
||||
# Files and flags needed to link DLLs (used in RULES_BUILD)
|
||||
WIN32_DLLFLAGS = -subsystem:windows -dll $(OPT_LDFLAGS) \
|
||||
$(USR_LDFLAGS) $(CMD_LDFLAGS) $(TARGET_LDFLAGS) $(LIB_LDFLAGS)
|
||||
|
||||
# Specify dll .def file only if it exists
|
||||
DLL_DEF_FLAG = $(addprefix -def:,$(wildcard ../$(addsuffix .def,$*)))
|
||||
|
||||
# A WIN32 dll has three parts:
|
||||
# x.dll: the real dll (SHRLIBNAME)
|
||||
# x.lib: what you link to progs that use the dll (DLLSTUB_LIBNAME)
|
||||
# x.exp: what you need to build the dll (in no variable)
|
||||
LINK.shrlib = $(WINLINK) -nologo $(WIN32_DLLFLAGS) -out:$@ \
|
||||
-implib:$(@:%$(SHRLIB_SUFFIX)=%$(LIB_SUFFIX)) \
|
||||
$(DLL_DEF_FLAG) $(LIBRARY_LD_OBJS) $(LIBRARY_LD_RESS) $(SHRLIB_LDLIBS)
|
||||
|
||||
# Adjust names of libraries to build
|
||||
SHRLIB_SUFFIX_BASE = .dll
|
||||
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||
SHRLIBNAME_YES = $(BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
||||
LOADABLE_SHRLIBNAME = $(LOADABLE_BUILD_LIBRARY:%=%$(SHRLIB_SUFFIX))
|
||||
TESTSHRLIBNAME_YES = $(TESTBUILD_LIBRARY:%=%$(SHRLIB_SUFFIX_BASE))
|
||||
|
||||
# When SHARED_LIBRARIES is YES we are building a DLL shared library.
|
||||
# When SHARED_LIBRARIES is NO we are building an object library
|
||||
DLLSTUB_SUFFIX = .lib
|
||||
DLLSTUB_LIBNAME_YES = $(BUILD_LIBRARY:%=%.lib)
|
||||
DLLSTUB_LIBNAME = $(DLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
|
||||
TESTDLLSTUB_LIBNAME_YES = $(TESTBUILD_LIBRARY:%=%.lib)
|
||||
TESTDLLSTUB_LIBNAME = $(TESTDLLSTUB_LIBNAME_$(SHARED_LIBRARIES))
|
||||
|
||||
LIB_PREFIX=
|
||||
LIB_SUFFIX=.lib
|
||||
LIBNAME_NO = $(BUILD_LIBRARY:%=%.lib)
|
||||
LIBNAME = $(LIBNAME_$(SHARED_LIBRARIES))
|
||||
TESTLIBNAME_NO = $(TESTBUILD_LIBRARY:%=%.lib)
|
||||
TESTLIBNAME = $(TESTLIBNAME_$(SHARED_LIBRARIES))
|
||||
|
||||
# dll install location
|
||||
INSTALL_SHRLIB = $(INSTALL_BIN)
|
||||
|
||||
|
||||
#--------------------------------------------------
|
||||
# Products dependancy definitions
|
||||
|
||||
PROD_DEPLIBS = $(foreach lib, $(PROD_LIBS) $(USR_LIBS), \
|
||||
$(firstword $(wildcard \
|
||||
$(addsuffix /$(DLLSTUB_PREFIX)$(lib)$(DLLSTUB_SUFFIX), \
|
||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||
$(addsuffix /$(SHRLIB_PREFIX)$(lib)*$(SHRLIB_SUFFIX_BASE)*, \
|
||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
|
||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||
) $(addsuffix /$(BUILDLIB_PREFIX)$(lib)$(BUILDLIB_SUFFIX), \
|
||||
$(if $(filter $(lib),$(TESTLIBRARY)),.,$(INSTALL_LIB)))))
|
||||
|
||||
|
||||
PROD_LDLIBS += $($*_DEPLIBS) $(PROD_DEPLIBS)
|
||||
PROD_LDLIBS += $(addsuffix .lib, \
|
||||
$($*_SYS_LIBS) $(PROD_SYS_LIBS) $(USR_SYS_LIBS))
|
||||
|
||||
LDLIBS_STATIC_YES = LDLIBS
|
||||
LDLIBS_SHARED_NO = LDLIBS
|
||||
PROD_LDLIBS += $(STATIC_LDLIBS) \
|
||||
$($(firstword $(LDLIBS_STATIC_$(STATIC_BUILD)) \
|
||||
$(LDLIBS_SHARED_$(SHARED_LIBRARIES))))
|
||||
|
||||
#--------------------------------------------------
|
||||
# Libraries dependancy definitions
|
||||
|
||||
# libs that we need to link the DLL with
|
||||
# (it isnt necessary to rebuild the dll if these change)
|
||||
|
||||
SHRLIB_DEPLIBS = $(foreach lib, $(LIB_LIBS) $(USR_LIBS), \
|
||||
$(firstword $(wildcard \
|
||||
$(addsuffix /$(DLLSTUB_PREFIX)$(lib)$(DLLSTUB_SUFFIX), \
|
||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||
$(addsuffix /$(SHRLIB_PREFIX)$(lib)*$(SHRLIB_SUFFIX_BASE)*, \
|
||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||
$(addsuffix /$(LIB_PREFIX)$(lib)$(LIB_SUFFIX), \
|
||||
$($(lib)_DIR) $(SHRLIB_SEARCH_DIRS)) \
|
||||
) $(addsuffix /$(BUILDLIB_PREFIX)$(lib)$(BUILDLIB_SUFFIX), \
|
||||
$(if $(filter $(lib),$(TESTLIBRARY)),.,$(INSTALL_LIB)))))
|
||||
|
||||
|
||||
SHRLIB_LDLIBS += $($*_DLL_DEPLIBS) $($*_DEPLIBS) $(SHRLIB_DEPLIBS)
|
||||
SHRLIB_LDLIBS += $(addsuffix .lib, \
|
||||
$($*_SYS_DLL_LIBS) \
|
||||
$($*_SYS_LIBS) $(LIB_SYS_LIBS) $(USR_SYS_LIBS) )
|
||||
|
||||
#--------------------------------------------------
|
||||
# Linker definition
|
||||
LINK.cpp = $(WINLINK) -nologo $(STATIC_LDFLAGS) $(LDFLAGS) $(PROD_LDFLAGS) \
|
||||
-out:$@ $(PROD_LD_OBJS) $(PROD_LD_RESS) $(PROD_LDLIBS)
|
||||
|
||||
#--------------------------------------------------
|
||||
# UseManifestTool.pl checks MS Visual c++ compiler version number to
|
||||
# decide whether or not to use the Manifest Tool command to embed the
|
||||
# linker created .manifest file into a library or product target.
|
||||
# useManifestTool.pl returns 0(don't use) or 1(use).
|
||||
#
|
||||
MT.exe = mt.exe -nologo -manifest $@.manifest
|
||||
MT_DLL_COMMAND1 = $(MT.exe) "-outputresource:$@;\#2"
|
||||
MT_EXE_COMMAND_YES =
|
||||
MT_EXE_COMMAND_NO = $(MT.exe) "-outputresource:$@;\#1"
|
||||
MT_EXE_COMMAND1 = $(MT_EXE_COMMAND_$(STATIC_BUILD))
|
||||
MT_DLL_COMMAND = $(MT_DLL_COMMAND$(shell $(PERL) $(TOOLS)/useManifestTool.pl))
|
||||
MT_EXE_COMMAND = $(MT_EXE_COMMAND$(shell $(PERL) $(TOOLS)/useManifestTool.pl))
|
||||
|
||||
9
configure/os/CONFIG.windows-x64-clang.Common
Normal file
9
configure/os/CONFIG.windows-x64-clang.Common
Normal file
@@ -0,0 +1,9 @@
|
||||
# CONFIG.windows-x64-clang.Common
|
||||
#
|
||||
# Definitions for windows-x64-clang host arch
|
||||
# Override these definitions in CONFIG_SITE.windows-x64-clang.Common
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Include definitions common to windows-x64 hosts
|
||||
include $(CONFIG)/os/CONFIG.windows-x64.Common
|
||||
|
||||
@@ -4,9 +4,10 @@
|
||||
# Override these definitions in CONFIG_SITE.windows-x64.windows-x64
|
||||
#-------------------------------------------------------
|
||||
|
||||
#Include definitions common to win32-x86 builds
|
||||
include $(CONFIG)/os/CONFIG.win32-x86.win32-x86
|
||||
-include $(CONFIG)/os/CONFIG_SITE.win32-x86.win32-x86
|
||||
# Include common msvc compiler definitions
|
||||
include $(CONFIG)/CONFIG.msvcCommon
|
||||
|
||||
VALID_BUILDS = Host Ioc Command
|
||||
|
||||
OPT_LDFLAGS += -MACHINE:X64
|
||||
# -MACHINE:X64
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
#RTEMS_VERSION = 5
|
||||
#RTEMS_BASE = /usr/local/vw/rtems/rtems-5.1
|
||||
|
||||
# PSI:
|
||||
RTEMS_BASE = /opt/rtems/$(RTEMS_VERSION)
|
||||
|
||||
# Cross-compile toolchain in $(RTEMS_TOOLS)/bin
|
||||
#
|
||||
RTEMS_TOOLS = $(RTEMS_BASE)
|
||||
|
||||
2
configure/os/CONFIG_SITE.Common.deb10-x86_64
Normal file
2
configure/os/CONFIG_SITE.Common.deb10-x86_64
Normal file
@@ -0,0 +1,2 @@
|
||||
# Debian 10
|
||||
COMMANDLINE_LIBRARY=READLINE_NCURSES
|
||||
2
configure/os/CONFIG_SITE.Common.deb12-x86_64
Normal file
2
configure/os/CONFIG_SITE.Common.deb12-x86_64
Normal file
@@ -0,0 +1,2 @@
|
||||
# Debian 10
|
||||
COMMANDLINE_LIBRARY=READLINE
|
||||
2
configure/os/CONFIG_SITE.Common.gcc8-ppc4xxFP
Normal file
2
configure/os/CONFIG_SITE.Common.gcc8-ppc4xxFP
Normal file
@@ -0,0 +1,2 @@
|
||||
# DeltaTau PowerPMAC with gcc
|
||||
COMMANDLINE_LIBRARY=READLINE
|
||||
@@ -8,3 +8,18 @@
|
||||
# They must be set in the host+target specific file instead:
|
||||
# CONFIG_SITE.<linux-arch>.<linux-arch>
|
||||
|
||||
COMMANDLINE_LIBRARY = READLINE
|
||||
|
||||
USR_CXXFLAGS += $(STD_CXXFLAGS)
|
||||
STD_CXXFLAGS = -std=c++11
|
||||
|
||||
TOOLSET_DIR = $(TOOLSET:%=$(TOOLSET_LOCATION)/%/root)
|
||||
GNU_DIR = $(SYSROOT)$(TOOLSET_DIR)
|
||||
TARGET_CPPFLAGS += $(SYSROOT:%=--sysroot=%)
|
||||
TARGET_LDFLAGS += $(SYSROOT:%=--sysroot=%)
|
||||
|
||||
# backward compatibility: Keep unversioned libs
|
||||
# in order to prevent dynamic linking problems
|
||||
# when minor changes increment *_MAINTENANCE_VERSION
|
||||
SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||
LOADABLE_SHRLIB_SUFFIX = $(SHRLIB_SUFFIX_BASE)
|
||||
|
||||
@@ -21,5 +21,9 @@ VXWORKS_VERSION = 6.9
|
||||
# WIND_BASE is where you installed the Wind River software.
|
||||
|
||||
#WIND_BASE = /usr/local/vw/tornado22-$(ARCH_CLASS)
|
||||
WIND_BASE = /usr/local/vw/vxWorks-$(VXWORKS_VERSION)
|
||||
#WIND_BASE = /usr/local/vw/vxWorks-$(VXWORKS_VERSION)
|
||||
#WIND_BASE = /ade/vxWorks/$(VXWORKS_VERSION)
|
||||
WIND_BASE = /opt/VxWorks/VxWorks$(VXWORKS_VERSION)
|
||||
|
||||
# For the license counter
|
||||
export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH:%=%:)$(WIND_BASE)/lmapi-5.0/$(WIND_HOST_TYPE)/lib
|
||||
|
||||
5
configure/os/CONFIG_SITE.RHEL7-x86_64.Common
Normal file
5
configure/os/CONFIG_SITE.RHEL7-x86_64.Common
Normal file
@@ -0,0 +1,5 @@
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.Common
|
||||
|
||||
# Improved error checking with clang
|
||||
CROSS_COMPILER_TARGET_ARCHS += RHEL7-x86_64-clang
|
||||
CROSS_COMPILER_RUNTEST_ARCHS += RHEL7-x86_64-clang
|
||||
7
configure/os/CONFIG_SITE.RHEL8-x86_64.Common
Normal file
7
configure/os/CONFIG_SITE.RHEL8-x86_64.Common
Normal file
@@ -0,0 +1,7 @@
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.Common
|
||||
|
||||
# Improved error checking with clang
|
||||
CROSS_COMPILER_TARGET_ARCHS += RHEL8-x86_64-clang
|
||||
|
||||
# Build for old RHEL7 64 bit
|
||||
#CROSS_COMPILER_TARGET_ARCHS += RHEL7-x86_64
|
||||
1
configure/os/CONFIG_SITE.RHEL8-x86_64.win32-x86-mingw
Normal file
1
configure/os/CONFIG_SITE.RHEL8-x86_64.win32-x86-mingw
Normal file
@@ -0,0 +1 @@
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.win32-x86-mingw
|
||||
1
configure/os/CONFIG_SITE.RHEL8-x86_64.windows-x64-mingw
Normal file
1
configure/os/CONFIG_SITE.RHEL8-x86_64.windows-x64-mingw
Normal file
@@ -0,0 +1 @@
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.windows-x64-mingw
|
||||
10
configure/os/CONFIG_SITE.RHEL9-x86_64.Common
Normal file
10
configure/os/CONFIG_SITE.RHEL9-x86_64.Common
Normal file
@@ -0,0 +1,10 @@
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.Common
|
||||
|
||||
# Improved error checking with clang
|
||||
CROSS_COMPILER_TARGET_ARCHS += RHEL9-x86_64-clang
|
||||
|
||||
# Build for old RHEL8 64 bit
|
||||
CROSS_COMPILER_TARGET_ARCHS += RHEL8-x86_64
|
||||
|
||||
# Build for old RHEL7 64 bit
|
||||
#CROSS_COMPILER_TARGET_ARCHS += RHEL7-x86_64
|
||||
1
configure/os/CONFIG_SITE.RHEL9-x86_64.win32-x86-mingw
Normal file
1
configure/os/CONFIG_SITE.RHEL9-x86_64.win32-x86-mingw
Normal file
@@ -0,0 +1 @@
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.win32-x86-mingw
|
||||
1
configure/os/CONFIG_SITE.RHEL9-x86_64.windows-x64-mingw
Normal file
1
configure/os/CONFIG_SITE.RHEL9-x86_64.windows-x64-mingw
Normal file
@@ -0,0 +1 @@
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.windows-x64-mingw
|
||||
5
configure/os/CONFIG_SITE.UnixCommon.Common
Normal file
5
configure/os/CONFIG_SITE.UnixCommon.Common
Normal file
@@ -0,0 +1,5 @@
|
||||
# Make sure hosts tools find their libraries during build
|
||||
# even if FINAL_LOCATION differs from INSTALL_LOCATION
|
||||
ifneq ($(FINAL_LOCATION:$(INSTALL_LOCATION)=),)
|
||||
export LD_LIBRARY_PATH:=$(LD_LIBRARY_PATH:%=%:)$(INSTALL_HOST_LIB)
|
||||
endif
|
||||
@@ -5,3 +5,46 @@
|
||||
|
||||
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-ppc32
|
||||
#CROSS_COMPILER_TARGET_ARCHS = RTEMS-mvme2100 RTEMS-pc386-qemu
|
||||
|
||||
INSTALL_LOCATION=/usr/local/epics/base-$(EPICS_VERSION).$(EPICS_REVISION).$(EPICS_MODIFICATION)
|
||||
|
||||
GNU_HOST_ARCH=i686
|
||||
GNU_HOST_OS=linux
|
||||
|
||||
# vxWorks for MVxxxx boards
|
||||
#CROSS_COMPILER_TARGET_ARCHS += T2-ppc604
|
||||
#CROSS_COMPILER_TARGET_ARCHS += V67-ppc604
|
||||
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
|
||||
#CROSS_COMPILER_TARGET_ARCHS += V64-ppc604
|
||||
# (No PVA because of old compiler)
|
||||
#CROSS_COMPILER_TARGET_ARCHS += V62-ppc604
|
||||
|
||||
# RTEMS (Can only have 1 RTEMS major version in 1 EPICS installation
|
||||
# because they overwrite their header files.)
|
||||
#CROSS_COMPILER_TARGET_ARCHS += RTEMS49-pc386
|
||||
CROSS_COMPILER_TARGET_ARCHS += RTEMS51-pc686
|
||||
|
||||
@@ -4,5 +4,5 @@
|
||||
#-------------------------------------------------------
|
||||
|
||||
# Needed by gcc
|
||||
export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH):$(RTEMS_BASE)/lib
|
||||
export LD_LIBRARY_PATH := $(LD_LIBRARY_PATH:%=%:)$(RTEMS_BASE)/lib
|
||||
|
||||
|
||||
@@ -7,3 +7,34 @@
|
||||
#CROSS_COMPILER_TARGET_ARCHS = vxWorks-68040
|
||||
#CROSS_COMPILER_TARGET_ARCHS = RTEMS-mvme2100
|
||||
|
||||
include $(CONFIG)/os/CONFIG_SITE.linux-x86.Common
|
||||
|
||||
GNU_HOST_ARCH_64=x86_64
|
||||
|
||||
# Windows cross builds using Wine
|
||||
CROSS_COMPILER_TARGET_ARCHS += windows-x64
|
||||
CROSS_COMPILER_RUNTEST_ARCHS += windows-x64
|
||||
|
||||
# Windows cross builds using mingw
|
||||
CROSS_COMPILER_TARGET_ARCHS += windows-x64-mingw
|
||||
CROSS_COMPILER_RUNTEST_ARCHS += windows-x64-mingw
|
||||
|
||||
# IOxOS IFC1211
|
||||
#CROSS_COMPILER_TARGET_ARCHS += fslqoriq20-e6500_64
|
||||
|
||||
# Zynq
|
||||
#CROSS_COMPILER_TARGET_ARCHS += yocto21-aarch64
|
||||
CROSS_COMPILER_TARGET_ARCHS += yocto40-aarch64
|
||||
|
||||
# Debian
|
||||
CROSS_COMPILER_TARGET_ARCHS += deb10-x86_64
|
||||
CROSS_COMPILER_TARGET_ARCHS += deb12-x86_64
|
||||
|
||||
# Newer DeltaTau PowerPMAC
|
||||
CROSS_COMPILER_TARGET_ARCHS += gcc8-ppc4xxFP
|
||||
|
||||
# Raspberry Pi
|
||||
CROSS_COMPILER_TARGET_ARCHS += raspbian-arm
|
||||
|
||||
# NI Linux Real-Time 7.x
|
||||
CROSS_COMPILER_TARGET_ARCHS += nilrt7-armv7a
|
||||
|
||||
@@ -18,28 +18,13 @@ __This version of EPICS has not been released yet.__
|
||||
|
||||
__Add new items below here__
|
||||
|
||||
### Reduce symbol and macro pollution from epicsAtomic.h on WIN32
|
||||
|
||||
`epicsAtomic.h` no longer pulls in as many unneeded declarations and macros from
|
||||
`windows.h`. Prior to this change, including `epicsAtomic.h` at the wrong time
|
||||
could result in unexpected compiler errors. Due to the nature of `windows.h`,
|
||||
some unneeded declarations are still pulled in, however the number is greatly reduced.
|
||||
Code that needs these declarations should explicitly include `windows.h` before `epicsAtomic.h`.
|
||||
|
||||
=======
|
||||
### epicsExport simplifications
|
||||
|
||||
`epicsExportAddress()`, `epicsExportRegistrar()` and `epicsRegisterFunction()`
|
||||
no longer require to be wrapped in `extern "C" { }` in C++ code.
|
||||
no loger require to be wrapped in `extern "C" { }` in C++ code.
|
||||
|
||||
### New `dbServerStats()` API for iocStats
|
||||
|
||||
A new routine provides the ability to request channel and client counts from
|
||||
named server layers that implement the `stats()` method, or to get a summary
|
||||
of the counts from all registered server layers. A preprocessor macro
|
||||
`HAS_DBSERVER_STATS` macro is defined in the `dbServer.h` header file to
|
||||
simplify code that needs to support older versions of Base as well.
|
||||
|
||||
-----
|
||||
### Build system `$(PYTHON)` default changed
|
||||
|
||||
## EPICS Release 7.0.9
|
||||
|
||||
@@ -59,6 +44,12 @@ record type by opening these files in a text editor intead of opening a browser
|
||||
and loading the HTML versions or finding and opening the files from the EPICS
|
||||
Documentation site.
|
||||
|
||||
### fdManager file descriptor limit removed
|
||||
|
||||
In order to support file descriptors above 1023, fdManager now uses
|
||||
poll() instead of select() on all architectures that support it
|
||||
(Linux, MacOS, Windows, newer RTEMS).
|
||||
|
||||
### Post monitors from compress record when it's reset
|
||||
|
||||
Writing into a compress record's `RES` field now posts a monitor event instead
|
||||
|
||||
6
epics-base.sh
Normal file
6
epics-base.sh
Normal file
@@ -0,0 +1,6 @@
|
||||
_OLD_EXTGLOB=$(shopt -p extglob)
|
||||
shopt -s extglob
|
||||
test -n "$EPICS_HOST_ARCH" || export EPICS_HOST_ARCH=$(/bin/sed "s%cpe:/o:redhat:enterprise_linux:\([0-9]*\).*%RHEL\1-`/bin/uname -m`%" /etc/system-release-cpe)
|
||||
PATH=${PATH//?(:)\/usr\/local\/epics\/base-+([0-9]).+([0-9]).+([0-9])\/bin\/$EPICS_HOST_ARCH}:$EPICS_BASE/bin/$EPICS_HOST_ARCH
|
||||
eval $_OLD_EXTGLOB
|
||||
unset _OLD_EXTGLOB
|
||||
514
epics-base.spec
Normal file
514
epics-base.spec
Normal file
@@ -0,0 +1,514 @@
|
||||
# Always make sure EpicsVersion.Version-Release matches the git tag!
|
||||
|
||||
%define EpicsVersion 7.0.9
|
||||
|
||||
Name: epics-base-%{EpicsVersion}
|
||||
Summary: EPICS Base %{EpicsVersion}
|
||||
Version: 1
|
||||
Release: 0%{?dist}
|
||||
License: EPICS Open License
|
||||
Group: Development/Languages
|
||||
URL: https://git.psi.ch/epics_base/base-7.0
|
||||
|
||||
Obsoletes: caRepeater = 1
|
||||
|
||||
%define module_name %{name}
|
||||
%define prog_folder /usr/local/epics/base-%{EpicsVersion}
|
||||
|
||||
%define debug_package %{nil}
|
||||
%define _build_id_links none
|
||||
|
||||
# do not strip libraries
|
||||
%global __strip /bin/true
|
||||
%undefine __brp_strip
|
||||
|
||||
%undefine __brp_mangle_shebangs
|
||||
%undefine __brp_ldconfig
|
||||
%define _binaries_in_noarch_packages_terminate_build 0
|
||||
|
||||
%if %{defined rhel}
|
||||
%global epics_host_arch RHEL%{rhel}-%{_host_cpu}
|
||||
%endif
|
||||
# else define epics_host_arch as suitable
|
||||
|
||||
%description
|
||||
EPICS is a set of Open Source software tools, libraries and applications
|
||||
developed collaboratively and used worldwide to create distributed soft
|
||||
real-time control systems for scientific instruments such as a particle
|
||||
accelerators, telescopes and other large scientific experiments.
|
||||
This RPM is a binary-only package.
|
||||
|
||||
###########################################
|
||||
|
||||
%package host-devel
|
||||
Requires: make >= 3.80
|
||||
BuildRequires: make >= 3.80
|
||||
BuildRequires: gfa-cross-compiler-links
|
||||
%if %{?rhel} >= 9
|
||||
BuildRequires: gfa-wine
|
||||
%else
|
||||
BuildRequires: wine
|
||||
%endif
|
||||
|
||||
Summary: Minimal stuff needed to build EPICS host apps
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
# This EPICS installation uses the toolset 12 compiler
|
||||
%if 0%{?rhel} >= 8
|
||||
Requires: gcc-toolset-12-gcc-c++
|
||||
BuildRequires: gcc-toolset-12-gcc-c++
|
||||
%endif
|
||||
|
||||
# The perl stuff we need
|
||||
Requires: perl-interpreter >= 5.10.1
|
||||
BuildRequires: perl-interpreter >= 5.10.1
|
||||
Requires: perl-File-Path perl-Getopt-Long perl-Pod-Usage perl-Time-HiRes perl-Data-Dumper perl-Scalar-List-Utils
|
||||
BuildRequires: perl-File-Path perl-Getopt-Long perl-Pod-Usage perl-Time-HiRes perl-Data-Dumper perl-Scalar-List-Utils
|
||||
|
||||
%if 0%{?rhel} >= 8
|
||||
Requires: perl-Text-Tabs+Wrap
|
||||
BuildRequires: perl-Text-Tabs+Wrap
|
||||
%endif
|
||||
|
||||
%if 0%{?rhel} >= 9
|
||||
Requires: perl-File-Find perl-File-Basename perl-File-Copy perl-FindBin perl-Getopt-Std perl-POSIX
|
||||
BuildRequires: perl-File-Find perl-File-Basename perl-File-Copy perl-FindBin perl-Getopt-Std perl-POSIX
|
||||
%endif
|
||||
|
||||
# Perl auto-detection is broken
|
||||
# It does not find all EPICS internal packages
|
||||
%global __requires_exclude_from ^%{prog_folder}/bin/.*\\.pl$
|
||||
|
||||
%description host-devel
|
||||
Contains headers etc to build EPICS host applications.
|
||||
|
||||
###########################################
|
||||
|
||||
%if %{?rhel} > 8
|
||||
%package compat
|
||||
Summary: EPICS base %{EpicsVersion} for older RHEL versions
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
AutoReqProv: no
|
||||
|
||||
%description compat
|
||||
Contains EPICS binaries that run on older RHEL versions.
|
||||
%endif
|
||||
|
||||
###########################################
|
||||
|
||||
%package wine
|
||||
Summary: EPICS base %{EpicsVersion} for wine
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
%if %{?rhel} >= 9
|
||||
Requires: gfa-wine
|
||||
%else
|
||||
Requires: wine
|
||||
%endif
|
||||
|
||||
%description wine
|
||||
Allows to run EPICS in wine.
|
||||
|
||||
###########################################
|
||||
|
||||
%package boot
|
||||
Summary: EPICS base %{EpicsVersion} for boot servers
|
||||
BuildArch: noarch
|
||||
AutoReqProv: no
|
||||
Prefix: /usr/local/epics
|
||||
|
||||
%description boot
|
||||
Contains files needed on NFS server to boot EPICS targets from.
|
||||
This package can be relocated.
|
||||
|
||||
###########################################
|
||||
|
||||
%package devel
|
||||
Summary: EPICS base %{EpicsVersion} for development environments
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Requires: %{name}-host-devel = %{version}-%{release}
|
||||
Requires: gfa-cross-compiler-links
|
||||
BuildArch: noarch
|
||||
AutoReqProv: no
|
||||
|
||||
%description devel
|
||||
All what is needed to develop EPICS for different target architectures.
|
||||
|
||||
###########################################
|
||||
|
||||
%package devel-static
|
||||
Summary: EPICS base %{EpicsVersion} for development environments including static libraries
|
||||
Requires: %{name}-devel = %{version}-%{release}
|
||||
BuildArch: noarch
|
||||
AutoReqProv: no
|
||||
|
||||
%description devel-static
|
||||
Contains the static libraries (*.a) for EPICS development systems.
|
||||
Only needed to build statically linked applications.
|
||||
|
||||
###########################################
|
||||
|
||||
%package src
|
||||
Summary: Sources code of EPICS base %{EpicsVersion}
|
||||
BuildArch: noarch
|
||||
AutoReqProv: no
|
||||
Prefix: /usr/local/epics
|
||||
|
||||
%description src
|
||||
The source code of EPICS base %{EpicsVersion}.
|
||||
May help when debugging
|
||||
|
||||
###########################################
|
||||
|
||||
%package doc
|
||||
Summary: EPICS base %{EpicsVersion} documentation
|
||||
BuildArch: noarch
|
||||
AutoReqProv: no
|
||||
Prefix: /usr/local/epics
|
||||
|
||||
%description doc
|
||||
The documentation of EPICS base %{EpicsVersion}.
|
||||
|
||||
###########################################
|
||||
|
||||
# Our sources are locally in this directory
|
||||
# and here we also build
|
||||
# RPMS will be stored here, too
|
||||
%define _topdir %(pwd)
|
||||
%define _sourcedir %{_topdir}
|
||||
%define _builddir %{_topdir}
|
||||
|
||||
%prep
|
||||
%{__rm} -rf %{buildroot}/usr/lib
|
||||
%{__rm} -f modules/RELEASE.*.local
|
||||
git submodule update --init --recursive modules
|
||||
%{__mkdir_p} RPMS
|
||||
|
||||
%build
|
||||
%if %{defined epics_host_arch}
|
||||
export EPICS_HOST_ARCH=%{epics_host_arch}
|
||||
%endif
|
||||
%{__make} INSTALL_LOCATION=%{buildroot}%{prog_folder} FINAL_LOCATION=%{prog_folder}
|
||||
%{__make} INSTALL_LOCATION=%{buildroot}%{prog_folder} copysrc
|
||||
|
||||
# remove files we do not need
|
||||
shopt -s extglob
|
||||
%{__rm} -f %{buildroot}%{prog_folder}/bin/{V,RTEMS}*/{*Harness,softIoc,softIocPVA}
|
||||
%{__rm} -f %{buildroot}%{prog_folder}/bin/RTEMS*/TEMP.*
|
||||
|
||||
# fix permissions of caRepeater.service
|
||||
%{__chmod} 644 %{buildroot}%{prog_folder}/bin/*/caRepeater.service
|
||||
|
||||
# install the profile script
|
||||
/bin/sed 's!\$EPICS_BASE!%{prog_folder}!' epics-base.sh > %{buildroot}%{prog_folder}/bin/epics-base.sh
|
||||
|
||||
# copy over old libraries for compatibility
|
||||
%if %{?rhel} > 8
|
||||
%{__cp} /opt/RHEL8/lib64/libreadline.so.7 %{buildroot}%{prog_folder}/lib/RHEL8-x86_64
|
||||
%endif
|
||||
|
||||
# Do not use install section because build already installed
|
||||
# and install will delete our buildroot!
|
||||
|
||||
%clean
|
||||
%{__make} INSTALL_LOCATION=%{buildroot}%{prog_folder} realclean
|
||||
%{__rm} -f modules/RELEASE.*.local
|
||||
%{__rm} -rf %{buildroot}
|
||||
%{__cp} %{_rpmdir}/*/%{name}*%{version}-%{release}.*.rpm %{_sourcedir}
|
||||
|
||||
# Link caRepeater and profile script to highest installed EPICS version after install and uninstall
|
||||
%post
|
||||
shopt -s extglob
|
||||
%{__rm} -f /etc/profile.d/epics-base.sh
|
||||
%{__ln_s} "$(/usr/bin/ls -dvr1 /usr/local/epics/base-+([0-9]).+([0-9]).+([0-9])/bin/epics-base.sh | /usr/bin/head -n1)" /etc/profile.d/
|
||||
SYSTEMD_DIR=$(pkg-config systemd --variable=systemdsystemunitdir)
|
||||
if [ -n "$SYSTEMD_DIR" ]
|
||||
then
|
||||
%{__rm} -f $SYSTEMD_DIR/caRepeater.service
|
||||
LATEST_REPEATER=$(/usr/bin/ls -dvr1 /usr/local/epics/base-+([0-9]).+([0-9]).+([0-9])/bin/%{epics_host_arch}/caRepeater.service | /usr/bin/head -n1)
|
||||
%{__ln_s} $LATEST_REPEATER $SYSTEMD_DIR/
|
||||
systemctl daemon-reload
|
||||
systemctl reenable caRepeater.service
|
||||
systemctl start caRepeater.service
|
||||
fi
|
||||
|
||||
%postun
|
||||
shopt -s extglob
|
||||
%{__rm} -f /etc/profile.d/epics-base.sh
|
||||
%{__ln_s} "$(/usr/bin/ls -dvr1 /usr/local/epics/base-+([0-9]).+([0-9]).+([0-9])/bin/epics-base.sh 2>/dev/null | /usr/bin/head -n1)" /etc/profile.d/ 2>/dev/null
|
||||
SYSTEMD_DIR=$(pkg-config systemd --variable=systemdsystemunitdir)
|
||||
if [ -n "$SYSTEMD_DIR" ]
|
||||
then
|
||||
LATEST_REPEATER=$(/usr/bin/ls -dvr1 /usr/local/epics/base-+([0-9]).+([0-9]).+([0-9])/bin/%{epics_host_arch}/caRepeater.service 2>/dev/null | /usr/bin/head -n1)
|
||||
if [ -z "$LATEST_REPEATER" ]
|
||||
then
|
||||
systemctl disable caRepeater.service
|
||||
# Do not stop or restart caRepeater.service
|
||||
# because EPICS clients cannot handle that.
|
||||
# Next reboot will take care of this.
|
||||
fi
|
||||
%{__rm} -f $SYSTEMD_DIR/caRepeater.service
|
||||
if [ -n "$LATEST_REPEATER" ]
|
||||
then
|
||||
%{__ln_s} $LATEST_REPEATER $SYSTEMD_DIR/ 2>/dev/null
|
||||
systemctl reenable caRepeater.service
|
||||
fi
|
||||
systemctl daemon-reload
|
||||
fi
|
||||
|
||||
###########################################
|
||||
|
||||
%files
|
||||
%defattr(-,root,root,-)
|
||||
%dir %{prog_folder}
|
||||
%dir %{prog_folder}/configure
|
||||
%{prog_folder}/configure/CONFIG_BASE_VERSION
|
||||
|
||||
%dir %{prog_folder}/dbd
|
||||
%{prog_folder}/dbd/softIoc*.dbd
|
||||
|
||||
%dir %{prog_folder}/bin
|
||||
%dir %{prog_folder}/lib
|
||||
%{prog_folder}/db
|
||||
|
||||
%{prog_folder}/bin/epics-base.sh
|
||||
%{prog_folder}/lib/perl/EpicsHostArch.pl
|
||||
%{prog_folder}/lib/perl/CA.pm
|
||||
%dir %{prog_folder}/lib/perl
|
||||
%dir %{prog_folder}/lib/perl/[0-9]*
|
||||
%dir %{prog_folder}/lib/perl/[0-9]*/*-linux-thread-multi
|
||||
%{prog_folder}/lib/perl/*/*-linux-thread-multi/libCap5.so
|
||||
|
||||
# Install host binaries but avoid installing *.pl scripts
|
||||
# and other development tools
|
||||
|
||||
%dir %{prog_folder}/bin/%{epics_host_arch}*
|
||||
%{prog_folder}/bin/%{epics_host_arch}*/[Scips]*[^.]??
|
||||
%{prog_folder}/bin/%{epics_host_arch}*/p2p
|
||||
%{prog_folder}/bin/%{epics_host_arch}*/msi
|
||||
%dir %{prog_folder}/lib/%{epics_host_arch}*
|
||||
%{prog_folder}/lib/%{epics_host_arch}*/*.so*
|
||||
|
||||
###########################################
|
||||
|
||||
%if %{?rhel} > 8
|
||||
|
||||
%files compat
|
||||
%dir %{prog_folder}/bin/RHEL8*
|
||||
%{prog_folder}/bin/RHEL8*/[Scips]*[^.]??
|
||||
%{prog_folder}/bin/RHEL8*/p2p
|
||||
%{prog_folder}/bin/RHEL8*/msi
|
||||
%dir %{prog_folder}/lib/RHEL8*
|
||||
%{prog_folder}/lib/RHEL8*/*.so*
|
||||
|
||||
%if %{?rhel} > 9
|
||||
%dir %{prog_folder}/bin/RHEL9*
|
||||
%{prog_folder}/bin/RHEL9*/[Scips]*[^.]??
|
||||
%{prog_folder}/bin/RHEL9*/p2p
|
||||
%{prog_folder}/bin/RHEL9*/msi
|
||||
%dir %{prog_folder}/lib/RHEL9*
|
||||
%{prog_folder}/lib/RHEL9*/*.so*
|
||||
%endif
|
||||
|
||||
%endif
|
||||
|
||||
###########################################
|
||||
|
||||
%files wine
|
||||
%{prog_folder}/bin/win*
|
||||
|
||||
###########################################
|
||||
|
||||
%files boot
|
||||
# including files to build on some Linux cross archs
|
||||
# hence some configure/* and lib/perl/* listed twice
|
||||
%defattr(-,root,root,-)
|
||||
%dir %{prog_folder}
|
||||
%dir %{prog_folder}/configure
|
||||
%{prog_folder}/configure/RELEASE
|
||||
%{prog_folder}/configure/CONFIG*
|
||||
%{prog_folder}/configure/RULES*
|
||||
%dir %{prog_folder}/configure/os
|
||||
%{prog_folder}/configure/os/CONFIG.Common.UnixCommon
|
||||
%{prog_folder}/configure/os/CONFIG.Common.linuxCommon
|
||||
%{prog_folder}/configure/os/CONFIG.Common.linux-clang
|
||||
%{prog_folder}/configure/os/CONFIG.Common.linux-%{_host_cpu}*
|
||||
%{prog_folder}/configure/os/CONFIG.Common.[a-z]*-*
|
||||
%{prog_folder}/configure/os/CONFIG.UnixCommon.Common
|
||||
%{prog_folder}/configure/os/CONFIG.[a-z]*-*.Common
|
||||
%{prog_folder}/configure/os/CONFIG.[a-z]*-*.[a-z]*-*
|
||||
%{prog_folder}/configure/os/CONFIG.linux-*.Common
|
||||
%{prog_folder}/configure/os/CONFIG.linux-*.linux-*
|
||||
%{prog_folder}/configure/os/CONFIG_SITE.Common.linuxCommon
|
||||
%{prog_folder}/configure/os/CONFIG_SITE.Common.linux-*
|
||||
%{prog_folder}/configure/os/CONFIG_SITE.[a-z]*-*.Common
|
||||
%{prog_folder}/configure/os/CONFIG_SITE.linux-*.Common
|
||||
%{prog_folder}/configure/os/CONFIG_SITE.linux-*.UnixCommon
|
||||
%{prog_folder}/configure/os/CONFIG_SITE.linux-*.linux-*
|
||||
|
||||
%dir %{prog_folder}/include
|
||||
%{prog_folder}/include/*.h
|
||||
%{prog_folder}/include/compiler
|
||||
%dir %{prog_folder}/include/os
|
||||
%{prog_folder}/include/os/Linux/
|
||||
%{prog_folder}/include/pv/
|
||||
%{prog_folder}/include/pva/
|
||||
%{prog_folder}/include/valgrind/
|
||||
%{prog_folder}/include/flex.skel.static
|
||||
|
||||
%dir %{prog_folder}/dbd
|
||||
%{prog_folder}/dbd/softIoc*.dbd
|
||||
%{prog_folder}/db
|
||||
|
||||
%dir %{prog_folder}/lib
|
||||
%dir %{prog_folder}/lib/[a-z]*-*
|
||||
%{prog_folder}/lib/[a-z]*-*/*.so*
|
||||
%dir %{prog_folder}/lib/perl
|
||||
%{prog_folder}/lib/perl/[A-Z]*/
|
||||
%{prog_folder}/lib/perl/DBD.pm
|
||||
|
||||
%dir %{prog_folder}/bin
|
||||
# avoid pulling in host files again
|
||||
# but get all cross architectures (mostly lower case)
|
||||
# including all Windows dlls (hence listed twice: here and in wine)
|
||||
%dir %{prog_folder}/bin/[a-z]*
|
||||
%{prog_folder}/bin/[a-z]*/[Scips]*[^.]??
|
||||
%{prog_folder}/bin/[a-z]*/p2p
|
||||
%{prog_folder}/bin/[a-z]*/msi*
|
||||
%{prog_folder}/bin/[a-z]*/acctst*
|
||||
%{prog_folder}/bin/[a-z]*/*.dll
|
||||
%{prog_folder}/bin/[a-z]*/registerRecordDeviceDriver*
|
||||
|
||||
# vxWorks and RTEMS
|
||||
%dir %{prog_folder}/bin/V*
|
||||
%{prog_folder}/bin/V*/*.munch
|
||||
%{prog_folder}/bin/V*/*.o
|
||||
%dir %{prog_folder}/bin/RTEMS*
|
||||
%{prog_folder}/bin/RTEMS*/*.boot
|
||||
|
||||
###########################################
|
||||
|
||||
%files host-devel
|
||||
%defattr(-,root,root,-)
|
||||
%dir %{prog_folder}/include
|
||||
%{prog_folder}/include/*.h
|
||||
%{prog_folder}/include/compiler
|
||||
%dir %{prog_folder}/include/os
|
||||
%{prog_folder}/include/os/Linux/
|
||||
%{prog_folder}/include/os/WIN32/
|
||||
%{prog_folder}/include/pv/
|
||||
%{prog_folder}/include/pva/
|
||||
%{prog_folder}/include/valgrind/
|
||||
%{prog_folder}/include/flex.skel.static
|
||||
%{prog_folder}/templates
|
||||
%dir %{prog_folder}/cfg
|
||||
%{prog_folder}/cfg/CONFIG*
|
||||
%{prog_folder}/cfg/TOOLCHAIN.%{epics_host_arch}*.%{epics_host_arch}*
|
||||
%{prog_folder}/cfg/TOOLCHAIN.%{epics_host_arch}*.win*
|
||||
%dir %{prog_folder}/configure
|
||||
%{prog_folder}/configure/RELEASE
|
||||
%{prog_folder}/configure/CONFIG*
|
||||
%{prog_folder}/configure/RULES*
|
||||
%dir %{prog_folder}/configure/os
|
||||
%{prog_folder}/configure/os/CONFIG.Common.UnixCommon
|
||||
%{prog_folder}/configure/os/CONFIG.Common.linuxCommon
|
||||
%{prog_folder}/configure/os/CONFIG.Common.linux-clang
|
||||
%{prog_folder}/configure/os/CONFIG.Common.linux-%{_host_cpu}*
|
||||
%{prog_folder}/configure/os/CONFIG.Common.%{epics_host_arch}*
|
||||
%{prog_folder}/configure/os/CONFIG.UnixCommon.Common
|
||||
%{prog_folder}/configure/os/CONFIG.%{epics_host_arch}*.Common
|
||||
%{prog_folder}/configure/os/CONFIG.%{epics_host_arch}*.%{epics_host_arch}*
|
||||
%{prog_folder}/configure/os/CONFIG.linux-%{__isa_name}*.Common
|
||||
%{prog_folder}/configure/os/CONFIG.linux-%{__isa_name}*.linux-%{__isa_name}*
|
||||
%{prog_folder}/configure/os/CONFIG.linux-%{__isa_name}*.win*
|
||||
%{prog_folder}/configure/os/CONFIG.Linux.win*
|
||||
%{prog_folder}/configure/os/CONFIG.win*.win*
|
||||
%{prog_folder}/configure/os/CONFIG_SITE.Common.linuxCommon
|
||||
%{prog_folder}/configure/os/CONFIG_SITE.Common.linux-%{__isa_name}*
|
||||
%{prog_folder}/configure/os/CONFIG_SITE.%{epics_host_arch}*.Common
|
||||
%{prog_folder}/configure/os/CONFIG_SITE.linux-%{__isa_name}*.Common
|
||||
%{prog_folder}/configure/os/CONFIG_SITE.linux-%{__isa_name}*.UnixCommon
|
||||
%{prog_folder}/configure/os/CONFIG_SITE.linux-%{__isa_name}*.linux-%{__isa_name}*
|
||||
%{prog_folder}/bin/%{epics_host_arch}*/[^Scips]*[^.]??
|
||||
%{prog_folder}/bin/%{epics_host_arch}*/*.??
|
||||
%dir %{prog_folder}/lib/pkgconfig
|
||||
%{prog_folder}/lib/pkgconfig/epics-base.pc
|
||||
%{prog_folder}/lib/pkgconfig/epics-base-%{epics_host_arch}*.pc
|
||||
%{prog_folder}/lib/perl/[A-Z]*/
|
||||
%{prog_folder}/lib/perl/DBD.pm
|
||||
%{prog_folder}/dbd
|
||||
|
||||
###########################################
|
||||
|
||||
%files devel
|
||||
%defattr(-,root,root,-)
|
||||
%{prog_folder}/include/os/vxWorks/
|
||||
%{prog_folder}/include/os/RTEMS/
|
||||
%exclude %{prog_folder}/cfg/TOOLCHAIN.%{epics_host_arch}*.%{epics_host_arch}*
|
||||
%exclude %{prog_folder}/cfg/TOOLCHAIN.%{epics_host_arch}*.win*
|
||||
%{prog_folder}/cfg/TOOLCHAIN.*
|
||||
%exclude %{prog_folder}/configure/os/CONFIG.Common.%{epics_host_arch}*
|
||||
%exclude %{prog_folder}/configure/os/CONFIG.Common.UnixCommon
|
||||
%exclude %{prog_folder}/configure/os/CONFIG.Common.linuxCommon
|
||||
%exclude %{prog_folder}/configure/os/CONFIG.Common.linux-clang
|
||||
%exclude %{prog_folder}/configure/os/CONFIG.Common.linux-%{_host_cpu}*
|
||||
%exclude %{prog_folder}/configure/os/CONFIG.UnixCommon.Common
|
||||
%exclude %{prog_folder}/configure/os/CONFIG.%{epics_host_arch}*.Common
|
||||
%exclude %{prog_folder}/configure/os/CONFIG.%{epics_host_arch}*.%{epics_host_arch}*
|
||||
%exclude %{prog_folder}/configure/os/CONFIG.linux-%{__isa_name}*.Common
|
||||
%exclude %{prog_folder}/configure/os/CONFIG.linux-%{__isa_name}*.linux-%{__isa_name}*
|
||||
%exclude %{prog_folder}/configure/os/CONFIG.linux-%{__isa_name}*.win*
|
||||
%exclude %{prog_folder}/configure/os/CONFIG.Linux.win*
|
||||
%exclude %{prog_folder}/configure/os/CONFIG.win*.win*
|
||||
%exclude %{prog_folder}/configure/os/CONFIG_SITE.Common.linuxCommon
|
||||
%exclude %{prog_folder}/configure/os/CONFIG_SITE.Common.linux-%{__isa_name}*
|
||||
%exclude %{prog_folder}/configure/os/CONFIG_SITE.%{epics_host_arch}*.Common
|
||||
%exclude %{prog_folder}/configure/os/CONFIG_SITE.linux-%{__isa_name}*.Common
|
||||
%exclude %{prog_folder}/configure/os/CONFIG_SITE.linux-%{__isa_name}*.UnixCommon
|
||||
%exclude %{prog_folder}/configure/os/CONFIG_SITE.linux-%{__isa_name}*.linux-%{__isa_name}*
|
||||
%{prog_folder}/configure/os/
|
||||
%exclude %{prog_folder}/lib/pkgconfig/epics-base.pc
|
||||
%exclude %{prog_folder}/lib/pkgconfig/epics-base-%{epics_host_arch}*.pc
|
||||
%{prog_folder}/lib/pkgconfig/
|
||||
%exclude %{prog_folder}/bin/%{epics_host_arch}*/[^Scips]*[^.]??
|
||||
%exclude %{prog_folder}/bin/%{epics_host_arch}*/*.??
|
||||
%exclude %{prog_folder}/bin/*/[^Scips]*[^.]??
|
||||
%exclude %{prog_folder}/bin/*/*.??
|
||||
|
||||
# VxWorks and RTEMS need static libs
|
||||
%{prog_folder}/lib/V*
|
||||
%{prog_folder}/lib/RTEMS*
|
||||
# Windows needs *.lib
|
||||
%{prog_folder}/lib/win*
|
||||
# Basic libraries to build stand-alone clients
|
||||
%exclude %{prog_folder}/lib/pkgconfig
|
||||
%dir %{prog_folder}/lib/[a-z]*
|
||||
%{prog_folder}/lib/[a-z]*/libCom.so*
|
||||
%{prog_folder}/lib/[a-z]*/libca.so*
|
||||
|
||||
###########################################
|
||||
|
||||
%files devel-static
|
||||
%defattr(-,root,root,-)
|
||||
|
||||
# Install bulky static libs for Linux targets only on request
|
||||
%dir %{prog_folder}/lib/RHEL*
|
||||
%{prog_folder}/lib/RHEL*/*.a
|
||||
%dir %{prog_folder}/lib/[a-z]*
|
||||
%{prog_folder}/lib/[a-z]*/*.a
|
||||
|
||||
###########################################
|
||||
|
||||
%files src
|
||||
%defattr(-,root,root,-)
|
||||
%dir %{prog_folder}
|
||||
%{prog_folder}/modules
|
||||
|
||||
###########################################
|
||||
|
||||
%files doc
|
||||
%defattr(-,root,root,-)
|
||||
%dir %{prog_folder}
|
||||
%docdir %{prog_folder}/html
|
||||
%docdir %{prog_folder}/doc
|
||||
%{prog_folder}/html
|
||||
%{prog_folder}/doc
|
||||
2
modules/Makefile.local
Normal file
2
modules/Makefile.local
Normal file
@@ -0,0 +1,2 @@
|
||||
SUBMODULES += pcas
|
||||
pcas_DEPEND_DIRS = ca
|
||||
@@ -42,6 +42,7 @@ INC += dbState.h
|
||||
INC += db_access_routines.h
|
||||
INC += db_convert.h
|
||||
INC += dbUnitTest.h
|
||||
INC += dbCaPvt.h
|
||||
|
||||
# Generate menuGlobal.dbd, not really by concatenation, see RULES
|
||||
DBDCAT += menuGlobal.dbd
|
||||
|
||||
@@ -1175,7 +1175,44 @@ static long dbPutFieldLink(DBADDR *paddr,
|
||||
|
||||
if (!status) status = dbSetLink(plink, &link_info, new_devsup);
|
||||
|
||||
if (!status && special) status = dbPutSpecial(paddr, 1);
|
||||
if (status) {
|
||||
if (isDevLink) {
|
||||
precord->dset = NULL;
|
||||
precord->pact = TRUE;
|
||||
}
|
||||
goto postScanEvent;
|
||||
}
|
||||
|
||||
/* We need to initialize any links with a link support layer, i.e.
|
||||
* any CONSTANT, JSON_LINK, or PV_LINK types. However for a PV_LINK
|
||||
* when isDevLink is set (i.e. this is the record's INP or OUT link)
|
||||
* we must wait until after calling dsxt->add_record(). This allows
|
||||
* the Async Soft Channel input supports to change it to a PN_LINK.
|
||||
* For other cases we initialize the link before the second call to
|
||||
* dbPutSpecial() because some record types such as calcout need to
|
||||
* be able to call link support methods from prset->special().
|
||||
*/
|
||||
|
||||
switch (plink->type) { /* New type */
|
||||
case PV_LINK:
|
||||
if (isDevLink)
|
||||
break;
|
||||
/* else fall through */
|
||||
case CONSTANT:
|
||||
case JSON_LINK:
|
||||
dbAddLink(&locker, plink, pfldDes->field_type, chan);
|
||||
chan = NULL; /* we used it, don't clean it up */
|
||||
}
|
||||
|
||||
if (special) status = dbPutSpecial(paddr, 1);
|
||||
|
||||
if (!status && isDevLink) {
|
||||
precord->dpvt = NULL;
|
||||
precord->dset = new_dset;
|
||||
precord->pact = FALSE;
|
||||
|
||||
status = new_dsxt->add_record(precord);
|
||||
}
|
||||
|
||||
if (status) {
|
||||
if (isDevLink) {
|
||||
@@ -1185,29 +1222,21 @@ static long dbPutFieldLink(DBADDR *paddr,
|
||||
goto postScanEvent;
|
||||
}
|
||||
|
||||
if (isDevLink) {
|
||||
precord->dpvt = NULL;
|
||||
precord->dset = new_dset;
|
||||
precord->pact = FALSE;
|
||||
|
||||
status = new_dsxt->add_record(precord);
|
||||
if (status) {
|
||||
precord->dset = NULL;
|
||||
precord->pact = TRUE;
|
||||
goto postScanEvent;
|
||||
}
|
||||
}
|
||||
|
||||
switch (plink->type) { /* New link type */
|
||||
case PV_LINK:
|
||||
case CONSTANT:
|
||||
case CA_LINK:
|
||||
case DB_LINK:
|
||||
case PN_LINK:
|
||||
case JSON_LINK:
|
||||
dbAddLink(&locker, plink, pfldDes->field_type, chan);
|
||||
chan = NULL; /* don't clean it up */
|
||||
break;
|
||||
|
||||
case DB_LINK:
|
||||
case CA_LINK:
|
||||
case PV_LINK:
|
||||
if (isDevLink) {
|
||||
dbAddLink(&locker, plink, pfldDes->field_type, chan);
|
||||
chan = NULL; /* we used it, don't clean it up */
|
||||
}
|
||||
break;
|
||||
|
||||
case MACRO_LINK:
|
||||
break; /* should never get here */
|
||||
|
||||
@@ -1216,7 +1245,6 @@ static long dbPutFieldLink(DBADDR *paddr,
|
||||
status = S_db_badHWaddr;
|
||||
goto postScanEvent;
|
||||
}
|
||||
break;
|
||||
}
|
||||
db_post_events(precord, plink, DBE_VALUE | DBE_LOG);
|
||||
|
||||
|
||||
@@ -115,9 +115,10 @@ static int dbca_chan_count;
|
||||
* During link modification or IOC shutdown the pca->plink pointer (guarded by caLink.lock)
|
||||
* is used as a flag to indicate that a link is no longer active.
|
||||
*
|
||||
* References to the struct caLink are owned by the dbCaTask.
|
||||
* References to the struct caLink are owned by the dbCaTask, and any scanOnceCallback()
|
||||
* which is in progress.
|
||||
*
|
||||
* The libca callbacks take no action if pca->plink==NULL.
|
||||
* The libca and scanOnceCallback callbacks take no action if pca->plink==NULL.
|
||||
*
|
||||
* dbCaPutLinkCallback causes an additional complication because
|
||||
* when dbCaRemoveLink is called the callback may not have occured.
|
||||
@@ -787,6 +788,38 @@ static long doLocked(struct link *plink, dbLinkUserCallback rtn, void *priv)
|
||||
return status;
|
||||
}
|
||||
|
||||
static void scanComplete(void *raw, dbCommon *prec)
|
||||
{
|
||||
caLink *pca = raw;
|
||||
epicsMutexMustLock(pca->lock);
|
||||
if(!pca->plink) {
|
||||
/* IOC shutdown or link re-targeted. Do nothing. */
|
||||
} else if(pca->scanningOnce==0) {
|
||||
errlogPrintf("dbCa.c complete callback w/ scanningOnce==0\n");
|
||||
} else if(--pca->scanningOnce){
|
||||
/* another scan is queued */
|
||||
if(scanOnceCallback(prec, scanComplete, raw)) {
|
||||
errlogPrintf("dbCa.c failed to re-queue scanOnce\n");
|
||||
} else
|
||||
caLinkInc(pca);
|
||||
}
|
||||
epicsMutexUnlock(pca->lock);
|
||||
caLinkDec(pca);
|
||||
}
|
||||
|
||||
/* must be called with pca->lock held */
|
||||
static void scanLinkOnce(dbCommon *prec, caLink *pca) {
|
||||
if(pca->scanningOnce==0) {
|
||||
if(scanOnceCallback(prec, scanComplete, pca)) {
|
||||
errlogPrintf("dbCa.c failed to queue scanOnce\n");
|
||||
} else
|
||||
caLinkInc(pca);
|
||||
}
|
||||
if(pca->scanningOnce<5)
|
||||
pca->scanningOnce++;
|
||||
/* else too many scans queued */
|
||||
}
|
||||
|
||||
static lset dbCa_lset = {
|
||||
0, 1, /* not Constant, Volatile */
|
||||
NULL, dbCaRemoveLink,
|
||||
@@ -823,9 +856,7 @@ static void connectionCallback(struct connection_handler_args arg)
|
||||
if (precord &&
|
||||
((ppv_link->pvlMask & pvlOptCP) ||
|
||||
((ppv_link->pvlMask & pvlOptCPP) && precord->scan == 0)))
|
||||
{
|
||||
link_action |= CA_DBPROCESS;
|
||||
}
|
||||
scanLinkOnce(precord, pca);
|
||||
goto done;
|
||||
}
|
||||
pca->hasReadAccess = ca_read_access(arg.chid);
|
||||
@@ -957,9 +988,7 @@ static void eventCallback(struct event_handler_args arg)
|
||||
|
||||
if ((ppv_link->pvlMask & pvlOptCP) ||
|
||||
((ppv_link->pvlMask & pvlOptCPP) && precord->scan == 0))
|
||||
{
|
||||
addAction(pca, CA_DBPROCESS);
|
||||
}
|
||||
scanLinkOnce(precord, pca);
|
||||
}
|
||||
done:
|
||||
epicsMutexUnlock(pca->lock);
|
||||
@@ -1032,9 +1061,7 @@ static void accessRightsCallback(struct access_rights_handler_args arg)
|
||||
if (precord &&
|
||||
((ppv_link->pvlMask & pvlOptCP) ||
|
||||
((ppv_link->pvlMask & pvlOptCPP) && precord->scan == 0)))
|
||||
{
|
||||
addAction(pca, CA_DBPROCESS);
|
||||
}
|
||||
scanLinkOnce(precord, pca);
|
||||
done:
|
||||
epicsMutexUnlock(pca->lock);
|
||||
}
|
||||
@@ -1246,13 +1273,6 @@ static void dbCaTask(void *arg)
|
||||
printLinks(pca);
|
||||
}
|
||||
}
|
||||
if (link_action & CA_DBPROCESS) {
|
||||
dbCommon *prec;
|
||||
epicsMutexMustLock(pca->lock);
|
||||
prec = pca->plink->precord;
|
||||
epicsMutexUnlock(pca->lock);
|
||||
db_process(prec);
|
||||
}
|
||||
}
|
||||
SEVCHK(ca_flush_io(), "dbCaTask");
|
||||
}
|
||||
|
||||
@@ -31,7 +31,6 @@
|
||||
#define CA_MONITOR_STRING 0x20
|
||||
#define CA_GET_ATTRIBUTES 0x40
|
||||
#define CA_SYNC 0x1000
|
||||
#define CA_DBPROCESS 0x2000
|
||||
/* write type */
|
||||
#define CA_PUT 0x1
|
||||
#define CA_PUT_CALLBACK 0x2
|
||||
|
||||
@@ -635,21 +635,9 @@ long dbChannelGetField(dbChannel *chan, short dbrType, void *pbuffer,
|
||||
{
|
||||
dbCommon *precord = chan->addr.precord;
|
||||
long status = 0;
|
||||
unsigned char local_fl = 0;
|
||||
|
||||
dbScanLock(precord);
|
||||
if (!pfl && (ellCount(&chan->pre_chain) || ellCount(&chan->post_chain))) {
|
||||
pfl = db_create_read_log(chan);
|
||||
if (pfl) {
|
||||
local_fl = 1;
|
||||
pfl = dbChannelRunPreChain(chan, pfl);
|
||||
pfl = dbChannelRunPostChain(chan, pfl);
|
||||
}
|
||||
}
|
||||
status = dbChannelGet(chan, dbrType, pbuffer, options, nRequest, pfl);
|
||||
if (local_fl) {
|
||||
db_delete_field_log(pfl);
|
||||
}
|
||||
dbScanUnlock(precord);
|
||||
return status;
|
||||
}
|
||||
|
||||
@@ -511,10 +511,6 @@ DBCORE_API long dbChannelGet(dbChannel *chan, short type,
|
||||
* \param[in,out] nRequest Pointer to the element count.
|
||||
* \param[in] pfl Pointer to a db_field_log or NULL.
|
||||
* \returns 0, or an error status value.
|
||||
*
|
||||
* \since UNRELEASED If pfl is NULL and chan has filters, db_create_read_log() will be called
|
||||
* internally to create a temporary db_field_log which is passed to dbChannelGet()
|
||||
* then deallocated.
|
||||
*/
|
||||
DBCORE_API long dbChannelGetField(dbChannel *chan, short type,
|
||||
void *pbuffer, long *options, long *nRequest, void *pfl);
|
||||
|
||||
@@ -240,6 +240,7 @@ The B<SPVT> field is for internal use by the scanning system.
|
||||
}
|
||||
field(PROC,DBF_UCHAR) {
|
||||
prompt("Force Processing")
|
||||
asl(ASL0)
|
||||
pp(TRUE)
|
||||
interest(3)
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ typedef struct parseContext {
|
||||
short dbrType;
|
||||
short dbrSize;
|
||||
char *pdest;
|
||||
int elems;
|
||||
size_t elems;
|
||||
} parseContext;
|
||||
|
||||
static int dbcj_null(void *ctx) {
|
||||
@@ -62,19 +62,20 @@ static int dbcj_double(void *ctx, double num) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int dblsj_number(void *ctx, const char *val, size_t len) {
|
||||
errlogPrintf("dbLSConvertJSON: Numeric value %.*s provided, string expected\n",
|
||||
(int)len, val);
|
||||
return 0; /* Illegal */
|
||||
}
|
||||
|
||||
static int dbcj_string(void *ctx, const unsigned char *val, size_t len) {
|
||||
parseContext *parser = (parseContext *) ctx;
|
||||
char *pdest = parser->pdest;
|
||||
|
||||
/* Not attempting to handle char-array fields here, they need more
|
||||
* metadata about the field than we have available at the moment.
|
||||
*/
|
||||
if (parser->dbrType == DBF_CHAR || parser->dbrType == DBF_UCHAR) {
|
||||
/* Treating char array as long string */
|
||||
if (len > parser->elems)
|
||||
len = parser->elems;
|
||||
strncpy(pdest, (const char *) val, len);
|
||||
parser->elems -= len;
|
||||
parser->pdest += len;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (parser->dbrType != DBF_STRING) {
|
||||
errlogPrintf("dbConvertJSON: String \"%.*s\" provided, numeric value expected\n",
|
||||
(int)len, val);
|
||||
@@ -92,21 +93,6 @@ static int dbcj_string(void *ctx, const unsigned char *val, size_t len) {
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int dblsj_string(void *ctx, const unsigned char *val, size_t len) {
|
||||
parseContext *parser = (parseContext *) ctx;
|
||||
char *pdest = parser->pdest;
|
||||
|
||||
if (parser->elems > 0) {
|
||||
if (len > parser->dbrSize - 1)
|
||||
len = parser->dbrSize - 1;
|
||||
strncpy(pdest, (const char *) val, len);
|
||||
pdest[len] = 0;
|
||||
parser->pdest = pdest + len;
|
||||
parser->elems = 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int dbcj_start_map(void *ctx) {
|
||||
errlogPrintf("dbConvertJSON: Map type not supported\n");
|
||||
return 0; /* Illegal */
|
||||
@@ -146,6 +132,11 @@ long dbPutConvertJSON(const char *json, short dbrType,
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!jlen) {
|
||||
*pnRequest = 0;
|
||||
return 0;
|
||||
}
|
||||
|
||||
parser->depth = 0;
|
||||
parser->dbrType = dbrType;
|
||||
parser->dbrSize = dbValueSize(dbrType);
|
||||
@@ -181,20 +172,10 @@ long dbPutConvertJSON(const char *json, short dbrType,
|
||||
return status;
|
||||
}
|
||||
|
||||
|
||||
static yajl_callbacks dblsj_callbacks = {
|
||||
dbcj_null, dbcj_boolean, NULL, NULL, dblsj_number, dblsj_string,
|
||||
dbcj_start_map, NULL, NULL,
|
||||
dbcj_start_array, NULL
|
||||
};
|
||||
|
||||
long dbLSConvertJSON(const char *json, char *pdest, epicsUInt32 size,
|
||||
epicsUInt32 *plen)
|
||||
{
|
||||
parseContext context, *parser = &context;
|
||||
yajl_handle yh;
|
||||
yajl_status ys;
|
||||
size_t jlen = strlen(json);
|
||||
long nRequest = size-1;
|
||||
long status;
|
||||
|
||||
if (!size) {
|
||||
@@ -202,35 +183,8 @@ long dbLSConvertJSON(const char *json, char *pdest, epicsUInt32 size,
|
||||
return 0;
|
||||
}
|
||||
|
||||
parser->depth = 0;
|
||||
parser->dbrType = DBF_STRING;
|
||||
parser->dbrSize = size;
|
||||
parser->pdest = pdest;
|
||||
parser->elems = 1;
|
||||
|
||||
yh = yajl_alloc(&dblsj_callbacks, NULL, parser);
|
||||
if (!yh) {
|
||||
errlogPrintf("dbLSConvertJSON: out of memory\n");
|
||||
return S_db_noMemory;
|
||||
}
|
||||
|
||||
ys = yajl_parse(yh, (const unsigned char *) json, jlen);
|
||||
|
||||
switch (ys) {
|
||||
case yajl_status_ok:
|
||||
*plen = (char *) parser->pdest - pdest + 1;
|
||||
status = 0;
|
||||
break;
|
||||
|
||||
default: {
|
||||
unsigned char *err = yajl_get_error(yh, 1,
|
||||
(const unsigned char *) json, jlen);
|
||||
errlogPrintf("dbLSConvertJSON: %s", err);
|
||||
yajl_free_error(yh, err);
|
||||
status = S_db_badField;
|
||||
}
|
||||
}
|
||||
|
||||
yajl_free(yh);
|
||||
status = dbPutConvertJSON(json, DBF_CHAR, pdest, &nRequest);
|
||||
pdest[nRequest++] = 0;
|
||||
*plen = nRequest;
|
||||
return status;
|
||||
}
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user