Compare commits

..

564 Commits

Author SHA1 Message Date
0c2436720a bump rpm version 2025-07-29 17:55:05 +02:00
bd0c7e7823 Apply log prefix to each line 2025-07-29 17:55:05 +02:00
46f046c751 allow hex and octal strings in dbPut
Setting EPICS_DB_CONVERT_DECIMAL_ONLY turns dbPut/dbGet
string to integer conversions back the the old decimal only
policy.
2025-07-29 17:55:05 +02:00
60277e0980 extend dfanout record to 16 outputs 2025-07-29 17:55:05 +02:00
12d24d3108 use relative path for PSI hosted submodules to allow migration 2025-07-29 17:54:56 +02:00
3b846dda9a Revert "extend sub record to inputs A-U"
This reverts commit 6196554b17.

This commit would break backward compatibility.
Postpone until 7.0.10.
2025-07-29 17:54:56 +02:00
15cbbe074f Merge remote-tracking branch 'github/dfanout_IVOA' into PSI-7.0 2025-07-14 10:56:53 +02:00
3bb6433fe6 Merge remote-tracking branch 'remotes/github/extend_calc' into PSI-7.0 2025-07-14 10:55:06 +02:00
0f29b34f68 Merge branch '7.0' into PSI-7.0 2025-07-14 10:49:20 +02:00
427c3b4de1 fix missed documentation update 2025-07-14 09:55:47 +02:00
b259f5ee44 document the changes 2025-07-14 09:45:25 +02:00
525cddc43f fix calc link documentation 2025-07-14 09:32:44 +02:00
65cc904262 fix calc link range check 2025-07-14 09:32:44 +02:00
6196554b17 extend sub record to inputs A-U 2025-07-14 09:32:44 +02:00
04a59727ec make CALC/OCAL fields twice as long 2025-07-14 09:32:44 +02:00
9921a8ae19 extend calc records and expressions to inputs A-U 2025-07-14 09:32:44 +02:00
243a18ee43 add IVOA to dfanout 2025-07-10 18:18:46 +02:00
Michael Davidsaver
def6cdb61f better error for dbPutString() to DBF_NOACCESS 2025-07-07 16:45:50 -07:00
Michael Davidsaver
7236f3ad5f macLib: add emphasis when expansion finds an undefined macro 2025-07-07 16:45:44 -07:00
Michael Davidsaver
2422e56d20 Improve "Ring buffer overflow" message 2025-07-07 16:13:07 -07:00
Michael Davidsaver
c39f39cb93 improve message for missing INAM/SNAM
Include the requested function name
2025-07-07 16:13:07 -07:00
Hinko Kocevar
f911f8ca3e fix Makefile test for including readlineTest 2025-06-20 16:01:44 -05:00
Hinko Kocevar
693c95e1d0 add release note 2025-06-20 16:01:44 -05:00
Hinko Kocevar
38376b95ea fix no. of test to be ran 2025-06-20 16:01:44 -05:00
Hinko Kocevar
f7f7443c4f remove the trailing newline in test file 2025-06-20 16:01:44 -05:00
Hinko Kocevar
f34dd44c29 add more tests 2025-06-20 16:01:44 -05:00
Hinko Kocevar
e294bb443c 2nd attempt to fix a linter error for step 49 of "Path" 2025-06-20 16:01:44 -05:00
Hinko Kocevar
de6d4e74ef Remove CodeQL workflow for my branch 2025-06-20 16:01:44 -05:00
Hinko Kocevar
ea421f61f5 Add CodeQL workflow for my branch 2 2025-06-20 16:01:44 -05:00
Hinko Kocevar
4a81f5c518 Add CodeQL workflow for my branch 2025-06-20 16:01:44 -05:00
Hinko Kocevar
5813dcd639 attempt to fix a linter error for step 49 of "Path" 2025-06-20 16:01:44 -05:00
Hinko Kocevar
ae0435c6b2 Do not add newline to multiline-input.txt 2025-06-20 16:01:44 -05:00
Hinko Kocevar
2e00d068d3 add multiline-input.txt and multiline-expect.txt to TESTFILES 2025-06-20 16:01:44 -05:00
Hinko Kocevar
7449a947ed check for fgets return value 2025-06-20 16:01:44 -05:00
Hinko Kocevar
b8e70783d8 trying to fix vs2012 and vs2010 builds 2025-06-20 16:01:44 -05:00
Hinko Kocevar
a2be1c4f4f readline test
should work with READLINE and EPICS command line libraries
2025-06-20 16:01:44 -05:00
Hinko Kocevar
87b8050437 handle backslash for EPICS command line library (similar to READLINE) 2025-06-20 16:01:44 -05:00
Hinko Kocevar
b9b2da26fd detect and handle backslash as part of multi-line string 2025-06-20 16:01:44 -05:00
Simon Rose
344efb14a9 Add release snipped (See PR 628) 2025-06-20 16:00:37 -05:00
Simon Rose
94aa917f5d Ensure that dbgrp/dbglob use the same arguments 2025-06-20 16:00:37 -05:00
Simon Rose
cca6db9d53 Rename arguments and clarify API docstring 2025-06-20 16:00:37 -05:00
Simon Rose
f3c72ea38e Replace dbgrep by dbglob, leaving dbgrep as an alias 2025-06-20 16:00:37 -05:00
Simon Rose
43afae523e Remove dbltExpand test
This is an older manual test to compare dbLoadTemplate to compare to
msi's output. However, it does not link properly with dbCore due to
the rewriting of dbLoadRecords, so it is being removed.
2025-06-20 15:45:44 -05:00
Grzegorz Kowalski
1a4223caa6 Add release notes entry 2025-06-20 15:45:44 -05:00
Simon Rose
144ab9074d Fix help message 2025-06-20 15:45:44 -05:00
Simon Rose
b34465add6 Add support for EPICS_DB_INCLUDE_PATH
This allows dbLoadTemplate to search through either a custom-provided
list of paths, or through paths provided by the environment variable
EPICS_DB_INCLUDE_PATH.
2025-06-20 15:45:44 -05:00
Jeremy Lorelli
d89039dbc6 RTEMS: Exclude BSD and legacy networking components from GeSys objects 2025-06-20 15:45:01 -05:00
Jerzy Jamroz
7b6ec35110 test: afterIocRunningTest improved with help and pwd check 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
70d5df05c7 refactor: atInit changed to afterIocRunning 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
2fc955bf8a docs: add license header to atInitTest.cpp 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
71e4b4ce2a test: add atInit test for arguments with spaces 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
482b3943ed docs: update PR-558.md based on guidance 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
4edf6baae2 docs: PR-558.md optimization. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
4fbe6daab7 refactor: testOkEnv instead of atInitTextEnv - better meaning. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
383d29c93a fix: Adjustment to header H3 of the PR-558.md. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
6f562e0ad2 docs: atInit documentation/new-notes/PR-558.md added. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
455978d9fb test: atInitTest added. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
6683d81eb9 fix: strlen instead of strnlen. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
d87ad35d37 feat: atInit presents its commands in the green colour. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
a9b66218c6 refactor: const adjustment. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
4cf7077ee2 fix: Copyright update. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
71e86e51bd fix: error C2059: syntax error at the atInitDef structure. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
43003ea18a fix: (CWE-126) CodeQL removal. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
61deabd787 fix: CMP=vs2012 (error C2143) variables to the top of a function. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
3ece668f6b refactor: strncpy to memcpy; malloc with the identifier. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
d7a02342e5 fix: CodeQL check failure.
Possibly wrong buffer size in string copy (Critical)
2025-06-20 15:42:47 -05:00
Jerzy Jamroz
ecd76e5b5b fix: Portability update. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
9b92a98d06 fix: ELLLIST initialization with ELLLIST_INIT. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
16fd65639a refactor: initHookRegister moved to atInitRegister; strlcpy -> strncpy
portability.
2025-06-20 15:42:47 -05:00
Jerzy Jamroz
f3e24ea8e3 fix: mallocMustSucceed makes this check unnecessary. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
dd09670b35 refactor: initHookRegister wihout the failure check. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
04c7cdd33a fix: Removal of unnecessary item->cmd NULL check. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
3a822ccb0c refactor: EPICS license adjustment. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
45b2be0171 refactor: Extra blank space after #include-s. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
1468319f31 refactor: Format change
* 4 space indentation
* epicsStdoutPrintf to printf
2025-06-20 15:42:47 -05:00
Jerzy Jamroz
82994d600f perf: Extra safety with strlen(cmd). 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
8752372af1 build: atInit module moved to libcom. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
41f19bd798 build: atInit build-in without the selection capability. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
a89b12f9ef fix: free(item->cmd) not necessary due to the single allocation. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
132cc8b90a refactor: Introducing "__AT_INIT_LOG" consistency. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
bdb3744e7e perf: mallocMustSucceed upgraded with the single allocation. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
124f7b9d9b refactor: afterInit changed to atInit. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
579c15e4f2 feat: afterInit ELLLIST implementation. 2025-06-20 15:42:47 -05:00
Jerzy Jamroz
326c8d588f feat: Refining the afterInit.
* Better error handling
* help message added
* version added
* afterInit=YES build var required to enable
2025-06-20 15:42:47 -05:00
Jerzy Jamroz
77140abe70 feat: afterInit integration to the IOC shell.
The command allows to define boot routines before the iocInit.
2025-06-20 15:42:47 -05:00
Andrew Johnson
3d7a6b0b50 Fixes to properly handle various situations
The "make" commands and filenames below are run in/relative to the
documentation directory.

1. Between releases, EPICS_DEV_SNAPSHOT != "":

"make" generates $(COMMON_DIR)/RELEASE_NOTES.md from new-notes/*.md
and installs it and all the older RELEASE-<ver>.md files into the
$(INSTALL_DOC) directory.

"make release" or "make unrelease" fail with an error message:
  "make release" not available, EPICS_DEV_SNAPSHOT not empty

2. Creating a release, so EPICS_DEV_SNAPSHOT == "":

"make" installs all existing RELEASE-<ver>.md files into $(INSTALL_DOC).

3. Creating a release, EPICS_DEV_SNAPSHOT == "", no file exists named
RELEASE-<ver>.md:

"make release" generates RELEASE-<ver>.md from new-notes/*.md and does
"git add" of that; runs "git rm" of new-notes/*.md;
generates $(COMMON_DIR)/RELEASE_NOTES.md with a different introduction;
Installs all RELEASE*.md files into $(INSTALL_DOC).

4. EPICS_DEV_SNAPSHOT == "", RELEASE-<ver>.md exists and was added to
the Git index:

"make unrelease" here undoes the changes the "make release" command
applied to the Git index and restores the deleted new-notes files.

Running "make release" twice in a row could mess up the first generated
RELEASE-<ver>.md file if any new-notes/*.md files were added or the
make-notes.pl script modified between the two, but to recover just
running "make unrelease" and then "make release" again.

4. EPICS_DEV_SNAPSHOT == "", RELEASE-<ver>.md was added to Git but the
file has since been deleted:

"make unrelease" here will also recover the state and restore any deleted
new-notes/*.md files.

5. EPICS_DEV_SNAPSHOT == "", RELEASE-<ver>.md exists but was not added to
the Git index:

"make release" or "make unrelease" fail with an error message:
  "make release" not available, RELEASE-<ver>.md exists but isn't in Git
2025-06-18 11:12:43 -05:00
Andrew Johnson
463ddf4694 Improvements to make-notes.pl script
Also fixes output title line
2025-06-18 11:12:43 -05:00
Andrew Johnson
389f51e55c Rename new-notes/PR-587 file; fix code block in PR-644 2025-06-18 11:12:43 -05:00
Andrew Johnson
855696b4b1 Adjust our release note and the new-notes/README file 2025-06-18 11:12:43 -05:00
Andrew Johnson
e45da11703 Allow users to skip build steps during doc development 2025-06-18 11:12:43 -05:00
Andrew Johnson
94b37fafb6 Fix heading levels in filters documentation 2025-06-18 11:12:43 -05:00
Andrew Johnson
8ecf71c0a4 Fix the anchors in links to other markdown files
Need to lower-case the anchors in links to other EPICS markdown docs.
2025-06-18 11:12:43 -05:00
Andrew Johnson
5aff8cee30 Adjust generated RELEASE_NOTES.md
- Use a Sphinx/Myst {include} directive to pull the text from all previous
RELEASE files into the output, which makes the website sidebar index work
properly.
- Exclude the RELEASE files from the files given to RTD to publish, they
aren't needed now and generate warnings if included.
- Updated the intro paragraph in all RELEASE files.
2025-06-18 11:12:43 -05:00
Andrew Johnson
32517665b9 Tell doxygen about some essential C/C++ macros 2025-06-18 11:12:43 -05:00
Andrew Johnson
d4ad7c315e Adjust toctree links to previous releases 2025-06-18 11:12:43 -05:00
Andrew Johnson
99682610a0 Fix header levels in some .dbd.pod files 2025-06-18 11:12:43 -05:00
Andrew Johnson
9eca4bc448 Add an H1 to the older RELEASE-<ver>.md files 2025-06-18 11:12:43 -05:00
Andrew Johnson
d2c73046f4 Updated Release Checklist
Includes instructions on how to generate a new Release-<ver>.md
file at the right time during the release process – it won't work
properly if done earlier.
2025-06-18 11:12:43 -05:00
Andrew Johnson
62b8653c39 Change links to older RELEASE docs into a toctree 2025-06-18 11:12:43 -05:00
Andrew Johnson
1515f4d792 CentOS-7 lacks perl-version 2025-06-18 11:12:43 -05:00
Andrew Johnson
91063e4caa Add links to older release notes files, update wording 2025-06-18 11:12:43 -05:00
Andrew Johnson
7b010cecd8 Update text 2025-06-18 11:12:43 -05:00
Andrew Johnson
569e94b9fe Add 'make release' target
It does nothing unless EPICS_DEV_SNAPSHOT is empty though.
2025-06-18 11:12:43 -05:00
Andrew Johnson
bb78ba223c Don't rely on EPICS_DEV_SNAPSHOT being "-DEV" 2025-06-18 11:12:43 -05:00
Andrew Johnson
42ba2875cc Created PR, renamed notes entry file 2025-06-18 11:12:43 -05:00
Andrew Johnson
5a7b5b3709 Build RELEASE_NOTES.md from new-notes/ files
Adds new-notes files for the PRs already merged.
Future conflicts in the now-deleted RELEASE_NOTES.md file must be
turned into new-notes/PR-nnn.md files when resolving them.
2025-06-18 11:12:43 -05:00
Andrew Johnson
7876a5f5cf Split RELEASE_NOTES.md into multiple files
Also added notes entries from PVA modules, back to 7.0.5.
2025-06-18 11:12:43 -05:00
Andrew Johnson
2bf9e70ac8 Move list of headers out of Makefile 2025-06-18 11:12:43 -05:00
0223ee8465 add space for consistency 2025-06-18 10:15:34 -05:00
fe3ccfcafd ensure uft8 encoding in pod files 2025-06-18 10:15:34 -05:00
37741efa38 allow =fields ranges in *.dbd.pod 2025-06-18 10:15:34 -05:00
51b57e0043 beautify md table layouts by padding 2025-06-18 10:15:34 -05:00
Michael Davidsaver
333446e0fe dbDbLink: debug detect dbPutLink w/o locking
Cross-check ownership when lockset debug tracking is enabled.
2025-06-16 18:11:26 -07:00
Michael Davidsaver
8735a7b17c dbCa: fix db_process() w/o locking 2025-06-16 18:11:26 -07:00
Andrew Johnson
81ba6a8a24 Fix INSTALL_DOC rule
Fixes #607
2025-06-11 11:57:45 -05:00
Atif Ali
5c87283866 remove trailing spaces 2025-06-09 15:02:34 -05:00
Atif Ali
1b167f5de8 fix typo in docs for build instructions 2025-06-09 15:02:34 -05:00
Andrew Johnson
2f0fbbe1c6 Update Windows CI runners to Win-22 and MSC-22 2025-06-04 13:17:19 -05:00
4750b7ee93 document fdManager changes 2025-06-04 12:43:27 -05:00
c9f80d82cc silence Codacy warning 2025-06-04 12:43:27 -05:00
Michael Davidsaver
93f6c4692f fdManagerTest: quiet codacy warnings 2025-06-04 12:43:27 -05:00
72ca94e04c cleanup coding style in fdManager 2025-06-04 12:43:27 -05:00
3de1d93059 fdManager: filter poll flags for Window's sake 2025-06-04 12:43:27 -05:00
8855d15a3b make fdManagerPrivate::fdReg volatile to avoid codacy warning 2025-06-04 12:43:27 -05:00
87bb7d430f use smart pointers in fdManager 2025-06-04 12:43:27 -05:00
3963b35c17 fix codacy warning: make fdManagerPrivate constructor explicit 2025-06-04 12:43:27 -05:00
ec5badc737 fdManager uses poll() on Darwin too 2025-06-04 12:43:27 -05:00
ca48a217a5 Keep implementation details of fdManager out of header file 2025-06-04 12:43:27 -05:00
27db57d386 fdManager use std::vector 2025-06-04 12:43:27 -05:00
02d25c3c48 fdManager uses poll() on Windows and RTEMS too
RTEMS needs to use the "new" network stack
Windows has poll since Vista
Don't use poll on cygwin: it emulates poll() using select().
2025-06-04 12:43:27 -05:00
4d63e65b9d fdManager changed to use poll()
The implementation using select() limits file desciptors to FD_SETSIZE,
typically 1024 on Linux. This number is too low for some applications,
for example for the CA gateway.
Therefore, Linux builds use poll() instead.
2025-06-04 12:43:27 -05:00
Michael Davidsaver
9731d07e68 add fdManager test 2025-06-04 12:43:27 -05:00
Michael Davidsaver
3daba7803b remove fdmgrTest
Not a unittest, and not functional.
2025-06-04 12:43:27 -05:00
ea402b0f73 fix for architectures where sizeof(void*) > sizeof(long), i.e. windows-x64 2025-06-04 10:14:59 -05:00
Érico Nogueira
21368dc7b4 Don't include linux/ header in osdSockUnsentCount.
Per the manpage in the file's comment, SIOCOUTQ is equivalent to the
TIOCOUTQ ioctl, whose value can be obtained by including <sys/ioctl.h>,
which allows us to avoid including any system-specific headers. This is
desirable so that, on a musl system, it won't be necessary to install
kernel headers in order to build epics-base.

Since it's first been checked into Git, the Linux kernel has defined
SIOCOUTQ to be TIOCOUTQ [1].

From the three main libc options on Linux: glibc and uclibc use the
kernel headers, so both ioctls are available; and musl defines only
TIOCOUTQ in their own headers.

[1] 1da177e4c3
2025-06-04 09:55:04 -05:00
Andrew Johnson
a7c2292d48 Add Release note (using new-notes scheme from PR #628) 2025-06-04 09:52:44 -05:00
Andrew Johnson
0f6fd8fff7 Improve 'help' self-description message 2025-06-04 09:52:44 -05:00
Andrew Johnson
c485055bd5 asSet* commands don't need DBD loaded 2025-06-04 09:52:44 -05:00
Andrew Johnson
35923b5085 Use "Invalid" instead of "Illegal" in error messages 2025-06-04 09:52:44 -05:00
Andrew Johnson
42e7cbc71d Add color to the softIoc verbose output 2025-06-04 09:52:44 -05:00
Andrew Johnson
8c6336014a Update & color error/warning messages from db/dbd parser 2025-06-04 09:52:44 -05:00
Andrew Johnson
52d9ef1d20 Improve iocsh tests, update extected output 2025-06-04 09:52:44 -05:00
Andrew Johnson
c0da3dd1f9 Make default iocsh prompt green
The bldEnvData.pl script now syntax-checks the envParam
default values, allowing ANSI color macros to be used
in the IOCSH_PS1 parameter.
2025-06-04 09:52:44 -05:00
Andrew Johnson
55d918e74c Add more colour to iocsh output messages
Includes some unification of error text, narrower wrap margin.
'var' output now lists the variable types.
2025-06-04 09:52:44 -05:00
ca74f94faa bump rpm version
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 2s
Base / Cross linux-aarch64 (push) Failing after 1s
Base / Cross linux-arm gnueabi (push) Failing after 2s
Base / Cross linux-arm gnueabihf (push) Failing after 1s
Base / CentOS-8 (push) Failing after 2s
Base / Fedora-33 (push) Failing after 1s
Base / Fedora-latest (push) Failing after 2s
Base / Rocky-9 (push) Failing after 1s
Base / Docker CentOS-7 (push) Failing after 7s
Base / Win2019 clang-cl (push) Has been cancelled
Base / Ub-22 clang C++11 (push) Has been cancelled
Base / MacOS clang (push) Has been cancelled
Base / Ub-22 clang (push) Has been cancelled
Base / Ub-24 gcc-13 c++20 Werror (push) Has been cancelled
Base / Ub-22 gcc + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-22 gcc + RT-4.9 (push) Has been cancelled
Base / Ub-22 gcc C++11, static (push) Has been cancelled
Base / Ub-22 gcc + MinGW, static (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Ub-22 gcc + RT-4.10 (push) Has been cancelled
Base / Ub-22 gcc + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-22 gcc + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-22 gcc + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2022 mingw (push) Has been cancelled
Base / Ub-22 gcc + MinGW (push) Has been cancelled
Base / Ub-22 gcc unsigned char (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2025-05-23 14:23:26 +02:00
8d46bd3a41 fix calc link documentation 2025-05-23 13:48:54 +02:00
226b752470 fix calc link range check 2025-05-23 12:11:20 +02:00
f7778539e8 make CALC/OCAL fields twice as long 2025-05-23 11:42:17 +02:00
45ea3d5664 extend calc records and expressions to inputs A-U 2025-05-22 16:34:16 +02:00
c67982aa3f Always search homebrew and MacPorts directories
This allows other modules like pvxs to find files there, too.
Also, the install locations of homebrew and MacPorts are now
detected rather than assumed.

If a package is installed in both, the homebrew version is preferred.
2025-05-21 09:41:44 -05:00
Timo Korhonen
0cbc4eb107 fixes in pod files to resolve issues in conversion to markdown. 2025-05-21 09:09:34 -05:00
Simon Rose
72936844ae Silence some error log messages during test runs 2025-05-16 11:39:34 -07:00
Jeremy Lorelli
8e29e13a13 setBootConfigFromNVRAM.c: Fix warning due to discarded qualifiers & mismatched type 2025-05-02 07:28:22 -07:00
Simon Rose
a85ef1ad1c Fix failing windows builds
Certain windows build environments (see
https://dev.azure.com/conda-forge/feedstock-builds/_build/results?buildId=1234387&view=results
for an example) fail unless the echo command is properly quoted. This
seems to be due to how Make handles various commands on non-posix
systems; without the quotes it directly tries to run
```
echo foo bar
```
inside cmd.exe, which fails as echo is not a valid command in that context.

Co-authored-by: Anders Harrisson <anders.harrisson@ess.eu>
2025-04-29 10:13:02 -07:00
5e1bd8956b Fix stringout doc typo: s/dirctly/directly/ 2025-04-24 11:20:44 -05:00
b833f12129 fix epicsStrtod for 32 bit architectures 2025-04-23 09:25:17 -05:00
1804bcef7d bump rpm version
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 2s
Base / Cross linux-aarch64 (push) Failing after 1s
Base / Cross linux-arm gnueabi (push) Failing after 2s
Base / Cross linux-arm gnueabihf (push) Failing after 1s
Base / CentOS-8 (push) Failing after 3s
Base / Fedora-33 (push) Failing after 1s
Base / Fedora-latest (push) Failing after 2s
Base / Rocky-9 (push) Failing after 4s
Base / Docker CentOS-7 (push) Failing after 7s
Base / Win2019 clang-cl (push) Has been cancelled
Base / Ub-22 clang C++11 (push) Has been cancelled
Base / MacOS clang (push) Has been cancelled
Base / Ub-22 clang (push) Has been cancelled
Base / Ub-24 gcc-13 c++20 Werror (push) Has been cancelled
Base / Ub-22 gcc + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-22 gcc + RT-4.10 (push) Has been cancelled
Base / Ub-22 gcc + RT-4.9 (push) Has been cancelled
Base / Ub-22 gcc + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-22 gcc + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-22 gcc + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2022 mingw (push) Has been cancelled
Base / Ub-22 gcc + MinGW (push) Has been cancelled
Base / Ub-22 gcc unsigned char (push) Has been cancelled
Base / Ub-22 gcc C++11, static (push) Has been cancelled
Base / Ub-22 gcc + MinGW, static (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2025-04-23 11:50:45 +02:00
990e08c737 fix commit f2a03e90 2025-04-23 11:49:51 +02:00
Andrew Johnson
e13d65f6f5 Remove more uses of DEVSUPFUN that C23 doesn't like 2025-04-17 12:29:05 -05:00
Andrew Johnson
eb1263795e Use new DSET and arg's 2025-04-17 11:55:30 -05:00
Andrew Johnson
ad326751fa C23 needs a cast here 2025-04-17 10:04:54 -05:00
Michael Davidsaver
f827bd7e34 true is C23 keyword 2025-04-15 16:10:34 -07:00
Freddie Akeroyd
7372b4e5bb Add fields argument to dbgrep() (#613)
This allows optionally printing out the value of one or more fields
for each record found.
2025-04-04 09:17:16 -05:00
Minijackson
26e9e407f6 docs: add ca_test cli reference imported from CAref.html 2025-04-04 08:29:36 -05:00
Minijackson
a0059b6e91 docs: add caEventRate cli reference imported from CAref.html 2025-04-04 08:29:36 -05:00
Minijackson
feae322e9a docs: add casw cli reference imported from CAref.html 2025-04-04 08:29:36 -05:00
Minijackson
1b1bb34c83 docs: add catime cli reference imported from CAref.html 2025-04-04 08:29:36 -05:00
Minijackson
fe6d946d32 docs: add acctst cli reference imported from CAref.html 2025-04-04 08:29:36 -05:00
Minijackson
004c55503b docs: add caput cli reference imported from CAref.html 2025-04-04 08:29:36 -05:00
Minijackson
a9ba1c95b2 docs: add camonitor cli reference imported from CAref.html 2025-04-04 08:29:36 -05:00
Minijackson
72d751f07d docs: add cainfo cli reference imported from CAref.html 2025-04-04 08:29:36 -05:00
Minijackson
d279897181 docs: add caget cli reference imported from CAref.html 2025-04-04 08:29:36 -05:00
Minijackson
cad535a956 docs: include msi cli reference, use Sphinx cli features
This enables referring to e.g. {option}`msi -o` in the documentation,
and it will link to the correct location
2025-04-04 08:29:36 -05:00
Minijackson
6fc6304f19 docs(cadef): group CA operations together 2025-04-04 08:27:07 -05:00
Minijackson
0c75f1fe99 import CAref function and return codes reference to doxygen comments
Import all function documentations, return code reference
into the header files, as doc comments,
in the hopes of moving the CAref.html manual to docs.epics-controls.org,
which will be done in a later PR.

Also added doc comments to some other low-hanging fruits,
for example when plain comments where near, or when it was obvious to do so.
2025-04-04 08:27:07 -05:00
f501a2810e bump rpm version
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 1s
Base / Cross linux-aarch64 (push) Failing after 2s
Base / Cross linux-arm gnueabi (push) Failing after 1s
Base / Cross linux-arm gnueabihf (push) Failing after 2s
Base / CentOS-8 (push) Failing after 1s
Base / Fedora-33 (push) Failing after 2s
Base / Fedora-latest (push) Failing after 1s
Base / Rocky-9 (push) Failing after 2s
Base / Docker CentOS-7 (push) Failing after 7s
Base / Ub-22 clang C++11 (push) Has been cancelled
Base / MacOS clang (push) Has been cancelled
Base / Ub-22 clang (push) Has been cancelled
Base / Ub-24 gcc-13 c++20 Werror (push) Has been cancelled
Base / Ub-22 gcc + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-22 gcc + RT-4.10 (push) Has been cancelled
Base / Ub-22 gcc + RT-4.9 (push) Has been cancelled
Base / Ub-22 gcc + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2022 mingw (push) Has been cancelled
Base / Ub-22 gcc + MinGW (push) Has been cancelled
Base / Ub-22 gcc C++11, static (push) Has been cancelled
Base / Ub-22 gcc + MinGW, static (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 clang-cl (push) Has been cancelled
Base / Ub-22 gcc + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-22 gcc + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-22 gcc unsigned char (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2025-03-21 15:16:25 +01:00
997746e5e2 fix epicsStrtod for 32 bit architectures 2025-03-21 15:16:25 +01:00
09f96d056a Merge branch '7.0' into PSI-7.0 2025-03-21 15:15:57 +01:00
84f49ad149 allow to run tests for cross linux versions
They need their own library versions, e.g. libreadline.so
2025-03-21 13:50:05 +01:00
db003e8a10 fix wrong usage of TARGET_xxx macros
They are for make targets, i.e. file dependent flags
not for target architecture dependent flags.
2025-03-21 13:49:05 +01:00
1732c9440a fix for mingw warning about order of header files 2025-03-21 13:49:05 +01:00
ff565267e5 support to run tests in wine and allow to add to WINE* variables 2025-03-21 13:49:04 +01:00
acf4c92697 fix epicsExport for volatile and const variables 2025-03-21 13:49:04 +01:00
93ba98cdca VxWorks does not mark abort() or exit() noreturn 2025-03-21 13:49:04 +01:00
f2a03e906b fix vxWorks softIoc build 2025-03-21 13:49:04 +01:00
d6481e190f update spec file for EPICS 7.0.9
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 1s
Base / Cross linux-aarch64 (push) Failing after 2s
Base / Cross linux-arm gnueabi (push) Failing after 1s
Base / Cross linux-arm gnueabihf (push) Failing after 2s
Base / Fedora-33 (push) Failing after 1s
Base / Fedora-latest (push) Failing after 2s
Base / Win2019 clang-cl (push) Has been cancelled
Base / Ub-20 clang C++11 (push) Has been cancelled
Base / MacOS clang (push) Has been cancelled
Base / Ub-20 clang (push) Has been cancelled
Base / Ub-20 gcc + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2022 mingw (push) Has been cancelled
Base / Ub-20 gcc + MinGW (push) Has been cancelled
Base / Ub-20 gcc unsigned char (push) Has been cancelled
Base / Ub-20 gcc C++11, static (push) Has been cancelled
Base / Ub-20 gcc + MinGW, static (push) Has been cancelled
Base / Ub-22 gcc-12 c++20 Werror (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2025-03-05 11:21:20 +01:00
2e77bc8cc1 improve atExit debugging 2025-03-05 11:21:19 +01:00
ea7459084e Merge remote-tracking branch 'github/noreturn' into PSI-7.0 2025-03-04 17:55:32 +01:00
ddc49e9f79 Merge remote-tracking branch 'github/epicsExportAddress' into PSI-7.0 2025-03-04 17:55:15 +01:00
a3a99e4d14 build mingw for testing 2025-03-04 17:53:22 +01:00
12144fe267 Merge remote-tracking branch 'github/RuntestArchs' into PSI-7.0 2025-03-04 17:49:04 +01:00
c5315d95b8 no longer need extern "C" { } around epicsExport macros 2025-03-04 17:45:04 +01:00
74d231b04f decorate functions that do not return 2025-03-04 14:41:05 +01:00
23521e0a08 Merge remote-tracking branch 'github/fdManager_using_poll' into PSI-7.0 2025-03-03 17:20:13 +01:00
55791ef470 Merge branch 7.0.9 into PSI-7.0 2025-03-03 17:19:23 +01:00
7b2fb669ec Merge remote-tracking branch 'xiaoqiang/7.0' into PSI-7.0 2025-03-03 17:14:20 +01:00
312a602952 support CROSS_COMPILER_RUNTESTS_ARCHS other than RTEMS 2025-03-03 14:11:45 +01:00
bc27476554 document fdManager change 2025-02-10 08:50:15 +01:00
9c1334ae15 silence Codacy warning 2025-02-10 08:47:59 +01:00
Michael Davidsaver
9481deacb0 fdManagerTest: quiet codacy warnings 2025-02-10 08:47:59 +01:00
8f1a3888c6 cleanup coding style in fdManager 2025-02-10 08:47:59 +01:00
c9183b5241 fdManager: filter poll flags for Window's sake 2025-02-10 08:47:59 +01:00
c3f57ee818 make fdManagerPrivate::fdReg volatile to avoid codacy warning 2025-02-10 08:47:59 +01:00
27f4261dfb use smart pointers in fdManager 2025-02-10 08:47:59 +01:00
5eb9997791 fix codacy warning: make fdManagerPrivate constructor explicit 2025-02-10 08:47:59 +01:00
bfc2f832ec fdManager uses poll() on Darwin too 2025-02-10 08:47:59 +01:00
f09b235fce Keep implementation details of fdManager out of header file 2025-02-10 08:47:59 +01:00
ece031c88b fdManager use std::vector 2025-02-10 08:47:59 +01:00
cbbbd67843 fdManager uses poll() on Windows and RTEMS too
RTEMS needs to use the "new" network stack
Windows has poll since Vista
Don't use poll on cygwin: it emulates poll() using select().
2025-02-10 08:47:59 +01:00
57c0295024 fdManager changed to use poll()
The implementation using select() limits file desciptors to FD_SETSIZE,
typically 1024 on Linux. This number is too low for some applications,
for example for the CA gateway.
Therefore, Linux builds use poll() instead.
2025-02-10 08:47:59 +01:00
Michael Davidsaver
8f77e941c7 add fdManager test 2025-02-10 08:47:59 +01:00
Michael Davidsaver
c76395abc6 remove fdmgrTest
Not a unittest, and not functional.
2025-02-10 08:47:59 +01:00
1ee8338886 bump rpm release
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 1s
Base / Cross linux-aarch64 (push) Failing after 2s
Base / Cross linux-arm gnueabi (push) Failing after 1s
Base / Cross linux-arm gnueabihf (push) Failing after 2s
Base / Fedora-33 (push) Failing after 1s
Base / Fedora-latest (push) Failing after 2s
Base / Ub-20 clang C++11 (push) Has been cancelled
Base / MacOS clang (push) Has been cancelled
Base / Ub-20 clang (push) Has been cancelled
Base / Ub-20 gcc + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc + MinGW (push) Has been cancelled
Base / Ub-20 gcc unsigned char (push) Has been cancelled
Base / Ub-20 gcc C++11, static (push) Has been cancelled
Base / Ub-20 gcc + MinGW, static (push) Has been cancelled
Base / Ub-22 gcc-12 c++20 Werror (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2025-01-16 08:17:19 +01:00
250c9658c2 drop RHEL7 architecture 2025-01-16 08:17:19 +01:00
eb59cb6c7e drop VxWorks 5 and 7 compatibility 2025-01-16 08:17:19 +01:00
ab91aee581 handle new directories 2025-01-16 08:17:03 +01:00
ccfb5711c8 provide Com and ca shared libraries in devel package for building stand-alone clients 2025-01-15 11:25:51 +01:00
8accf19239 bump rpm release
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 1s
Base / Cross linux-aarch64 (push) Failing after 2s
Base / Cross linux-arm gnueabi (push) Failing after 1s
Base / Cross linux-arm gnueabihf (push) Failing after 2s
Base / Fedora-33 (push) Failing after 1s
Base / Fedora-latest (push) Failing after 2s
Base / Ub-20 clang C++11 (push) Has been cancelled
Base / MacOS clang (push) Has been cancelled
Base / Ub-20 clang (push) Has been cancelled
Base / Ub-20 gcc + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc + MinGW (push) Has been cancelled
Base / Ub-20 gcc unsigned char (push) Has been cancelled
Base / Ub-20 gcc C++11, static (push) Has been cancelled
Base / Ub-20 gcc + MinGW, static (push) Has been cancelled
Base / Ub-22 gcc-12 c++20 Werror (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2024-12-05 16:59:58 +01:00
9b8712e095 Merge remote-tracking branch 'github/recursion_bug_v2' into PSI-7.0 2024-12-05 16:59:12 +01:00
d13441ebba Revert "fix recursion bug"
This reverts commit 7d73932dc8.
2024-12-05 16:58:32 +01:00
b53505d339 Merge branch '7.0' into PSI-7.0 2024-12-05 16:58:15 +01:00
75524e43bc loop safe wrapper for dbGet added 2024-12-02 11:18:42 +01:00
1567da1366 correct mask for finding field in linkGrp
It worked before because the get_xxx functions are never called for
the links (bit0 = 1), but checking both bits looks cleaner.
2024-11-29 10:47:23 +01:00
35ba9d65a2 fix support for link 0 2024-11-29 10:42:07 +01:00
6bb78e0d59 bump rpm release
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 1s
Base / Cross linux-aarch64 (push) Failing after 2s
Base / Cross linux-arm gnueabi (push) Failing after 1s
Base / Cross linux-arm gnueabihf (push) Failing after 2s
Base / Fedora-33 (push) Failing after 1s
Base / Fedora-latest (push) Failing after 2s
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 unsigned char (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-22 gcc-12 c++20 Werror (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2024-11-25 11:33:27 +01:00
7d73932dc8 fix recursion bug
Previously, linking a field of e.g. a calc record to itself
(calc.INPA = calc.A) directly or through a chain of other records
that support to follow the link for attributes like units, precision
caused an infinite recursion and crashed the ioc.

Affected records: calc, calcout, seq, sub and aSub

Also added support for seq link 0 fields which had been added meanwhile.
2024-11-25 11:32:41 +01:00
4a442bb56c Support deb12-x86_64 2024-11-25 09:27:53 +01:00
60075df3cf Support deb10-x86_64 as a Host arch (allow to build modules on the system) 2024-11-25 09:26:50 +01:00
42892f3921 make VALID_BUILDS contain Host automatically if BUILD_CLASS is HOST 2024-11-18 10:26:59 +01:00
52b3496084 bump rpm release
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 1s
Base / Cross linux-aarch64 (push) Failing after 2s
Base / Cross linux-arm gnueabi (push) Failing after 1s
Base / Cross linux-arm gnueabihf (push) Failing after 2s
Base / Fedora-33 (push) Failing after 1s
Base / Fedora-latest (push) Failing after 2s
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 unsigned char (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-22 gcc-12 c++20 Werror (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2024-09-06 16:55:30 +02:00
2296dbc132 Merge remote-tracking branch 'github/propmon' into PSI-7.0 2024-09-06 14:56:21 +02:00
4af01ed26a Merge branch '7.0' into PSI-7.0 2024-09-06 14:55:12 +02:00
d83079999b keep unversioned libs for all linux version
Prevent future problems with versioned libs when we update patch levels.
2024-09-06 14:39:41 +02:00
15a2e22149 revert MAINTENANCE_VERSION numbers to keep dynamic linking compatible 2024-09-06 14:39:21 +02:00
2dc71ebd6e Revert "use versioned libraries from now on for all architectures"
This reverts commit ecb02803c8.
It turned out that we run into unnecessary dynalic link problems when
minor (but compatible) changes cause *_MAINENANCE_VERSION to be
incremented even though the library is compatible.
Maybe use -soname MAJOR.MINOR or -soname MAJOR instead later?
2024-09-06 10:32:17 +02:00
7077ece7f9 Send DBE_PROPERTY events before DBE_VALUE | DBE_LOG events to allow clients to update their formatting etc in time 2024-09-02 13:45:25 +02:00
22aaded26d fix DBE_PROPERTY events for mbbi/mbbo records 2024-09-02 11:46:49 +02:00
c1b8831205 send DBE_PROPERTY events only if property field actually changed 2024-09-02 11:46:16 +02:00
1e64b08c32 bump rpm version
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 1s
Base / Cross linux-aarch64 (push) Failing after 2s
Base / Cross linux-arm gnueabi (push) Failing after 1s
Base / Cross linux-arm gnueabihf (push) Failing after 2s
Base / Fedora-33 (push) Failing after 1s
Base / Fedora-latest (push) Failing after 2s
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 unsigned char (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-22 gcc-12 c++20 Werror (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2024-08-27 13:08:38 +02:00
d67036fcc0 Merge branch 'aliases' into PSI-7.0 2024-08-26 16:37:57 +02:00
d494d91ba2 allow to load the same alias multiple times (unless dbRecordsOnceOnly is set) 2024-08-26 16:30:20 +02:00
97ffcb725c fix compile error with gcc 3.4.3 2024-08-09 11:45:20 +02:00
5930e8e2e4 time_t has 64 bit o 64 bit architectures 2024-08-09 11:44:26 +02:00
212f387d1b keep INSTALL_PERMISSIONS non-writable 2024-08-07 17:42:40 +02:00
1ae21cdde4 improve error message more 2024-08-07 17:41:47 +02:00
03f17a08c3 Merge branch '7.0' into PSI-7.0 2024-08-07 17:30:04 +02:00
54117d5371 Don't use build-ids. We don't build debug packages and it causes conflics for the copied over compatibility libraris readelf etc
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 2s
Base / Cross linux-aarch64 (push) Failing after 1s
Base / Cross linux-arm gnueabihf (push) Failing after 1s
Base / Cross linux-arm gnueabi (push) Failing after 2s
Base / CentOS-7 (push) Failing after 2s
Base / Fedora-33 (push) Failing after 1s
Base / Fedora-latest (push) Failing after 2s
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 unsigned char (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-22 gcc-12 c++20 Werror (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
2024-06-12 15:37:41 +02:00
cc134d4649 work around rpmbuild's problems to find internal perl modules 2024-06-07 17:20:12 +02:00
012c4c73f1 fix LD_LIBRARY_PATH for VxWorks license manager 2024-06-07 17:19:09 +02:00
96864abb6c Simplify cross build targets. In particular avoid rpath because that annoys rpmbuild 2024-06-07 17:19:01 +02:00
ad00947d48 use our own wine on RHEL9 2024-05-06 09:02:11 +02:00
2db99d46a7 need INSTALL_LOCATION realclean to properly clean up 2024-05-03 13:44:12 +02:00
11661455f1 move module pcas into local file 2024-05-02 16:20:01 +02:00
ecb02803c8 use versioned libraries from now on for all architectures 2024-05-02 16:20:01 +02:00
fcb720275a bump RPM version 2024-05-02 16:20:01 +02:00
87d492bffd Merge branch '7.0' into PSI-7.0 2024-04-30 14:40:00 +02:00
b379c6f3a5 fix problems with LD_LIBRARY_PATH when not installing to final location (e.g. when building RPMs)
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 1s
Base / Cross linux-aarch64 (push) Failing after 2s
Base / Fedora-33 (push) Failing after 2s
Base / Fedora-latest (push) Failing after 1s
Base / Cross linux-arm gnueabi (push) Failing after 1s
Base / Cross linux-arm gnueabihf (push) Failing after 2s
Base / CentOS-7 (push) Failing after 1s
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 unsigned char (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-22 gcc-12 c++20 Werror (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2024-04-25 14:33:25 +02:00
da010afde9 fix rpath-link when FINAL_LOCATION is set 2024-04-25 14:33:25 +02:00
cb710920d0 fix bug that left ':'s behind and put only current (which is highest) EPICS version in PATH 2024-04-25 14:33:24 +02:00
87dea74dcd fix linking the caRepeater.service 2024-04-25 14:33:24 +02:00
d35c7fe5eb fix which files belong to which rpm and their dependencies 2024-04-25 14:33:24 +02:00
c5469efca1 change default permissions because rpmbuild likes the files owner-writable 2024-04-25 14:33:24 +02:00
fd436c40e8 fix problem removing broken links 2024-04-25 14:33:24 +02:00
8557d8adce fix permission of caGateway.service 2024-04-25 14:33:24 +02:00
a0c55f597b do not kill the caRepeater on update because that would kill dependent services like caCateways 2024-04-25 14:33:24 +02:00
9090f54f45 Re-added SHRLIB_SUFFIX change which avoids shared library version numbers
for older RHEL7 versions because of backward compatibility problems with RPM.
Remove the exception in CONFIG_SITE.Common.linuxCommon for release 7.0.8!
Create links with full version shared library names to allow programs built
against previous rpm version to run.
2024-04-25 14:33:13 +02:00
6085f9eb0b git ignore bpmbuild products 2024-04-23 11:55:52 +02:00
a1de706d2c update sub-submodules too 2024-04-23 11:55:52 +02:00
0b12a0cf7e fix Obsoletes: caRepeater version 2024-04-23 11:55:45 +02:00
e9dcdd8936 do not set EPICS_BASE as that changes the default EPICS version chosen by iocsh and takes precedence over the /usr/local/epics/base link
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 1s
Base / Cross linux-aarch64 (push) Failing after 2s
Base / Cross linux-arm gnueabi (push) Failing after 1s
Base / Cross linux-arm gnueabihf (push) Failing after 2s
Base / CentOS-7 (push) Failing after 1s
Base / Fedora-33 (push) Failing after 2s
Base / Fedora-latest (push) Failing after 1s
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 unsigned char (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-22 gcc-12 c++20 Werror (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2024-01-29 17:07:43 +01:00
e2bb42d8d3 obsolete caRepeater rpm
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 2s
Base / Cross linux-aarch64 (push) Failing after 1s
Base / Cross linux-arm gnueabi (push) Failing after 2s
Base / Cross linux-arm gnueabihf (push) Failing after 1s
Base / CentOS-7 (push) Failing after 2s
Base / Fedora-33 (push) Failing after 1s
Base / Fedora-latest (push) Failing after 2s
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 unsigned char (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-22 gcc-12 c++20 Werror (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2023-12-10 13:47:17 +01:00
abcada0d85 add rpm specfile and profile script
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 1s
Base / Cross linux-aarch64 (push) Failing after 2s
Base / Cross linux-arm gnueabi (push) Failing after 1s
Base / Cross linux-arm gnueabihf (push) Failing after 2s
Base / CentOS-7 (push) Failing after 1s
Base / Fedora-33 (push) Failing after 2s
Base / Fedora-latest (push) Failing after 1s
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 unsigned char (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-22 gcc-12 c++20 Werror (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2023-12-08 15:32:20 +01:00
2c35d60a64 silent wine errors 2023-12-08 11:38:38 +01:00
af1b77eb0f fix rpath when FINAL_LOCATION is set 2023-12-07 16:07:02 +01:00
93947eb027 prevents using make -j2 2023-12-06 14:24:56 +01:00
961671259f Add support for RHEL9 2023-12-04 16:00:24 +01:00
Michael Davidsaver
db2482117d rationalize osdMutex
Avoids split allocation.
Eliminates special case free-list.

win32: eliminate pre-XP
rtems-score: eliminate non-fast
2023-12-04 11:04:51 +01:00
a66caa5985 move cross compilers away from AFS 2023-12-04 10:08:47 +01:00
4803aae904 re-enable alternative PowerPMAC archs 2023-12-01 16:52:41 +01:00
427be18e2e upgrade cross windows build to use mvsc 2019 on Linux archs that support it 2023-12-01 16:52:41 +01:00
fff690a449 skip Microsoft noise in rc 2023-12-01 16:52:41 +01:00
428b836500 switch to 64 bit raspbian cross compiler 2023-12-01 16:52:41 +01:00
6c74507b11 all our current host OS can build nilrt7-armv7a 2023-12-01 16:52:40 +01:00
122ca4e1d3 change PROC to ASL0 2023-12-01 16:51:49 +01:00
Ralph Lange
ba1bf00ce7 Use split() for fetching last tag with darcs
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 2s
Base / Cross linux-aarch64 (push) Failing after 1s
Base / Cross linux-arm gnueabi (push) Failing after 2s
Base / Cross linux-arm gnueabihf (push) Failing after 1s
Base / CentOS-7 (push) Failing after 2s
Base / Fedora-33 (push) Failing after 1s
Base / Fedora-latest (push) Failing after 2s
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-22 gcc-12 c++20 Werror (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 unsigned char (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
(setting $/='' breaks reading multi-line into an array)
2023-12-01 16:50:24 +01:00
Érico Nogueira
68fea5c2ca Set ASL0 for mbboDirect Bx fields.
Since the record's VAL field is ASL0, it doesn't make sense to gate
writes into the Bx fields with ASL1.
2023-12-01 16:49:41 +01:00
Michael Davidsaver
3f03efe7fe Add ERROR to error messages 2023-12-01 16:49:30 +01:00
Michael Davidsaver
98dc97022a const-ify dbLink arrays
external code really should never be modifying pamaplinkType[]
2023-12-01 16:49:18 +01:00
Uchenna Ezeobi
5d01b637a7 Config: Fixed Hard coded LDFLAGS in MVME2500 2023-12-01 16:49:03 +01:00
Michael Davidsaver
69a184ee1d update submodules 2023-12-01 16:48:54 +01:00
Michael Davidsaver
aebacff3db release notes 2023-12-01 16:48:45 +01:00
Michael Davidsaver
27ad623d68 bi "Raw Soft Channel" use MASK
If set, apply MASK to value read into RVAL.
2023-12-01 16:48:06 +01:00
Michael Davidsaver
1b23701946 incorrect error check on GetStdHandle()
Likely inconsequential as GetConsoleMode() should
return 0 when given an invalid handle.
2023-12-01 16:47:45 +01:00
Michael Davidsaver
0502fe25e4 print ANSI escapes to stderr
unconditionally print ANSI some escapes (to colorize errors)
to the stderr stream.
2023-12-01 16:47:18 +01:00
Michael Davidsaver
77a37781af colorize more errlog messages 2023-12-01 16:38:54 +01:00
Jeremy Lorelli
ba21e655df Null check callback function in callbackRequest
Previously, calling callbackRequest(pcallback), where pcallback->callback
is NULL, would result in a crash on one of the callback threads.
2023-12-01 16:36:43 +01:00
Michael Davidsaver
2e727a0262 update ci-scripts 2023-12-01 16:36:35 +01:00
Michael Davidsaver
f4cb31d5d5 dbRecordField() add "did you mean..." hint for unknown field 2023-12-01 16:36:24 +01:00
Michael Davidsaver
ab4e687816 const-ify dbCopyEntry() and dbCopyEntryContents() 2023-12-01 16:36:12 +01:00
Michael Davidsaver
1d1926eaf3 avoid hang during concurrent db_cancel_event()
cf. fab8fd7102
2023-12-01 16:36:03 +01:00
Michael Davidsaver
d31ba6ade3 doc 2023-12-01 16:35:55 +01:00
609147dad0 gha: turn most warnings into errors in github build 2023-12-01 16:35:46 +01:00
Michael Davidsaver
5a5535aa5b iocsh: keep history file 2023-12-01 16:35:36 +01:00
JJL772
de61390049 Com: Make STATIC_ASSERT macro typedefs unique 2023-12-01 16:35:29 +01:00
Michael Davidsaver
304d8217d9 dbRecordsOnceOnly allow append only with "*"
with

> record(ai, "myrec") {}

dbRecordsOnceOnly!=0 currently disallows appending fields with either form:

> record("*", "myrec") {} # error
> record(ai, "myrec") {}  # error

Change the meaning such that dbRecordsOnceOnly!=0
allways allows appending when explicitly intended (rtype "*").

> record("*", "myrec") {} # allowed
> record(ai, "myrec") {}  # error

Also clearly label this parse error.
2023-12-01 16:35:18 +01:00
Jack Harper
2c95dc91e9 iocsh: add comment to cvtArg explaining default iocsharg behaviour 2023-12-01 16:34:35 +01:00
Michael Davidsaver
8cc15c6e68 remove unused local 2023-12-01 16:34:24 +01:00
AlexWells
680e1734a4 iocsh: Add underline separator between help outputs
Also tweaks the overall format of the message a bit.
Add tests for new help output format
2023-12-01 16:34:04 +01:00
4aea7de032 update modules/pvData 2023-12-01 16:33:42 +01:00
Michael Davidsaver
bddbc38e0b update ci-scripts 2023-12-01 16:28:58 +01:00
Jeremy Lorelli
67e669c5e5 libCom: Fix buggy pointer dereference in postfix() 2023-12-01 16:02:34 +01:00
Michael Davidsaver
e291ca0a03 Fix compile w/ vs2012 2023-12-01 15:04:24 +01:00
Emilio Perez
5b84a86ccd Allow adding error symbols after early initialization
This was acomplished by making errSymbolAdd add the error symbol directly
into the global hash table and removing errnumlist which is not needed
anymore.

Unit tests were added for checking the following cases:
- Adding a valid symbol and checking that it exists (fixed by this change)
- Getting an existing error symbol
- Getting a non existing error symbol
- Adding an invalid error symbol (fixed by this change)
- Adding an error symbol with a code that already
  exists (fixed by this change)

Therefore, issue #268 was fixed

error: statically allocate error symbol hash table

This will allow calling errSymbolAdd before errSymBld, therefore, a
function adding error symbols can now be run before iocInit or errlogInit

error: add a constant for the minimum module number

Make adding an identical error symbol not fail

A test case was also added which test that adding an error symbol
with same error code and message as one added before will not fail

Add locking to error symbol table

This protects the cases of:
- simultaneously adding and requesting of an error symbol
- simultaneously adding many error symbols

Update release notes regarding adding error symbols
2023-12-01 15:03:00 +01:00
Michael Davidsaver
cb6442da71 epicsThreadShow() zombies
Flag when the thread has returned, but the tracking
struct is still around.  eg. in need of joining.
2023-12-01 15:01:10 +01:00
Érico Nogueira
49b9573f3a libCom: detect support for backtrace() with __has_include.
This is necessary in order to build epics-base with musl libc, for
example, and any other C libraries which don't include this
functionality. In order to not regress builds with older compilers, we
still support the uclibc check. Furthermore, it has been checked that
uclibc-ng (the maintained version of uclibc) doesn't install the
<execinfo.h> header when the functionality is disabled [1] [2].

To avoid repetition, we don't define HAS_EXECINFO to 0 when it is not
available.

[1] https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/tree/Makefile.in?id=cdb07d2cd52af39feb425e6d36c02b30916b9f0a#n224
[2] https://cgit.uclibc-ng.org/cgi/cgit/uclibc-ng.git/tree/Makefile.in?id=cdb07d2cd52af39feb425e6d36c02b30916b9f0a#n277
2023-12-01 15:01:01 +01:00
Michael Davidsaver
42dfca2b54 dbEvent: handle multiple db_event_cancel()
Allow for multiple db_event_cancel() (concurrent or
self-cancel) prior to event_task wakeup.

In db_event_cancel(), immediate free() only if idle
(not queued or in progress).  Otherwise, defer free()
to event task.  Avoids need to immediately expunge
canceled event from queue.  Allow event task to
process canceled events as normal (except no user_sub)
until npend==0.
2023-12-01 15:00:51 +01:00
Michael Davidsaver
3fd79a21a2 privatize evSubscrip 2023-12-01 15:00:34 +01:00
Michael Davidsaver
12f311b780 dbEvent minor 2023-12-01 15:00:16 +01:00
Michael Davidsaver
8abc9f8d03 minor 2023-12-01 15:00:08 +01:00
Michael Davidsaver
ae6f01b8ee doc dbLock.h 2023-12-01 14:59:56 +01:00
1d3a2defa2 Merge 7.0 commit 'ca9c95' into PSI-7.0 2023-12-01 14:21:07 +01:00
43f6fd5060 install msi for all "Command" builds
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 2s
Base / Cross linux-aarch64 (push) Failing after 1s
Base / Cross linux-arm gnueabi (push) Failing after 2s
Base / Cross linux-arm gnueabihf (push) Failing after 1s
Base / CentOS-7 (push) Failing after 2s
Base / Fedora-33 (push) Failing after 1s
Base / Fedora-latest (push) Failing after 2s
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 unsigned char (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2023-10-03 16:50:39 +02:00
Michael Davidsaver
c8d596034a add missing include 2023-09-01 16:11:50 +02:00
Emilio Perez
1d3459982c Update release notes regarding adding error symbols 2023-09-01 16:11:50 +02:00
Emilio Perez
9934242ccf Add locking to error symbol table
This protects the cases of:
- simultaneously adding and requesting of an error symbol
- simultaneously adding many error symbols

x
2023-09-01 16:11:50 +02:00
Emilio Perez
e6dab90bf4 Make adding an identical error symbol not fail
A test case was also added which test that adding an error symbol
with same error code and message as one added before will not fail
2023-09-01 16:11:50 +02:00
Emilio Perez
c680b9bebd error: add a constant for the minimum module number 2023-09-01 16:11:50 +02:00
Emilio Perez
9555ca05b8 error: statically allocate error symbol hash table
This will allow calling errSymbolAdd before errSymBld, therefore, a
function adding error symbols can now be run before iocInit or errlogInit
2023-09-01 16:11:49 +02:00
Emilio Perez
0cd56fa40b Allow adding error symbols after early initialization
This was acomplished by making errSymbolAdd add the error symbol directly
into the global hash table and removing errnumlist which is not needed
anymore.

Unit tests were added for checking the following cases:
- Adding a valid symbol and checking that it exists (fixed by this change)
- Getting an existing error symbol
- Getting a non existing error symbol
- Adding an invalid error symbol (fixed by this change)
- Adding an error symbol with a code that already
  exists (fixed by this change)

Therefore, issue #268 was fixed
2023-09-01 16:11:49 +02:00
Michael Davidsaver
485ac85fa5 appveyor remove skip_commits: 2023-09-01 16:11:49 +02:00
1148931226 On Vxworks clone std* file handles because they are thread specific 2023-09-01 14:15:56 +02:00
73f80cced9 Merge branch '7.0' into PSI-7.0 2023-08-21 14:14:16 +02:00
152c72bab0 fix submodule pvData to use our fork 2023-08-14 15:42:10 +02:00
0f086126b7 fix escaped quotes in quoted strings
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 1s
Base / Cross linux-aarch64 (push) Failing after 2s
Base / Cross linux-arm gnueabi (push) Failing after 1s
Base / Cross linux-arm gnueabihf (push) Failing after 2s
Base / Fedora-33 (push) Failing after 2s
Base / CentOS-7 (push) Failing after 5s
Base / Fedora-latest (push) Failing after 1s
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 unsigned char (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2023-06-22 16:37:29 +02:00
5b058d7d27 Merge branch '7.0' into PSI-7.0 2023-06-22 16:36:32 +02:00
Xiaoqiang Wang
ccbe608c4a pvDataCPP with a different clang-cl workaround 2023-06-19 09:47:03 +02:00
Xiaoqiang Wang
c68d5a8dc3 direct include of CONFIG.msvcCommon 2023-05-26 08:33:10 +02:00
Xiaoqiang Wang
cfa5ad3195 rename LLVM_PREFIX/SUFFIX to MSVC_PREFIX/SUFFIX 2023-05-25 19:26:05 +02:00
Xiaoqiang Wang
d7a0edf121 direct include of CONFIG.msvcCommon 2023-05-25 19:18:36 +02:00
Xiaoqiang Wang
61fa360461 update ci-scripts module 2023-05-24 22:14:39 +02:00
Xiaoqiang Wang
01fc9f83a9 use windows-2022 to use MinGW 11
MinGW 8 on windows-2019 cannot compile pvData module
2023-05-24 21:27:53 +02:00
Xiaoqiang Wang
ccc730332a Revert "debug: only build clang windows"
This reverts commit b948c03675.
2023-05-24 16:45:08 +02:00
Xiaoqiang Wang
b948c03675 debug: only build clang windows 2023-05-24 13:19:55 +02:00
Xiaoqiang Wang
538a3d2f09 update ci-scripts module 2023-05-24 13:16:44 +02:00
Xiaoqiang Wang
3724420dc6 fail fast for testing purpose 2023-05-24 12:38:35 +02:00
Xiaoqiang Wang
6b1d30408f update ci-scripts module 2023-05-24 12:37:50 +02:00
Xiaoqiang Wang
b615232788 update ci-scripts module 2023-05-24 12:15:40 +02:00
Xiaoqiang Wang
763760c58b add clang windows build 2023-05-24 12:04:11 +02:00
Xiaoqiang Wang
f0d98b9b9a use forked .ci module with clang windows support 2023-05-24 12:03:46 +02:00
Xiaoqiang Wang
60239498a1 use forked pvData module with clang-cl fixes 2023-05-23 21:22:30 +02:00
Xiaoqiang Wang
166157dcbf allow clang windows as host arch 2023-05-23 18:23:17 +02:00
Xiaoqiang Wang
29da5d67e1 add win32-x86-clang and windows-x64-clang targets 2023-05-13 21:37:29 +02:00
Xiaoqiang Wang
8e8fb81062 explicit include SAL header to help clang-cl compiler 2023-05-13 21:34:55 +02:00
Xiaoqiang Wang
448bde1798 split out msvc common settings 2023-05-13 21:34:18 +02:00
28d33d43ec Merge branch 'fix_genVersionHeader' into PSI-7.0
Some checks failed
Check EditorConfig / editorconfig (push) Failing after 1s
Base / CentOS-7 (push) Failing after 2s
Base / Fedora-33 (push) Failing after 1s
Base / Fedora-latest (push) Failing after 2s
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 unsigned char (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2023-04-05 11:35:56 +02:00
b72fcff44d fix problem with commands returning multiple trailing newlines 2023-04-05 09:27:42 +02:00
d3dc2afd8d Merge branch '7.0' (after codeathon 2023) into PSI-7.0 2023-03-29 13:36:52 +02:00
e9237ef4e8 use toolset 12 (fix in pvData sharedVector.h was needed) and bump up used C++ standards
Some checks failed
Base / CentOS-7 (push) Failing after 2s
Base / Fedora-33 (push) Failing after 4s
Base / Fedora-latest (push) Failing after 5s
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Ub-20 gcc-9 unsigned char (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2023-03-29 10:23:13 +02:00
c578148e36 unused cross architectures disabled 2023-02-28 16:08:23 +01:00
92a461fbd9 use -fno-strict-aliasing only on those architectures which complain 2023-02-28 16:08:23 +01:00
d5988446c6 updated pcas module 2023-02-28 16:08:22 +01:00
26e1e94b90 modify tests to match our code modifications 2023-02-28 16:08:22 +01:00
64f67d036b fix epicsThreadSleepQuantum not to fail epicsTimeTest because of unrealistically high clock resolution 2023-02-28 16:08:22 +01:00
e33728362d Get back calcout record link fix
This reverts part of commit 55536a13db.
2023-02-28 16:08:21 +01:00
23511c4a53 restore VxWorks 5 compatibility 2023-02-15 17:01:11 +01:00
5db310813f Merge branch '7.0' into PSI-7.0 2023-02-15 16:54:36 +01:00
6ec0c3b844 rework RHEL cross compilation
Some checks failed
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-16 clang-9 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-16 gcc-4.8 (push) Has been cancelled
Base / Ub-16 gcc-4.9 (push) Has been cancelled
Base / Ub-20 gcc-8 (push) Has been cancelled
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / Ub-20 gcc-9 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2023-02-10 13:36:31 +01:00
8bad990471 fix the bugfix for gcc-toolset-11 2023-02-02 11:48:21 +01:00
cb4cb6f4d7 build host stuff only for SLx/RHELx 2023-02-02 11:48:21 +01:00
33ecfcb6bc drop support for SL6 and 32 bit Windows 2023-01-18 16:42:22 +01:00
565ccae0b5 fix -g flag usage -- modifying OPT_CFLAGS_YES in CONFIG_SITE.* does not work
Some checks failed
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-16 clang-9 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-16 gcc-4.9 (push) Has been cancelled
Base / Ub-20 gcc-8 (push) Has been cancelled
Base / Ub-20 gcc-9 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-16 gcc-4.8 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2022-11-15 14:32:30 +01:00
ddfa24e15d bugfix for long sub function names 2022-11-04 16:08:25 +01:00
6dc7224cea fix problem with fragmented log messages 2022-09-12 17:43:16 +02:00
25a2258663 make NTP driver more robust against strange time stamps 2022-09-12 17:31:25 +02:00
Michael Davidsaver
13bd6bac5f Com: rewrite errlog
Switch to double buffering to allow errlogThread
to unlock while printing.

Conflicts:
	modules/libcom/src/error/errlog.c
2022-08-03 09:18:20 +02:00
39de02f350 fix comments 2022-08-02 17:41:10 +02:00
efd9e7908a allow arrays of strings in CHAR wf and lsi (concatenating) 2022-07-28 12:22:06 +02:00
96fe9306c7 fix JSON errors when reading empty array links 2022-07-27 09:58:09 +02:00
0caa5a045c fix for commit 5e076e6 2022-07-27 09:55:24 +02:00
4ffa5c8c88 fix problem with not working epicsSocketAccept() on moxa42-armv6l
Some checks failed
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-16 clang-9 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-16 gcc-4.8 (push) Has been cancelled
Base / Ub-16 gcc-4.9 (push) Has been cancelled
Base / Ub-20 gcc-8 (push) Has been cancelled
Base / Ub-20 gcc-9 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2022-06-29 16:03:19 +02:00
5e076e6d30 improve error message 2022-06-29 11:43:56 +02:00
dcb2c5affd fix CA event queuing problem with arrays under high network load 2022-06-28 09:08:57 +02:00
3ac3906fea unify cross windows builds with separate wine dirs per host arch (and thus wine version) 2022-06-21 16:27:33 +02:00
2d597a68b9 enable cross compilation for RHEL7-x86_64 and nilrt7-armv7a on RHEL8 (using mounted SYSROOT at /opt/RHEL7) 2022-06-21 16:27:24 +02:00
1bfe3dec3c use gcc 11 from gcc-toolset for RHEL8 2022-06-10 09:02:20 +02:00
ea0b05c32b use highest supported C++ standard for RHEL8
Some checks failed
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-16 clang-9 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-20 gcc-9 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-16 gcc-4.8 (push) Has been cancelled
Base / Ub-16 gcc-4.9 (push) Has been cancelled
Base / Ub-20 gcc-8 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2022-06-07 11:17:55 +02:00
9c64469f1e re-order cross archs between RHEL7 and RHEL8 hosts 2022-06-07 11:09:03 +02:00
2a4ebdf347 can have only one RTEMS version
Some checks failed
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-16 clang-9 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-16 gcc-4.8 (push) Has been cancelled
Base / Ub-16 gcc-4.9 (push) Has been cancelled
Base / Ub-20 gcc-8 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2022-05-19 09:39:01 +02:00
d5756faef4 restore compatibility with EPICS 3.13 clients 2022-05-19 09:07:31 +02:00
77fb5cf425 use newest C++ standard for yocto 4.0 2022-05-18 16:49:19 +02:00
46141e98d5 add RTEMS 4.9 and 5.1 support 2022-05-05 14:45:08 +02:00
5ac51f86ad disable not needed VxWorks archs 2022-05-05 14:08:36 +02:00
0af4fce080 removed not needed PATH_FILTER 2022-05-05 14:07:14 +02:00
4fb42763a2 moved most cross archs to common linux-x86_64 host arch 2022-05-05 14:06:38 +02:00
211d29c0e1 new yocto 4.0 arch for Zynq 2022-05-05 14:05:19 +02:00
da7bca9c16 some vxWorks 5 hacks 2022-05-05 14:02:31 +02:00
ec346a7b8d update to newer SDK 2022-05-05 14:01:36 +02:00
81d1082bfd no license manager access with this? 2022-05-05 14:01:07 +02:00
3f8cee7d73 fix for debug output formats
Some checks failed
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
Base / Ub-16 clang-9 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-16 gcc-4.8 (push) Has been cancelled
Base / Ub-16 gcc-4.9 (push) Has been cancelled
Base / Ub-20 gcc-8 (push) Has been cancelled
Base / Ub-20 gcc-9 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
2021-12-14 16:07:58 +01:00
aae9d68818 re-enable hex numbers in hardware links
Some checks failed
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-16 gcc-4.8 (push) Has been cancelled
Base / Ub-16 gcc-4.9 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
Base / Ub-20 gcc-8 (push) Has been cancelled
Base / Ub-20 gcc-9 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-16 clang-9 (push) Has been cancelled
2021-11-10 09:38:36 +01:00
f43d21eab3 always have git hash in version string
Some checks failed
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-16 clang-9 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 beatnik (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 pc686 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 xilinx_zynq_a9_qemu (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-5.1 uC5282 (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-16 gcc-4.9 (push) Has been cancelled
Base / Ub-16 gcc-4.8 (push) Has been cancelled
Base / Ub-20 gcc-8 (push) Has been cancelled
Base / Ub-20 gcc-9 (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2021-09-02 14:32:10 +02:00
9e1e4ddd91 allow any char in PV field names 2021-08-26 15:39:56 +02:00
8d1cd837d1 new cross architectures 2021-08-23 16:13:08 +02:00
dc277d1d99 fix writing to mbboDirect.VAL 2021-08-23 15:54:04 +02:00
Kay Kasemir
b7ad6d906a int64in: Fix monitor delta test
Only the lower 32 bit used to be compared.
https://bugs.launchpad.net/epics-base/+bug/1938459
2021-08-23 15:51:14 +02:00
Andrew Johnson
3cfc16f5ff Add newlines to a couple iocsh usage strings 2021-08-23 15:50:09 +02:00
JJL772
05bf567f3b Fix segfault in dbtpn when value parameter is nullptr
Running 'dbtpn Record' in iocsh would result in a segfault.
2021-08-23 15:49:50 +02:00
JJL772
ff1b9d4250 Fix potential memory leak on error
In osdThread.c for POSIX if pthread_create_key fails
In iocLogServer.c if fdmgr_init returns NULL
In dbBkpt.c if semaphore creation fails while adding a bp to a lockset
In devSiSoftCallback.c if linked record is not found
2021-08-23 15:49:40 +02:00
Andrew Johnson
9b9de013db recGbl: Update to using dbGetTimeStampTag() 2021-08-23 15:49:22 +02:00
Andrew Johnson
c546f6da23 waveform: Add back lost PACT = TRUE
Fixes GitHub Issue #187
2021-08-23 15:49:09 +02:00
8a08974f15 build for V64 too in order to have more versions tested 2021-08-23 15:41:04 +02:00
04d23354b9 config files closer to upstream 2021-08-19 11:27:30 +02:00
ddad6e7b6f backward compatible incomplete ? CALC expression 2021-08-19 11:24:25 +02:00
9a17604e70 put V64-ppc604 file back 2021-07-19 15:40:35 +02:00
c7e3359f08 fix compiler error unable to find a register to spill in class 'FLOAT_REGS' 2021-07-19 15:39:29 +02:00
16d068353a minimize differences to upstream version 2021-07-19 15:38:51 +02:00
f7b4c91163 extend PATH to find wine 2021-07-19 15:38:00 +02:00
55536a13db revert several files back to upstream version 2021-07-19 15:36:29 +02:00
66abb7116f Merge tag 'R7.0.6' into PSI-7.0
ANJ: Tagged for release

Conflicts:
	.ci
	configure/os/CONFIG_SITE.linux-x86.Common
	modules/libcom/src/misc/epicsString.h
	src/tools/makeTestfile.pl
2021-07-08 19:00:08 +02:00
bb89d5d24e add EPICS_MUTEX_USE_PRIORITY_INHERITANCE environment variable to make inversion-safe mutiexes configurable
Some checks failed
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / Ub-16 clang-9 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-16 gcc-4.8 (push) Has been cancelled
Base / Ub-16 gcc-4.9 (push) Has been cancelled
Base / Ub-20 gcc-8 (push) Has been cancelled
Base / Ub-20 gcc-9 (push) Has been cancelled
2021-06-10 15:24:59 +02:00
ad7a2ddf65 remove buggy vxWorks implementation of epicsAtomicCmpAndSwap* using vxCas 2021-06-10 15:23:09 +02:00
19031a7d11 make callbackRequest safer in case initialization fails 2021-06-10 15:20:54 +02:00
1c9887bd45 move -whole-archive flags to central config 2021-06-10 15:20:19 +02:00
209b979e56 fix warning missing no newline at end of file 2021-06-02 14:52:04 +02:00
34ce5c1d21 abort thread when mutex unlock fails due to programming error
Some checks failed
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-16 gcc-4.8 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-16 clang-9 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-16 gcc-4.9 (push) Has been cancelled
Base / Ub-20 gcc-8 (push) Has been cancelled
Base / Ub-20 gcc-9 (push) Has been cancelled
Base / Win2019 MSC-19, debug (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
2021-05-05 10:15:15 +02:00
605aff2461 tests for epicsStrnGlobMatch added 2021-05-03 14:39:24 +02:00
ba1c40df7c comment added 2021-05-03 14:39:24 +02:00
e25dafa9ca doxygen comments added 2021-05-03 14:39:23 +02:00
ce78836328 use SIZE_MAX 2021-05-03 14:39:23 +02:00
8225c313b9 Support glob pattern for epicsEnvShow
Conflicts:
	documentation/RELEASE_NOTES.md
2021-05-03 14:39:15 +02:00
be78b33570 code streamlined 2021-05-03 14:35:32 +02:00
9926fe3036 allow glob pattern in var command
Conflicts:
	documentation/RELEASE_NOTES.md
2021-05-03 14:35:24 +02:00
Andrew Johnson
718390cfba Add tests confirming that input value fields still writable
Having a constant INP link doesn't break that.
2021-05-03 14:31:26 +02:00
Andrew Johnson
6f864fc10e Release Notes entry with link to bug. 2021-05-03 14:31:26 +02:00
Andrew Johnson
4b6cb2bcdd Fixes for Async Soft Channel input device support
The add_record() routine wasn't properly checking for unsupported
link types, resulting in an assertion failure on IOC exit if the
record was left in a "bad" state.
2021-05-03 14:31:26 +02:00
Andrew Johnson
c866609f24 Add regression tests for Async Soft Channel input links
Caused by the previous fix, but this is repairable.
2021-05-03 14:31:25 +02:00
Andrew Johnson
ee193edd42 Fix for regression in link initialization
Fixes lp: #1824277

Shows a problem with Async Soft Channel input support though.
2021-05-03 14:31:25 +02:00
Andrew Johnson
40c55d65b3 Add regression test for lp: #1824277 2021-05-03 14:31:24 +02:00
Andrew Johnson
a83b3a5331 Added "Win2019 MSC-19, debug" build to GHA
... as suggested by Freddie.
2021-05-03 14:26:29 +02:00
Michael Davidsaver
65098a4120 update .ci
Conflicts:
	.ci
2021-05-03 14:15:47 +02:00
Andrew Johnson
0650fba936 Disable netget test on CI systems 2021-05-03 14:13:22 +02:00
Andrew Johnson
16244acd3c Increase default timeout, improve notes 2021-05-03 14:13:21 +02:00
Andrew Johnson
fe52b0aa1a Release notes describing test timeouts 2021-05-03 14:13:21 +02:00
Andrew Johnson
2af0fe894e Correct comments in makeTestfile, add "export" 2021-05-03 14:13:20 +02:00
Andrew Johnson
387481799b Turn off debug in netget.plt 2021-05-03 14:13:20 +02:00
Andrew Johnson
d606155f17 Make BAIL_OUT display what was thrown 2021-05-03 14:13:19 +02:00
Andrew Johnson
c4d639e72a Kill CA & PVA clients properly if they time out
Uses Win32::Process or fork() to run caget/pvget.

The system_timeout() and qx_timeout() utilities added here
should be extracted into a separate EPICS::Timeouts module.
2021-05-03 14:13:19 +02:00
Andrew Johnson
19d10b3161 netget: watchdog() now returns a result
Currently this can only be a scaler value.
On timeout, calls the fail function and returns its result instead.
2021-05-03 14:13:18 +02:00
Andrew Johnson
220e2f9b12 Generate comments on how to adjust the timeout 2021-05-03 14:13:18 +02:00
Andrew Johnson
3661874c92 Replace Win32::Job with Win32::Process
GitHub Actions builders won't let us use Win32::Job
2021-05-03 14:13:17 +02:00
Andrew Johnson
a9a3ce535c Timeouts for running unit test programs
The generated .t file now kills the test program if it hasn't
completed within a defined interval, 5 minutes by default.
Separate implementations for Windows and Unix hosts.
2021-05-03 14:13:17 +02:00
Andrew Johnson
6a81b2c6a0 CI: Allow up to 5 minutes for make test-results 2021-05-03 14:13:16 +02:00
Andrew Johnson
139fac2928 Update CI test configurations
- Limit test-results step to 1 min in case a test hangs without
  generating a tapfile, as `make test-results` may re-run it.
- Limit Appveyor tests to 20 mins.
- Always run `make test-results` on GHA.
2021-05-03 14:13:16 +02:00
dcc6a36bf7 Merge commit '235f8ed2fb85270a1b9edddbff6a1c5b10f484b9' into PSI-7.0
Conflicts:
	.ci
2021-05-03 14:02:42 +02:00
3b7fd004b8 fix SKIP_BUILDS when INSTALL_LOCATION is not used 2021-04-28 15:39:41 +02:00
2796764905 cross build for RHEL7 on RHEL8 does not work yet 2021-04-28 15:35:55 +02:00
4c27619ee9 run tests on cross archs where possible 2021-04-28 15:35:00 +02:00
a40737c06b Add RHEL8 support
Some checks failed
Base / Ub-20 clang-10 C++11 (push) Has been cancelled
Base / MacOS clang-12 (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW (push) Has been cancelled
Base / Ub-16 clang-9 (push) Has been cancelled
Base / Ub-20 clang-10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.10 (push) Has been cancelled
Base / Ub-20 gcc-9 + RT-4.9 (push) Has been cancelled
Base / Win2019 mingw (push) Has been cancelled
Base / Ub-20 gcc-9 C++11, static (push) Has been cancelled
Base / Ub-20 gcc-9 + MinGW, static (push) Has been cancelled
Base / Ub-16 gcc-4.8 (push) Has been cancelled
Base / Ub-16 gcc-4.9 (push) Has been cancelled
Base / Ub-20 gcc-8 (push) Has been cancelled
Base / Ub-20 gcc-9 (push) Has been cancelled
Base / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2021-04-07 13:54:19 +02:00
34aebf7eea get rid of explicit templates for VxWorks 2021-04-07 13:53:17 +02:00
da350d0d54 use latest versions 2021-04-07 13:48:40 +02:00
243807cbe5 updated submodules 2021-03-26 17:07:27 +01:00
b3c18ebc4e use only 3 version digits for INSTALL_LOCATION 2021-03-24 14:51:34 +01:00
f25f067e9c Merge branch '7.0' into PSI-7.0
Conflicts:
	modules/database/test/std/link/Makefile
	modules/libcom/src/osi/os/posix/osdMutex.c
	modules/libcom/src/osi/os/vxWorks/osdThread.h
2021-03-24 14:45:02 +01:00
74d269304c simplified SL6-x86 config 2021-03-24 14:29:04 +01:00
c949cb5c8c new license server name needed for cross compiler 2021-03-05 14:20:53 +01:00
2495919611 (re-)enable 32 bit SL6 cross build 2021-03-03 15:53:02 +01:00
7ed4f6c704 we don't build 32 bit RHEL7-x86 2021-03-03 15:47:33 +01:00
eb828f3807 use C++11 whereever possible 2021-03-03 15:39:02 +01:00
a98708302b drop SL5 support 2021-03-03 14:48:15 +01:00
0dae3e206f fix for vxWorks 6.9.0 2021-03-02 17:28:55 +01:00
505e6f45c1 fix for older vxWorks installations 2021-03-02 17:28:13 +01:00
424de7d9c4 fix for old posix implementations 2021-03-02 17:27:43 +01:00
1a0de528e1 Merge tag 'R7.0.5' into PSI-7.0
ANJ: Tagged for release

Conflicts:
	configure/os/CONFIG_SITE.Common.linuxCommon
2021-03-02 09:18:43 +01:00
d795dd76a6 bugfix for older compilers: have all declarations before instructions 2020-11-16 17:58:01 +01:00
Andrew Johnson
45924d28e0 Add -v (verbose) flag to softIoc
Only display the startup steps taken if -v was given.
Show each step *before* running it, so error messages follow it.
2020-11-16 17:44:51 +01:00
Andrew Johnson
b1d0a0d036 Build: Do clean before uninstall actions (if requested) 2020-11-16 17:44:21 +01:00
Andrew Johnson
45e9cf9a94 Warn about NULL dbevEventUserFreeList 2020-11-16 17:44:01 +01:00
Andrew Johnson
a8dcff2f0d Merge fix-wrong-order-phas fixes from 3.15 branch 2020-11-16 17:41:08 +01:00
53a7d25923 allow constant links with numeric 1 element arrays like [42] 2020-11-16 17:34:20 +01:00
Ralph Lange
c701e7e98e Redo d3d40689 that was lost in upmerging 2020-11-16 17:33:25 +01:00
Michael Davidsaver
bf8e097756 compat IPPORT_USERRESERVED
musl libc doesn't define IPPORT_USERRESERVED
2020-11-16 17:32:29 +01:00
Andrew Johnson
837a2bbdde const init a char array from a string value
Conflicts:
	documentation/RELEASE_NOTES.md
2020-11-16 17:31:08 +01:00
Andrew Johnson
6fb361a965 Fix Cygwin TCP_NODELAY issue from Paul Chu & Freddie
Conflicts:
	documentation/RELEASE_NOTES.md
2020-11-16 17:27:56 +01:00
1db2cba81d Merge commit '10d472202dc2bf1fa5c569d2a14d460e95030564' into PSI-7.0
This is before PVA is modified
2020-11-16 17:06:22 +01:00
ce43a67cbd re-add removed .ci submodule 2020-11-13 10:07:34 +01:00
7ac8f056ed added missing header for close() in VxWorks 6.3 2020-11-12 11:21:26 +01:00
d157e96aac remove compiler warning 2020-11-12 10:59:54 +01:00
1d1e3e9527 calc backward compatibility: allow incomplete conditional 2020-11-12 10:54:11 +01:00
48d37e6b45 drop support for 32 bit SL6 2020-07-06 14:02:04 +02:00
5d03f20831 build for VxWorks 6.9 2020-07-06 14:00:15 +02:00
9e72edb544 fix comment and linker flag 2020-07-06 10:56:02 +02:00
4476c71f62 removed 'git describe' from EPICS version string, as it is now shown in Revision string 2020-06-26 11:17:51 +02:00
e9471b3072 Merge branch '7.0' of https://git.launchpad.net/epics-base into PSI-7.0 2020-06-24 18:01:47 +02:00
4082cb27c3 new architecture nilrt7-armv7a (NI Linux Real Time) for ESI 2020-06-03 10:47:14 +02:00
88cdffddb6 Merge branch '7.0' release 7.4.0.1 into PSI-7.0
Conflicts:
	.gitmodules
	modules/database/src/ioc/db/Makefile
	modules/libcom/test/epicsAtomicTest.cpp
	modules/pvAccess
	modules/pvData
	modules/pvDatabase
	modules/pva2pva
2020-06-03 10:46:07 +02:00
b27d1416b5 install location with patch level 2020-04-07 15:38:05 +02:00
ab97b5fe54 Bring back VxWorks 5 compatibility 2020-04-07 15:37:32 +02:00
bbaa207603 Merge remote-tracking branch 'remotes/xiaoqiang/wine_msvc' into PSI-7.0 2020-04-06 14:00:56 +02:00
Xiaoqiang Wang
605937bbac use the msvc from a new location 2020-04-06 11:05:04 +02:00
Xiaoqiang Wang
594fcb9a0d CXXFLAGS from CONFIG_win32-x86.Common 2020-04-03 15:10:46 +02:00
Xiaoqiang Wang
e033c0cfb2 use MSVC via WINE to compile for windows 2020-04-01 14:44:38 +02:00
Xiaoqiang Wang
53ebbab941 use MSVC_DIR to pick up MSVC toolchains 2020-04-01 14:42:18 +02:00
86adc529ef Merge remote-tracking branch 'origin' into PSI-7.0
Conflicts:
	configure/os/CONFIG_SITE.Common.linuxCommon
	modules/libcom/src/log/iocLog.c
	modules/libcom/src/log/logClient.c
	modules/pvAccess
	modules/pvData
	modules/pvDatabase
2020-02-06 17:28:40 +01:00
3a774d37f8 call shell to get EPICS_SITE_VERSION only when compiling EPICS base 2019-09-20 09:02:35 +02:00
5f6b1e2b16 (Re-)connect only when there is something to send. This avoids constant useless disconnect/connect cycles if the server (or firewall) keeps closing the connection. 2019-09-04 10:14:05 +02:00
584caf54b2 don't use space in version string 2019-09-03 09:17:38 +02:00
d602c1cdcb detect when server closes connection. can only be done reliably with recv, not with send 2019-09-02 17:47:43 +02:00
12ce14b6e5 no need to delay startup only because log server is currently not available 2019-09-02 17:47:43 +02:00
e02709b3a4 send pending log messages directly after connecting 2019-09-02 17:47:43 +02:00
b19709039d avoid needless memmove calls 2019-09-02 17:47:42 +02:00
3c4ffbf267 elimitate duplicate code in logClient 2019-09-02 17:47:42 +02:00
4942da0c88 do not discard unsent messages when log server has closed connection, instead try to send them after reconnect 2019-09-02 17:47:42 +02:00
5f547257ac speed up logRestart thread termination at exit 2019-09-02 17:47:42 +02:00
1b99366887 don't send errlog on all logClients 2019-09-02 17:47:42 +02:00
871af36ac5 move -fno-strict-aliasing flag to central place for all Linux version 2019-09-02 16:44:53 +02:00
0ad6d2aec9 typo in comment 2019-09-02 13:53:21 +02:00
8837d2f275 use perl instead of date in EPICS_SITE_VERSION because of Windows 2019-09-02 10:49:44 +02:00
09a17127a9 make xxxTestHarness TESTPRODs instead of PRODs 2019-09-02 10:47:43 +02:00
3699c5bc4c fix strict-aliasing warnings 2019-08-26 15:50:07 +02:00
157b0867fa removed unused vxWorks version defaults 2019-08-14 14:06:05 +02:00
56529964f3 always use -g for non-vxWorks gnu compiler 2019-08-14 13:55:07 +02:00
c28e240fce clear whitespace 2019-08-14 11:39:30 +02:00
b04b2dab22 fix astac crash 2019-08-13 15:13:54 +02:00
8edcd7b07f use READLINE as default for all Linux systems 2019-08-09 16:21:08 +02:00
ca78451122 move PSI specifics out to CONFIG_SITE. files 2019-08-09 13:33:41 +02:00
4cc44e3dce cleanup spaces 2019-08-09 13:32:49 +02:00
e81d3a1d7d remove strict-aliasing warnings in RHEL7 2019-08-09 11:34:50 +02:00
53dd61b80a merged with R7.0.3 2019-08-09 11:31:43 +02:00
5b754d320f fix posix epicsThreadSleepQuantum() implementation not to return 0.01 on Linux 2019-07-24 14:17:25 +02:00
2be2658cfc added modules/pcas 2019-07-22 17:12:22 +02:00
2b157096e6 merge branch '7.0' into 'PSI-7.0' 2019-07-22 15:44:08 +02:00
71eaddfd84 Merge branch 'refs/heads/PSI-7.0.1' into PSI-7.0 2019-07-22 15:36:33 +02:00
5589deb3ad make sure softIoc for vxWorks contains all functions 2019-07-22 15:17:18 +02:00
0bb80e373b add simple calculations to macros 2019-05-10 14:44:17 +02:00
4acdd83984 also build pcas 2019-05-10 11:13:23 +02:00
d12d38f970 re-enable -fno-strict-aliasing for vxWorks 2019-05-10 11:08:48 +02:00
74d9749255 fix install location 2019-05-10 11:07:50 +02:00
3276ada78a build for DeltaTau with ELDK-5.3 for newer C++ compiler 2019-05-08 17:32:50 +02:00
de378eec34 also build pcas 2019-04-03 15:14:34 +02:00
dbb2d875fb undo commit 2206934 which introduces a MKDIR rule that conflicts with driver/makefile 2019-04-03 15:13:00 +02:00
c7f966a1f5 fix install location 2019-04-03 15:10:28 +02:00
7889dda6f8 merged with upstream 2019-02-20 10:51:02 +01:00
a2ccf3b631 add raspberryPi and skip unused vxWorks archs 2018-10-31 15:23:05 +01:00
57db34b303 Merge branch 'FixShellCommands' into PSI-7.0 2018-10-24 09:25:44 +02:00
4f790758af no PVA for mvl40-xscale_be 2018-10-23 10:01:13 +02:00
ce9dfc6bb4 need some .o files, but there aren't many any more 2018-10-18 16:20:45 +02:00
4f40ad1927 build for mvl40-xscale_be (without PVA)configure/os/CONFIG.Common.mvl40-xscale_be 2018-10-18 16:20:13 +02:00
a42a4010d6 skip building with clang on old SL6 to avoid problems with cross build from RHEL7 2018-10-11 13:20:59 +02:00
a2aa17fafc some drivers complain about strict-aliasing 2018-10-11 08:36:35 +02:00
5bf2784db2 add -fno-strict-aliasing for those archs which complain about anyscalar.h 2018-10-05 10:43:08 +02:00
7a4e7b7600 add tar and copysrc make rules 2018-10-03 17:13:13 +02:00
70aa23513f use -isystem option to find correct headers for cross compiling for old Linux host versions 2018-10-03 16:47:57 +02:00
71ded2f25f install dbCaPvt.h needed by devIocStats/ioccar 2018-10-03 16:43:32 +02:00
11103351b2 add build year-month to version string 2018-10-03 16:38:53 +02:00
146a413977 add -isystem to avoid system headers in .d files (does not work for vxWorks 5) 2018-10-03 13:48:09 +02:00
4e44550f62 Merge branch 'FixShellCommands' into PSI-7.0 2018-09-28 11:41:52 +02:00
9952470486 Merge branch 'FixShellCommands' into PSI-7.0 2018-09-27 13:58:23 +02:00
02d30dedbc install server.h for misc module 2018-09-26 16:10:30 +02:00
5ed0fe52a0 Merge branch '7.0' into PSI-7.0 2018-09-26 11:45:19 +02:00
42b1f774da add PSI configuration 2018-09-25 11:13:08 +02:00
7738b68320 fix missing template instances for old vxWorks (uses -fno-implicit-templates) 2018-09-24 18:00:53 +02:00
1199fabe90 Fix strange compiler errors with gcc 2.96:
using <namespace::function>; seems not to work but
using namespace <namespace>; works
Also 'add' only works with explicit namespace. Why?
2018-09-21 16:21:13 +02:00
1aefc5f2f0 re-enable building vxWorks 5 2018-09-21 16:20:17 +02:00
6f666c6c22 Add mechanism to skip modules for selected architectures 2018-09-21 15:50:06 +02:00
280 changed files with 11126 additions and 5661 deletions

View File

@@ -6,3 +6,7 @@ root = true
# as some compilers complain about files not ending in newline
[*]
insert_final_newline = true
# Part of readline test that needs file without final newline
[modules/libcom/test/multiline-input.txt]
insert_final_newline = false

View File

@@ -153,27 +153,27 @@ jobs:
configuration: default
name: "MacOS clang"
- os: windows-2019
cmp: vs2019
- os: windows-2022
cmp: vs2022
configuration: debug
name: "Win2019 MSC-19"
name: "Win-22 MSC-22"
extra: "CMD_CXXFLAGS=-analysis"
- os: windows-2019
cmp: vs2019
- os: windows-2022
cmp: vs2022
configuration: static-debug
name: "Win2019 MSC-19, static"
name: "Win-22 MSC-22, static"
extra: "CMD_CXXFLAGS=-analysis"
- os: windows-2019
cmp: vs2019
- os: windows-2022
cmp: vs2022
configuration: debug
name: "Win2019 MSC-19, debug"
name: "Win-22 MSC-22, debug"
- os: windows-2019
- os: windows-2022
cmp: gcc
configuration: default
name: "Win2019 mingw"
name: "Win-22 mingw"
# Cross builds
@@ -322,7 +322,7 @@ jobs:
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
libevent-devel sudo re2c perl-version
[ -e /usr/bin/python ] || ln -sf /usr/bin/python3 /usr/bin/python
# fake out cue.py

4
.gitignore vendored
View File

@@ -19,3 +19,7 @@ O.*/
.*.swp
.DS_Store
.iocsh_history
RPMS
SRPMS
BUILDROOT
*.rpm

6
.gitmodules vendored
View File

@@ -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 = ./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

View File

@@ -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
View 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))

View File

@@ -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.

View File

@@ -71,7 +71,7 @@ EPICS_TS_NTP_INET=
# Number of lines of command history to keep.
# IOCSH_HISTEDIT_DISABLE
# Prevents use of readline or equivalent if defined.
IOCSH_PS1="epics> "
IOCSH_PS1=ANSI_GREEN("epics> ")
IOCSH_HISTSIZE=50
IOCSH_HISTEDIT_DISABLE=

View File

@@ -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))
@@ -562,11 +582,11 @@ $(INSTALL_DOC)/%: $(COMMON_DIR)/%
$(INSTALL_DOC)/%: %
$(ECHO) "Installing doc $@"
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(INSTALL_DOC)
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(@D)
$(INSTALL_DOC)/%: ../%
$(ECHO) "Installing doc $@"
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(INSTALL_DOC)
@$(INSTALL) -d -m $(INSTALL_PERMISSIONS) $< $(@D)
$(INSTALL_HTML)/$(HTMLS_DIR)/%: $(COMMON_DIR)/%
$(ECHO) "Installing generated html $@"

View File

@@ -41,7 +41,7 @@ RELEASE.host: $(RELEASE_LOCAL)
$(RELEASE_LOCAL): Makefile $(CONFIG)/CONFIG_SITE \
$(wildcard $(CONFIG)/CONFIG_SITE.local)
$(ECHO) Creating $@ with
$(ECHO) "Creating $@ with"
$(ECHO) " $(PARENT_MODULE) = $(INSTALL_ABSOLUTE)"
@echo $(PARENT_MODULE) = $(INSTALL_ABSOLUTE)> $@

View 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

View File

@@ -0,0 +1,3 @@
include $(CONFIG)/os/CONFIG.Common.linux-clang
BUILD_CLASS = HOST

View 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)),)
CPPFLAGS += $(TOOLSET_DIR:%=-B$(SYSROOT)%/bin)
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

View File

@@ -0,0 +1,5 @@
include $(CONFIG)/os/CONFIG.Common.linux-clang
BUILD_CLASS = HOST
STD_CXXFLAGS = -std=c++2a

View 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)),)
CPPFLAGS += $(TOOLSET_DIR:%=-B$(SYSROOT)%/bin)
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

View File

@@ -0,0 +1,5 @@
include $(CONFIG)/os/CONFIG.Common.linux-clang
BUILD_CLASS = HOST
STD_CXXFLAGS = -std=c++2a

View File

@@ -165,7 +165,8 @@ MOD_SYS_LDFLAGS += $(CPU_CFLAGS) -Wl,-r -nostdlib
GESYS_LIBS += -lgcc
GESYS_LIBS += -lc -lm -lrtemscpu -lrtemsbsp -lrtems++
GESYS_LIBS += -lcexp -ltecla_r -lspencer_regexp -lpmelf -lpmbfd
GESYS_LIBS += -lnfs -ltelnetd -lrtems-gdb-stub
GESYS_LIBS += -lnfs -ltelnetd -lrtems-gdb-stub -lbsd -ltftpfs -lz
GESYS_LIBS += -lnetworking
# While not part of the Generic Image it provides symbols which
# would conflict.

View File

@@ -0,0 +1,2 @@
RTEMS_VERSION = 4.9
include $(CONFIG)/os/CONFIG.Common.RTEMS-pc386

View File

@@ -0,0 +1,2 @@
RTEMS_VERSION = 5
include $(CONFIG)/os/CONFIG.Common.RTEMS-pc686

View 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

View File

@@ -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

View File

@@ -0,0 +1,2 @@
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
VXWORKS_VERSION = 6.2

View 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

View 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

View 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

View File

@@ -0,0 +1,2 @@
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc603_long
VXWORKS_VERSION = 6.6

View File

@@ -0,0 +1,2 @@
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
VXWORKS_VERSION = 6.6

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View 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

View File

@@ -0,0 +1,5 @@
include $(CONFIG)/os/CONFIG.Common.linuxCommon
GNU = NO
CMPLR_CLASS = clang
CC = clang
CCC = clang++

View File

@@ -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))

View 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__

View 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

View 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

View 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)

View 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

View 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

View 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)

View 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

View File

@@ -0,0 +1,4 @@
include $(CONFIG)/os/CONFIG.win32-x86.win32-x86
PATH := /opt/wine-msvc-2017/bin/x86:$(PATH)
export WINEPREFIX = $(HOME)/.wine32-$(EPICS_HOST_ARCH)

View 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 WINE ?= wine64
export WINEPREFIX = $(HOME)/.wine-$(EPICS_HOST_ARCH)
export WINEDEBUG := err-all,warn-all,fixme-all$(WINEDEBUG:%=,%)
export WINEDLLOVERRIDES := mscoree,mshtml=$(WINEDLLOVERRIDES:%=,%)
export WINEPATH := $(WINEPATH:%=%;)$(abspath $(INSTALL_BIN))

View 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

View File

@@ -0,0 +1,2 @@
# Include common linux definitions
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86

View 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

View 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

View File

@@ -0,0 +1,28 @@
# 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
# Allow to run cross-tests which expect different lib versions
export LD_PRELOAD=$(SYSROOT)/lib64/libreadline.so

View File

@@ -0,0 +1,2 @@
# Include common linux definitions
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86

View File

@@ -0,0 +1 @@
include $(CONFIG)/os/CONFIG.linux-x86_64.win32-x86-mingw

View File

@@ -0,0 +1 @@
include $(CONFIG)/os/CONFIG.Linux.windows-x64

View File

@@ -0,0 +1 @@
include $(CONFIG)/os/CONFIG.linux-x86_64.windows-x64-mingw

View 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

View File

@@ -0,0 +1,21 @@
# 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)
# Allow to run cross-tests which expect different lib versions
export LD_PRELOAD=$(SYSROOT)/lib64/libreadline.so

View File

@@ -0,0 +1,25 @@
# 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
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
# Allow to run cross-tests which expect different lib versions
export LD_PRELOAD=$(SYSROOT)/lib64/libreadline.so

View File

@@ -0,0 +1,2 @@
# Include common linux definitions
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86

View File

@@ -0,0 +1 @@
include $(CONFIG)/os/CONFIG.linux-x86_64.win32-x86-mingw

View File

@@ -0,0 +1 @@
include $(CONFIG)/os/CONFIG.Linux.windows-x64

View File

@@ -0,0 +1 @@
include $(CONFIG)/os/CONFIG.linux-x86_64.windows-x64-mingw

View 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

View File

@@ -0,0 +1,3 @@
# Include common linux definitions
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
GNU_DIR=/usr

View 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

View File

@@ -0,0 +1,3 @@
# Include common linux definitions
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
GNU_DIR=/usr

View 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

View File

@@ -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))

View 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

View File

@@ -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

View File

@@ -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)

View File

@@ -0,0 +1,2 @@
# Debian 10
COMMANDLINE_LIBRARY=READLINE_NCURSES

View File

@@ -0,0 +1,2 @@
# Debian 10
COMMANDLINE_LIBRARY=READLINE

View File

@@ -0,0 +1,2 @@
# DeltaTau PowerPMAC with gcc
COMMANDLINE_LIBRARY=READLINE

View File

@@ -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)
CPPFLAGS += $(SYSROOT:%=--sysroot=%)
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)

View File

@@ -21,5 +21,12 @@ 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
softIoc_LDFLAGS += -whole-archive
softIocPVA_LDFLAGS += -whole-archive

View 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

View File

@@ -0,0 +1,9 @@
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.Common
# Improved error checking with clang
CROSS_COMPILER_TARGET_ARCHS += RHEL8-x86_64-clang
CROSS_COMPILER_RUNTEST_ARCHS += RHEL8-x86_64-clang
# Build for old RHEL7 64 bit
#CROSS_COMPILER_TARGET_ARCHS += RHEL7-x86_64
#CROSS_COMPILER_RUNTEST_ARCHS += RHEL7-x86_64

View File

@@ -0,0 +1 @@
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.win32-x86-mingw

View File

@@ -0,0 +1 @@
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.windows-x64-mingw

View File

@@ -0,0 +1,13 @@
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.Common
# Improved error checking with clang
CROSS_COMPILER_TARGET_ARCHS += RHEL9-x86_64-clang
CROSS_COMPILER_RUNTEST_ARCHS += RHEL9-x86_64-clang
# Build for old RHEL8 64 bit
CROSS_COMPILER_TARGET_ARCHS += RHEL8-x86_64
CROSS_COMPILER_RUNTEST_ARCHS += RHEL8-x86_64
# Build for even older RHEL7 64 bit
#CROSS_COMPILER_TARGET_ARCHS += RHEL7-x86_64
#CROSS_COMPILER_RUNTEST_ARCHS += RHEL7-x86_64

View File

@@ -0,0 +1 @@
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.win32-x86-mingw

View File

@@ -0,0 +1 @@
include $(CONFIG)/os/CONFIG_SITE.linux-x86_64.windows-x64-mingw

View 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

View File

@@ -6,24 +6,17 @@
# These settings are designed for users of Homebrew.
# Users of other third-party package managers are welcome to
# provide patches appropriate for their manager.
ifneq (,$(wildcard /opt/homebrew))
# Default location on aarch64
HOMEBREW_DIR = /opt/homebrew
else ifneq (,$(wildcard /usr/local/Homebrew))
# Default location on x86_64
HOMEBREW_DIR = /usr/local
else ifneq (,$(wildcard /opt/local/include/readline))
# MacPorts
READLINE_DIR = /opt/local
endif
HOMEBREW_DIR := $(shell brew --prefix 2>/dev/null)
INCLUDES += $(HOMEBREW_DIR:%=-I%/include)
LDFLAGS += $(HOMEBREW_DIR:%=-L%/lib)
# Look for Homebrew's readline
ifneq (,$(wildcard $(HOMEBREW_DIR)/opt/readline))
READLINE_DIR = $(HOMEBREW_DIR)/opt/readline
INCLUDES_READLINE += -I$(HOMEBREW_DIR)/opt/readline/include
LDFLAGS_READLINE += -L$(HOMEBREW_DIR)/opt/readline/lib
endif
# Use GNU readline if it's avaiilable
ifneq (,$(wildcard $(READLINE_DIR)/include/readline/readline.h))
INCLUDES_READLINE = -I$(READLINE_DIR)/include
LDFLAGS_READLINE = -L$(READLINE_DIR)/lib
endif
# Look for MacPorts
MACPORT_DIR := $(patsubst %/bin/port,%,$(shell which port))
INCLUDES += $(MACPORT_DIR:%=-I%/include)
LDFLAGS += $(MACPORT_DIR:%=-L%/lib)

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -6,3 +6,9 @@
# Inherit from the linux-x86 host architecture
include $(CONFIG)/os/CONFIG_SITE.linux-x86.win32-x86-mingw
MINGWLIBS ?= /usr/i686-w64-mingw32/sys-root/mingw/bin
export WINE ?= wine
export WINEPREFIX = $(HOME)/.wine32-$(EPICS_HOST_ARCH)
export WINEDEBUG := err-all,warn-all,fixme-all$(WINEDEBUG:%=,%)
export WINEDLLOVERRIDES := mscoree,mshtml=$(WINEDLLOVERRIDES:%=,%)
export WINEPATH := $(WINEPATH:%=%;)$(MINGWLIBS);$(abspath $(INSTALL_BIN))

View File

@@ -6,3 +6,9 @@
# Inherit from the linux-x86 host architecture
include $(CONFIG)/os/CONFIG_SITE.linux-x86.windows-x64-mingw
MINGWLIBS ?= /usr/x86_64-w64-mingw32/sys-root/mingw/bin
export WINE ?= wine64
export WINEPREFIX = $(HOME)/.wine-$(EPICS_HOST_ARCH)
export WINEDEBUG := err-all,warn-all,fixme-all$(WINEDEBUG:%=,%)
export WINEDLLOVERRIDES := mscoree,mshtml=$(WINEDLLOVERRIDES:%=,%)
export WINEPATH := $(WINEPATH:%=%;)$(MINGWLIBS);$(abspath $(INSTALL_BIN))

View File

@@ -1992,6 +1992,9 @@ PREDEFINED = __cplusplus \
LIBCA_API \
DBRECSTD_API \
EPICS_ALWAYS_INLINE \
EPICS_NORETURN \
EPICS_PRINTF_FMT(x)=x \
EPICS_PRINTF_STYLE(a,b)= \
epicsShareExtern \
epicsShareClass \
epicsShareFunc \

View File

@@ -11,124 +11,7 @@ EXPAND_ME += RTD_SRC
DOXYGEN ?= doxygen
libcom_HEADERS += adjustment
libcom_HEADERS += alarm
libcom_HEADERS += alarmString
libcom_HEADERS += asTrapWrite
libcom_HEADERS += bucketLib
libcom_HEADERS += cantProceed
libcom_HEADERS += compilerDependencies
libcom_HEADERS += cvtFast
libcom_HEADERS += dbmf
libcom_HEADERS += devLibVME
libcom_HEADERS += devLibVMEImpl
libcom_HEADERS += ellLib
libcom_HEADERS += envDefs
libcom_HEADERS += epicsAlgorithm
libcom_HEADERS += epicsAssert
libcom_HEADERS += epicsAtomic
libcom_HEADERS += epicsEvent
libcom_HEADERS += epicsExit
libcom_HEADERS += epicsExport
libcom_HEADERS += epicsGeneralTime
libcom_HEADERS += epicsGuard
libcom_HEADERS += epicsMessageQueue
libcom_HEADERS += epicsMutex
libcom_HEADERS += epicsReadline
libcom_HEADERS += epicsRingBytes
libcom_HEADERS += epicsRingPointer
libcom_HEADERS += epicsSignal
libcom_HEADERS += epicsSpin
libcom_HEADERS += epicsStackTrace
libcom_HEADERS += epicsStdio
libcom_HEADERS += epicsStdlib
libcom_HEADERS += epicsString
libcom_HEADERS += epicsTempFile
libcom_HEADERS += epicsThread
libcom_HEADERS += epicsTime
libcom_HEADERS += epicsTypes
libcom_HEADERS += epicsUnitTest
libcom_HEADERS += errlog
libcom_HEADERS += freeList
libcom_HEADERS += iocsh
libcom_HEADERS += ipAddrToAsciiAsynchronous
libcom_HEADERS += logClient
libcom_HEADERS += macLib
libcom_HEADERS += osiPoolStatus
libcom_HEADERS += osiProcess
libcom_HEADERS += osiSock
libcom_HEADERS += postfix
libcom_HEADERS += shareLib
libcom_HEADERS += testMain
libcom_HEADERS += yajl_alloc
libcom_HEADERS += yajl_common
libcom_HEADERS += yajl_gen
libcom_HEADERS += yajl_parse
database_HEADERS += chfPlugin
database_HEADERS += dbChannel
database_HEADERS += dbCommon
database_HEADERS += dbDefs
database_HEADERS += dbExtractArray
database_HEADERS += dbLink
database_HEADERS += dbServer
database_HEADERS += dbState
database_HEADERS += dbStaticLib
database_HEADERS += dbUnitTest
database_HEADERS += devLib
database_HEADERS += devSup
database_HEADERS += drvSup
database_HEADERS += initHooks
record_HEADERS += aaiRecord
record_HEADERS += aaoRecord
record_HEADERS += aiRecord
record_HEADERS += aoRecord
record_HEADERS += aSubRecord
record_HEADERS += biRecord
record_HEADERS += boRecord
record_HEADERS += calcRecord
record_HEADERS += calcoutRecord
record_HEADERS += compressRecord
record_HEADERS += dfanoutRecord
record_HEADERS += eventRecord
record_HEADERS += fanoutRecord
record_HEADERS += histogramRecord
record_HEADERS += int64inRecord
record_HEADERS += int64outRecord
record_HEADERS += longinRecord
record_HEADERS += longoutRecord
record_HEADERS += lsiRecord
record_HEADERS += lsoRecord
record_HEADERS += mbbiRecord
record_HEADERS += mbbiDirectRecord
record_HEADERS += mbboRecord
record_HEADERS += mbboDirectRecord
record_HEADERS += permissiveRecord
record_HEADERS += printfRecord
record_HEADERS += selRecord
record_HEADERS += seqRecord
record_HEADERS += stateRecord
record_HEADERS += stringinRecord
record_HEADERS += stringoutRecord
record_HEADERS += subRecord
record_HEADERS += subArrayRecord
record_HEADERS += waveformRecord
menu_HEADERS += menuAlarmSevr
menu_HEADERS += menuAlarmStat
menu_HEADERS += menuConvert
menu_HEADERS += menuFtype
menu_HEADERS += menuIvoa
menu_HEADERS += menuOmsl
menu_HEADERS += menuPini
menu_HEADERS += menuPost
menu_HEADERS += menuPriority
menu_HEADERS += menuScan
menu_HEADERS += menuSimm
menu_HEADERS += menuYesNo
HEADER_TYPES = libcom database record menu
include $(TOP)/documentation/Makefile.headers
HEADER_MD_FILES = $(foreach t, $(HEADER_TYPES), \
$(addsuffix _h.md, $($t_HEADERS)))
@@ -137,10 +20,80 @@ API_RST_FILES = $(addsuffix -api.rst, $(HEADER_TYPES))
RTD_SRC = $(COMMON_DIR)/rtd-src
DOCS += README.md
DOCS += RELEASE_NOTES.md
DOCS += ca-cli.md
OLD_NOTES = $(wildcard ../RELEASE-*.md)
DOCS += $(OLD_NOTES:../%=%)
ifneq ($(EPICS_DEV_SNAPSHOT),)
# Between releases the release target is disabled
DOCS += RELEASE_NOTES.md
REASON = EPICS_DEV_SNAPSHOT not empty
else
# Not a snapshot, user may be creating a new release
ifdef T_A
DOC = ../
endif
# Could we be in the middle of anything?
NOTES_FILE = RELEASE-$(EPICS_SHORT_VERSION).md
NOTES_PATH = $(DOC)$(NOTES_FILE)
NOTES_GIT := $(firstword $(shell git status --porcelain $(NOTES_PATH)))
ifeq ($(NOTES_GIT),A)
# New file was added to the Git index; allow unrelease
else ifeq ($(NOTES_GIT),AD)
# File was added to the Git index but deleted; allow unrelease
else ifeq ($(wildcard $(NOTES_PATH)),)
# No file yet, allow release
else
# File exists but isn't in Git
REASON := $(NOTES_FILE) exists but isn't in Git
NOTES_FILE =
NOTES_PATH =
endif
endif
NEW_DIR = ../new-notes
NEW_NOTES = $(wildcard $(NEW_DIR)/*.md)
include $(TOP)/configure/RULES
ifndef T_A
release unrelease doxygen rtd sphinx: inc
$(MAKE) -C O.$(EPICS_HOST_ARCH) $@
else
MAKENOTES = ../make-notes.pl
ifneq ($(NOTES_PATH),)
$(NOTES_PATH): $(NEW_NOTES) $(MAKENOTES)
@$(RM) $@
$(PERL) $(MAKENOTES) -o $@ -V $(EPICS_SHORT_VERSION) \
-d $(abspath $(NEW_DIR))
release-git: $(NOTES_PATH)
$(if $(NEW_NOTES), \
git rm -q $(NEW_NOTES))
git add $<
release: $(INSTALL_DOC)/RELEASE_NOTES.md $(INSTALL_DOC)/$(NOTES_FILE)
unrelease:
$(if $(wildcard $(NOTES_PATH)), \
git restore --staged $(NOTES_PATH); \
$(RM) $(NOTES_PATH))
git restore --staged $(NEW_DIR)
git restore $(NEW_DIR)
REL_DEP = release-git $(NOTES_PATH)
else
REL_DEV = -D
release unrelease:
$(error "make $@" not available, $(REASON))
endif
$(COMMON_DIR)/RELEASE_NOTES.md: $(REL_DEP) $(NEW_NOTES) $(MAKENOTES)
@$(RM) $@
$(PERL) $(MAKENOTES) -o $@ -V $(EPICS_SHORT_VERSION) $(REL_DEV) \
-d $(abspath $(NEW_DIR)) $(OLD_NOTES) $(NOTES_PATH)
$(HEADER_MD_FILES): %_h.md: ../HEADER_h.md
$(EXPAND_TOOL) -t $(INSTALL_LOCATION) -DHEADER=$* $< $@
@@ -151,24 +104,23 @@ $(API_RST_FILES): %-api.rst: ../%-API.rst
@$(foreach h, $($*_HEADERS), \
echo " $h_h.rst" >> $@;)
ifndef T_A
doxygen rtd sphinx: inc
$(MAKE) -C O.$(EPICS_HOST_ARCH) $@
else
doxygen: Doxyfile
@$(MKDIR) $(RTD_SRC)
$(DOXYGEN)
DOX = doxygen
rtd: doxygen $(API_RST_FILES) $(HEADER_MD_FILES)
rsync -av $(INSTALL_DOC)/ $(RTD_SRC)/
# Use "make sphinx DOX=" to skip running doxygen
rtd: $(DOX) $(API_RST_FILES) $(HEADER_MD_FILES)
rsync -av --exclude=RELEASE-*.md $(INSTALL_DOC)/ $(RTD_SRC)/
rsync -av $(HEADER_MD_FILES) $(RTD_SRC)/
rsync -av $(API_RST_FILES) $(RTD_SRC)/
rsync -av ../index.rst ../conf.py $(RTD_SRC)/
RTD = rtd
sphinx: rtd
# Use "make sphinx RTD=" to skip earlier steps
sphinx: $(RTD)
cd $(COMMON_DIR); $(PYTHON) -m sphinx rtd-src readthedocs
rsync -av $(COMMON_DIR)/readthedocs $(INSTALL_HTML)/
endif
.PHONY: doxygen rtd sphinx
.PHONY: release release-git unrelease doxygen rtd sphinx

View File

@@ -0,0 +1,129 @@
# Makefile.headers
#
# Lists of C/C++ header files to include in each
# section of the documentation
HEADER_TYPES = libcom ca database record menu
libcom_HEADERS += adjustment
libcom_HEADERS += alarm
libcom_HEADERS += alarmString
libcom_HEADERS += asTrapWrite
libcom_HEADERS += bucketLib
libcom_HEADERS += cantProceed
libcom_HEADERS += compilerDependencies
libcom_HEADERS += cvtFast
libcom_HEADERS += dbmf
libcom_HEADERS += devLibVME
libcom_HEADERS += devLibVMEImpl
libcom_HEADERS += ellLib
libcom_HEADERS += envDefs
libcom_HEADERS += epicsAlgorithm
libcom_HEADERS += epicsAssert
libcom_HEADERS += epicsAtomic
libcom_HEADERS += epicsEvent
libcom_HEADERS += epicsExit
libcom_HEADERS += epicsExport
libcom_HEADERS += epicsGeneralTime
libcom_HEADERS += epicsGuard
libcom_HEADERS += epicsMessageQueue
libcom_HEADERS += epicsMutex
libcom_HEADERS += epicsReadline
libcom_HEADERS += epicsRingBytes
libcom_HEADERS += epicsRingPointer
libcom_HEADERS += epicsSignal
libcom_HEADERS += epicsSpin
libcom_HEADERS += epicsStackTrace
libcom_HEADERS += epicsStdio
libcom_HEADERS += epicsStdlib
libcom_HEADERS += epicsString
libcom_HEADERS += epicsTempFile
libcom_HEADERS += epicsThread
libcom_HEADERS += epicsTime
libcom_HEADERS += epicsTypes
libcom_HEADERS += epicsUnitTest
libcom_HEADERS += errlog
libcom_HEADERS += freeList
libcom_HEADERS += iocsh
libcom_HEADERS += ipAddrToAsciiAsynchronous
libcom_HEADERS += logClient
libcom_HEADERS += macLib
libcom_HEADERS += osiPoolStatus
libcom_HEADERS += osiProcess
libcom_HEADERS += osiSock
libcom_HEADERS += postfix
libcom_HEADERS += shareLib
libcom_HEADERS += testMain
libcom_HEADERS += yajl_alloc
libcom_HEADERS += yajl_common
libcom_HEADERS += yajl_gen
libcom_HEADERS += yajl_parse
ca_HEADERS += cadef
ca_HEADERS += caerr
ca_HEADERS += caeventmask
ca_HEADERS += db_access
database_HEADERS += chfPlugin
database_HEADERS += dbChannel
database_HEADERS += dbCommon
database_HEADERS += dbDefs
database_HEADERS += dbExtractArray
database_HEADERS += dbLink
database_HEADERS += dbServer
database_HEADERS += dbState
database_HEADERS += dbStaticLib
database_HEADERS += dbUnitTest
database_HEADERS += devLib
database_HEADERS += devSup
database_HEADERS += drvSup
database_HEADERS += initHooks
record_HEADERS += aaiRecord
record_HEADERS += aaoRecord
record_HEADERS += aiRecord
record_HEADERS += aoRecord
record_HEADERS += aSubRecord
record_HEADERS += biRecord
record_HEADERS += boRecord
record_HEADERS += calcRecord
record_HEADERS += calcoutRecord
record_HEADERS += compressRecord
record_HEADERS += dfanoutRecord
record_HEADERS += eventRecord
record_HEADERS += fanoutRecord
record_HEADERS += histogramRecord
record_HEADERS += int64inRecord
record_HEADERS += int64outRecord
record_HEADERS += longinRecord
record_HEADERS += longoutRecord
record_HEADERS += lsiRecord
record_HEADERS += lsoRecord
record_HEADERS += mbbiRecord
record_HEADERS += mbbiDirectRecord
record_HEADERS += mbboRecord
record_HEADERS += mbboDirectRecord
record_HEADERS += permissiveRecord
record_HEADERS += printfRecord
record_HEADERS += selRecord
record_HEADERS += seqRecord
record_HEADERS += stateRecord
record_HEADERS += stringinRecord
record_HEADERS += stringoutRecord
record_HEADERS += subRecord
record_HEADERS += subArrayRecord
record_HEADERS += waveformRecord
menu_HEADERS += menuAlarmSevr
menu_HEADERS += menuAlarmStat
menu_HEADERS += menuConvert
menu_HEADERS += menuFtype
menu_HEADERS += menuIvoa
menu_HEADERS += menuOmsl
menu_HEADERS += menuPini
menu_HEADERS += menuPost
menu_HEADERS += menuPriority
menu_HEADERS += menuScan
menu_HEADERS += menuSimm
menu_HEADERS += menuYesNo

View File

@@ -232,14 +232,16 @@ required path and other environment variables.
* **`EPICS_HOST_ARCH`**
Some host builds of EPICS require that the environment variable
`EPICS_HOST_ARCH` be defined. The perl script `EpicsHostArch.pl` in the
`base/startup` directory prints the value which the build will use if
the variable is not set before the build starts. Architecture names
start with the operating system followed by a dash and the host CPU
architecture, e.g. `linux-x86_64`. Some architecture names have another
dash followed by another keyword, for example when building for Windows
but using the MinGW compiler the name must be `windows-x64-mingw`. See
`configure/CONFIG_SITE` for a list of supported host architecture names.
`EPICS_HOST_ARCH` be defined. The shell script `EpicsHostArch` in the
`base/startup` directory (which finds and calls the perl script
`EpicsHostArch.pl` in the `base/src/tools` directory) prints the
value which the build will use if the variable is not set before
the build starts. Architecture names start with the operating system
followed by a dash and the host CPU architecture, e.g. `linux-x86_64`.
Some architecture names have another dash followed by another keyword,
for example when building for Windows but using the MinGW compiler the
name must be `windows-x64-mingw`. See `configure/CONFIG_SITE` for a
list of supported host architecture names.
* **`PATH`**
As already mentioned, you must have the `perl` executable and you may

View File

@@ -0,0 +1,890 @@
# Changes incorporated from the 3.15 branch
## Changes from the 3.15 branch since 3.15.9
### Support for Apple M1/M2 (arm64) Processors
Thanks to Jeong Han Lee this release comes with build support for Apple's new
M1/M2 CPUs running macOS, using the target name `darwin-aarch64`.
### Set thread names on Windows
On MS Windows, epicsThread names are made available to the OS and debugger
using `SetThreadDescription()` if available as well as using the older
exception mechanism.
### Fix timers on MS Windows for non-EPICS threads
The waitable timer changes in 3.15.9 broke calls to `epicsThreadSleep()` and
similar routines that used timers (including `ca_pend_event()`) when made from
threads that were not started using the epicsThread APIs.
[This problem](https://github.com/epics-base/epics-base/pull/200)
[has now been fixed](https://github.com/epics-base/epics-base/pull/201).
## Changes made between 3.15.8 and 3.15.9
### Use waitable timers on Microsoft Windows
The `epicsEventWaitWithTimeout()` and `epicsThreadSleep()` functions have
been changed to use waitable timers. On Windows 10 version 1803 or higher
they will use high resolution timers for more consistent timing.
See [this Google Groups thread](https://groups.google.com/a/chromium.org/g/scheduler-dev/c/0GlSPYreJeY)
for a comparison of the performance of different timers.
### Build target for documentation
The build target `inc` now works again after a very long hiatus. It now
generates and installs just the dbd, header and html files, without compiling
any C/C++ code. This can be used to speed up CI jobs that only generate
documentation.
### Bug fixes
- The error status returned by a record support's `special()` method is now propagated out of the `dbPut()` routine again (broken since 3.15.0).
- [gh: #80](https://github.com/epics-base/epics-base/issues/80), VS-2015 and
later have working strtod()
- [lp: #1776141](https://bugs.launchpad.net/epics-base/+bug/1776141), Catch
buffer overflow from long link strings
- [lp: #1899697](https://bugs.launchpad.net/epics-base/+bug/1899697), Records
in wrong PHAS order
### Change to the `junitfiles` self-test build target
The names of the generated junit xml test output files have been changed
from `<testname>.xml` to `<testname>-results.xml`, to allow better
distinction from other xml files. (I.e., for easy wildcard matching.)
### Fixes and code cleanups
Issues reported by various static code checkers.
## Changes made between 3.15.7 and 3.15.8
### Bug fixes
The following launchpad bugs have fixes included in this release:
- [lp: 1812084](https://bugs.launchpad.net/epics-base/+bug/1812084), Build
failure on RTEMS 4.10.2
- [lp: 1829770](https://bugs.launchpad.net/epics-base/+bug/1829770), event
record device support broken with constant INP
- [lp: 1829919](https://bugs.launchpad.net/epics-base/+bug/1829919), IOC
segfaults when calling dbLoadRecords after iocInit
- [lp: 1838792](https://bugs.launchpad.net/epics-base/+bug/1838792), epicsCalc
bit-wise operators on aarch64
- [lp: 1841608](https://bugs.launchpad.net/epics-base/+bug/1841608), logClient
falsely sends error logs on all connections
- [lp: 1853168](https://bugs.launchpad.net/epics-base/+bug/1853168), undefined
reference to `clock_gettime()`
- [lp: 1862328](https://bugs.launchpad.net/epics-base/+bug/1862328), Race
condition on IOC start leaves rsrv unresponsive
- [lp: 1868486](https://bugs.launchpad.net/epics-base/+bug/1868486),
epicsMessageQueue lost messages
### Improvements to the self-test build targets
This release contains changes that make it possible to integrate another test
running and reporting system (such as Google's gtest) into the EPICS build
system. The built-in test-runner and reporting system will continue to be used
by the test programs inside Base however.
These GNUmake `tapfiles` and `test-results` build targets now collect a list of
the directories that experienced test failures and display those at the end of
running and/or reporting all of the tests. The GNUmake process will also only
exit with an error status after running and/or reporting all of the test
results; previously the `-k` flag to make was needed and even that didn't always
work.
Continuous Integration systems are recommended to run `make tapfiles` (or if
they can read junittest output instead of TAP `make junitfiles`) followed by
`make -s test-results` to display the results of the tests. If multiple CPUs are
available the `-j` flag can be used to run tests in parallel, giving the maximum
jobs that should be allowed so `make -j4 tapfiles` for a system with 4 CPUs say.
Running many more jobs than you have CPUs is likely to be slower and is not
recommended.
### Calc Engine Fixes and Enhancements
The code that implements bit operations for Calc expressions has been reworked
to better handle some CPU architectures and compilers. As part of this work a
new operator has been added: `>>>` performs a logical right-shift, inserting
zero bits into the most significant bits (the operator `>>` is an arithmetic
right-shift which copies the sign bit as it shifts the value rightwards).
### IOC logClient Changes
The IOC's error logging system has been updated significantly to fix a number
of issues including:
- Only send errlog messages to iocLogClient listeners
- Try to minimize lost messages while the log server is down:
+ Detect disconnects sooner
+ Don't discard the buffer on disconnect
+ Flush the buffer immediately after a server reconnects
### epicsThread: Main thread defaults to allow blocking I/O
VxWorks IOCs (and potentially RTEMS IOCs running GeSys) have had problems with
garbled error messages from dbStaticLib routines for some time &mdash; messages
printed before `iocInit` were being queued through the errlog thread instead of
being output immediately. This has been fixed by initializing the main thread
with its `OkToBlock` flag set instead of cleared. IOCs running on other
operating systems that use iocsh to execute the startup script previously had
that set anyway in iocsh so were not affected, but this change might cause other
programs that don't use iocsh to change their behavior slightly if they use
`errlogPrintf()`, `epicsPrintf()` or `errPrintf()`.
### catools: Handle data type changes in camonitor
The camonitor program didn't properly cope if subscribed to a channel whose data
type changed when its IOC was rebooted without restarting the camonitor program.
This has now been fixed.
### More Record Reference Documentation
The remaining record types have had their reference pages moved from the Wiki,
and some new reference pages have been written to cover the analog array and
long string input and output record types plus the printf record type, none of
which were previously documented. The wiki reference pages covering the fields
common to all, input, and output record types have also been added, thanks to
Rolf Keitel. The POD conversion scripts have also been improved and they now
properly support linking to subsections in a different document, although the
POD changes to add the cross-links that appeared in the original wiki pages
still needs to be done in most cases.
### Fix build issues with newer MinGW versions
The `clock_gettime()` routine is no longer used under MinGW since newer versions
don't provide it any more.
### Fix race for port in RSRV when multiple IOCs start simultaneously
If multiple IOCs were started at the same time, by systemd say, they could race
to obtain the Channel Access TCP port number 5064. This issue has been fixed.
-----
## Changes made between 3.15.6 and 3.15.7
### GNU Readline detection on Linux
Most Linux architectures should now configure themselves automatically to use
the GNU Readline library if its main header file can be found in the expected
place, and not try to use Readline if the header file isn't present. For older
Linux architectures where libncurses or libcurses must also be linked with, the
manual configuration of the `COMMANDLINE_LIBRARY` variable in the appropriate
`configure/os/CONFIG_SITE.Common.<arch>` file will still be necessary.
### Replace `EPICS_TIMEZONE` with `EPICS_TZ`
The `EPICS_TIMEZONE` environment parameter provided time-zone information for
the IOC's locale in the old ANSI format expected by VxWorks for its `TIMEZONE`
environment variable, and can also used by RTEMS to set its `TZ` environment
variable. However the `TIMEZONE` value has to be updated every year since it
contains the exact dates of the daylight-savings time changes. The Posix TZ
format that RTEMS uses contains rules that for calculating those dates, thus its
value would only need updating if the rules (or the locale) are changed.
This release contains changes that replace the `EPICS_TIMEZONE` environment
parameter with one called `EPICS_TZ` and a routine for VxWorks that calculates
the `TIMEZONE` environment variable from the current `TZ` value. This routine
will be run once at start-up, when the EPICS clock has synchronized to its NTP
server. The calculations it contains were worked out and donated to EPICS by
Larry Hoff in 2009; it is unforunate that it has taken 10 years for them to be
integrated into Base.
The default value for the `EPICS_TZ` environment parameter is set in the Base
`configure/CONFIG_SITE_ENV` file, which contains example settings for most EPICS
sites that use VxWorks, and a link to a page describing the Posix TZ format for
any locations that I missed.
If a VxWorks IOC runs continuously without being rebooted from December 31st to
the start of daylight savings time the following year, its `TIMEZONE` value will
be wrong as it was calculated for the previous year. This only affects times
that are converted to a string on the IOC however and is easily fixed; just run
the command `tz2timezone()` on the VxWorks shell and the calculation will be
redone for the current year. IOCs that get rebooted at least once before the
start of summer time will not need this to be done.
### Added new decimation channel filter
A new server-side filter has been added to the IOC for reducing the number
and frequency of monitor updates from a channel by a client-specified factor.
The filter's behaviour is quite simplistic, it passes the first monitor event it
sees to the client and then drops the next N-1 events before passing another
event. For example to sample a 60Hz channel at 1Hz, a 10Hz channel every 6
seconds, or a 1Hz channel once every minute:
```
Hal$ camonitor 'test:channel.{"dec":{"n":60}}'
...
```
More information is included in the filters documentation, which can be found
in the `html/filters.html` document that is generated during the build.
### Imported Record Reference Documentation from Wiki
The remaining record types that had 3.14 reference documentation in the EPICS
Wiki have had that documentation converted and imported into their DBD files.
The preferred form for future updates to the record type descriptions is now an
emailed patch file, a Pull Request through GitHub, or a Merge Request through
Launchpad. Note that in some cases the behavior of a record type in a 7.0.x
release may differ from that of the same record type in a 3.15 release, although
this would be unusual, so it may be important to indicate the branch that your
changes apply to.
**NOTE:** *These documentation changes have modified the order of the fields in
some record definitions. As a result this release is not compatible with record
or device support binaries that were compiled against earlier releases.*
### `make test-results` for Windows
The make target `test-results` should now work properly on Windows. Some Perl
installations used versions of `prove.bat` that would only display the results of
up to 3 tests or didn't return an error status in the event of tests failing. The
build system now calls its own perl script to summarize the results instead of
passing a list of TAP filenames to `prove`.
### Add option to avoid CALLBACK conflict
If a macro `EPICS_NO_CALLBACK` is defined, then callback.h will no longer
(re)define CALLBACK. The name `CALLBACK` is used by the WIN32 API, and
redefinition in callback.h cause errors if some windows headers are later
included.
Code which defines `EPICS_NO_CALLBACK`, but still wishes to use callbacks,
should use the alternate name `epicsCallback` introduced in 3.15.6, 3.16.2, and
7.0.2. It is also possible, though not encouraged, to use `struct callbackPvt`
which has been present since the callback API was introduced.
### Cleaning up with Multiple CA contexts in a Process
Bruno Martins reported a problem with the CA client library at shutdown in a
process that uses multiple CA client contexts. The first context that triggers
the CA client exit handler prevents any others from being able to clean up
because it resets the ID of an internal epicsThreadPrivate variable which is
shared by all clients. This action has been removed from the client library,
which makes cleanup of clients like this possible.
### Perl CA bindings fixed for macOS Mojave
Apple removed some Perl header files from macOS Mojave that were available
in their SDK, requiring a change to the include paths used when compiling the
CA bindings. The new version should build on new and older macOS versions, and
these changes may also help other targets that have an incomplete installation
of Perl (the build will continue after printing a warning that the Perl CA
bindings could not be built).
### Routine `epicsTempName()` removed from libCom
This routine was a simple wrapper around the C89 function `tmpnam()`
which is now seen as unsafe and causes warning messages to be generated by
most modern compilers. The two internal uses of this function have been
modified to call `epicsTempFile()` instead. We were unable to find any
published code that used this function, so it was removed immediately instead
of being deprecated.
### DBD Parsing of Record Types
The Perl DBD file parser has been made slightly more liberal; the order in
which DBD files must be parsed is now more flexible, so that a record type
definition can now be parsed after a device support that referred to that
record type. A warning message will be displayed when the device support is
seen, but the subsequent loading of the record type will be accepted without
triggering an error. See
[Launchpad bug 1801145](https://bugs.launchpad.net/epics-base/+bug/1801145).
### menuScan and several record types documented with POD
The EPICS Wiki pages describing a number of standard record types has been
converted into the Perl POD documentation format and added to the DBD files,
so at build-time an HTML version of these documents is generated and installed
into the htmls directory. Thanks to Tony Pietryla.
### CA client tools learned `-V` option
This displays the version numbers of EPICS Base and the CA protocol.
-----
## Changes made between 3.15.5 and 3.15.6
### Unsetting environment variables
The new command `epicsEnvUnset varname` can be used to
unset an environment variable.
### Warning indicators in msi (and macLib) output
The libCom macro expansion library has been modified so that when the
`SUPPRESS_WARNINGS` flag is set it will no longer include any `,undefined`
or `,recursive` indicators in its output when undefined or recursive
macros are encountered. These indicators were harmless when the output was fed
into an IOC along with a definition for the macro, but when the `msi`
tool was used to generate other kinds of files they caused problems. If the
`msi -V` flag is used the markers will still be present in the output
whenever the appropriate condition is seen.
### Improvements to msi
In addition to fixing its response to discovering parsing errors in its
substitution input file (reported as Launchpad
[bug 1503661](https://bugs.launchpad.net/epics-base/+bug/1503661))
so it now deletes the incomplete output file, the msi program has been cleaned
up a little bit internally.
### All array records now post monitors on their array-length fields
The waveform record has been posting monitors on its NORD field since Base
3.15.0.1; we finally got around to doing the equivalent in all the other
built-in record types, which even required modifying device support in some
cases. This fixes
[Launchpad bug 1730727](https://bugs.launchpad.net/epics-base/+bug/1730727).
### HOWTO: Converting Wiki Record Reference to POD
Some documentation has been added to the `dbdToHtml.pl` script
explaining how Perl POD (Plain Old Documentation) markup can be added to
`.dbd` files to generate HTML documentation for the record types. To see
these instructions, run `perl bin/<host>/dbdToHtml.pl -H`
or `perldoc bin/<host>/dbdToHtml.pl`.
### Fix problem with numeric soft events
Changing from numeric to named soft events introduced an incompatibility
when a numeric event 1-255 is converted from a DOUBLE, e.g. from a calc record.
The `post_event()` API is not marked deprecated any more.
Also `scanpel` has been modified to accept a glob pattern for
event name filtering and to show events with no connected records as well.
### Add `osiSockOptMcastLoop_t` and osiSockTest
Added a new OS-independent typedef for multicast socket options, and a test
file to check their correct operation.
### Support for `CONFIG_SITE.local` in Base
This feature is mostly meant for use by developers; configuration
settings that would normally appear in `base/configure/CONFIG_SITE` can now
be put in a locally created `base/configure/CONFIG_SITE.local` file instead
of having go modify or replace the original. A new `.gitignore` pattern
tells git to ignore all `configure/*.local` files.
### Fix broken `EPICS_IOC_LOG_FILE_LIMIT=0` setting
The Application Developers' Guide says this is allowed and disables the
limit on the log-file, but it hasn't actually worked for some time (if ever).
Note that the iocLogServer will be removed from newer Base release sometime
soon as its functionality can be implemented by other dedicated log servers
such as logstash or syslog-ng.
Fixes [lp:1786858](https://bugs.launchpad.net/bugs/1786858)
and part of [lp:1786966](https://bugs.launchpad.net/bugs/1786966).
### Cleanup of startup directory
The files in the startup directory have not been maintained in recent years
and have grown crufty (technical term). This release includes the following
updates to these files:
- The Perl `EpicsHostArch.pl` script has been rewritten, and support
for a few previously missing host architectures has been added to it.
- The `EpicsHostArch.pl` script has also been moved into the standard
`src/tools` directory, from where it will be installed into
`lib/perl`. In this new location it is no longer executable, so it must
be run by the `perl` executable.
- The build system has been adjusted to look for `EpicsHostArch.pl` in
both places if the `EPICS_HOST_ARCH` environment variable has not been
set at build-time.
- Sites that used the original Perl script to set `EPICS_HOST_ARCH` as part of
their standard environment will need to adjust their scripts when they
upgrade to this release.
- The `EpicsHostArch` shell script has been replaced with a wrapper
routine that calls the Perl `EpicsHostArch.pl` script. Sites that rely on
this script to set `EPICS_HOST_ARCH` should consider switching to the
Perl script instead.
- The `Site.cshrc` and `Site.profile` files have been renamed to
`unix.csh` and `unix.sh`, respectively.
- The existing `win32.bat` file has been cleaned up and a new
`windows.bat` file added for 64-bit targets. The contents of these files
should be seen as examples, don't uncomment or install parts for software
that you don't explicitly know that you need.
### Recent Apple XCode Build Issues
The latest version of XCode will not compile calls to `system()` or
`clock_settime()` for iOS targets. There were several places in Base
where these were being compiled, although there were probably never called. The
code has now been modified to permit iOS builds to complete again.
### Prevent illegal alarm severities
A check has been added to `recGblResetAlarms()` that prevents records
from getting an alarm severity higher than `INVALID_ALARM`. It is still possible
for a field like HSV to get set to a value that is not a legal alarm severity,
but the core IOC code should never copy such a value into a record's SEVR or
ACKS fields. With this fix the record's alarm severity will be limited to
`INVALID_ALARM`.
### Fixes for Launchpad bugs
The following launchpad bugs have fixes included:
- [lp: 1786320](https://bugs.launchpad.net/epics-base/+bug/1786320), dbCa
subscribes twice to ENUM
- [lp: 541221](https://bugs.launchpad.net/epics-base/+bug/541221),
`assert (pca->pgetNative)` failed in ../dbCa.c
- [lp: 1747091](https://bugs.launchpad.net/epics-base/+bug/1747091),
epicsTimeGetEvent() / generalTime bug
- [lp: 1743076](https://bugs.launchpad.net/epics-base/+bug/1743076), Segfault
in `ca_attach_context()` during exits
- [lp: 1751380](https://bugs.launchpad.net/epics-base/+bug/1751380), Deadlock
in `ca_clear_subscription()`
- [lp: 1597809](https://bugs.launchpad.net/epics-base/+bug/1597809), Setting
NAME field in DB file may break IOC
- [lp: 1770292](https://bugs.launchpad.net/epics-base/+bug/1770292),
`get_alarm_double()` inconsistent across record types
- [lp: 1771298](https://bugs.launchpad.net/epics-base/+bug/1771298),
Conversion of NaN to integer relies on undefined behavior
### Updated VxWorks Timezone settings
Removed the settings for 2017; fixed the hour of the change for MET.
### Fixed camonitor server side relative timestamps bug
Initialize the first time-stamp from the first monitor, not the client-side
current time in this configuration.
### Build changes for MSVC
Windows builds using Visual Studio 2015 and later now use the `-FS`
compiler option to allow parallel builds to work properly.
We now give the `-FC` option to tell the compiler to print absolute
paths for source files in diagnostic messages.
### Extend maximum Posix epicsEventWaitWithTimeout() delay
The Posix implementation of epicsEventWaitWithTimeout() was limiting the
timeout delay to at most 60 minutes (3600.0 seconds). This has been changed to
10 years; significantly longer maximum delays cause problems on systems where
`time_t` is still a signed 32-bit integer so cannot represent absolute
time-stamps after 2038-01-19. Our assumption is that such 32-bit systems will
have been retired before the year 2028, but some additional tests have been
added to the epicsTimeTest program to detect and fail if this assumption is
violated.
### New test-related make targets
This release adds several new make targets intended for use by developers
and Continuous Integration systems which simplify the task of running the
built-in self-test programs and viewing the results. Since these targets are
intended for limited use they can have requirements for the build host which
go beyond the standard minimum set needed to build and run Base.
#### `test-results` - Summarize test results
The new make target `test-results` will run the self-tests if
necessary to generate a TAP file for each test, then summarizes the TAP output
files in each test directory in turn, displaying the details of any failures.
This step uses the program `prove` which comes with Perl, but also needs
`cat` to be provided in the default search path so will not work on most
Windows systems.
#### `junitfiles` - Convert test results to JUnit XML Format
The new make target `junitfiles` will run the self-tests if necessary
and then convert the TAP output files into the more commonly-supported JUnit
XML format. The program that performs this conversion needs the Perl module
`XML::Generator` to have been installed.
#### `clean-tests` - Delete test result files
The new make target `clean-tests` removes any test result files from
previous test runs. It cleans both TAP and JUnit XML files.
### Fix DNS related crash on exit
The attempt to fix DNS related delays for short lived CLI programs (eg. caget)
in [lp:1527636](https://bugs.launchpad.net/epics-base/+bug/1527636) introduced a
bug which cased these short lived clients to crash on exit. This bug should now
be fixed.
### Server bind issue on Windows
When a National Instruments network variables CA server is already running on
a Windows system and an IOC or PCAS server is started, the IOC's attempt to
bind a TCP socket to the CA server port number fails, but Windows returns a
different error status value than the IOC is expecting in that circumstance
(because the National Instruments code requests exclusive use of that port,
unlike the EPICS code) so the IOC fails to start properly. The relevent EPICS
bind() checks have now been updated so the IOC will request that a dynamic port
number be allocated for this TCP socket instead when this happens.
### Checking Periodic Scan Rates
Code has been added to the IOC startup to better protect it against bad
periodic scan rates, including against locales where `.` is not
accepted as a decimal separator character. If the scan period in a menuScan
choice string cannot be parsed, the associated periodic scan thread will no
longer be started by the IOC and a warning message will be displayed at iocInit
time. The `scanppl` command will also flag the faulty menuScan value.
-----
## Changes made between 3.15.4 and 3.15.5
### dbStatic Library Speedup and Cleanup
Loading of database files has been optimized to avoid over-proportionally
long loading times for large databases. As a part of this, the alphabetical
ordering of records instances (within a record type) has been dropped. In the
unexpected case that applications were relying on the alphabetic order, setting
`dbRecordsAbcSorted = 1` before loading the databases will retain the
old behavior.
The routine `dbRenameRecord()` has been removed, as it was intended
to be used by database configuration tools linked against a host side version
of the dbStatic library that is not being built anymore.
### Launchpad Bug-fixes
In addition to the more detailed change descriptions below, the following
Launchpad bugs have also been fixed in this release:
- [lp:1440186](https://bugs.launchpad.net/epics-base/+bug/1440186) Crash due
to a too small buffer being provided in `dbContextReadNotifyCache()`
- [lp:1479316](https://bugs.launchpad.net/epics-base/+bug/1479316) Some data
races found using Helgrind
- [lp:1495833](https://bugs.launchpad.net/epics-base/+bug/1495833) biRecord
prompt groups are nonsensical
- [lp:1606848](https://bugs.launchpad.net/epics-base/+bug/1606848) WSAIoctl
`SIO_GET_INTERFACE_LIST` failed in Windows
### Whole-Program Optimization for MS Visual Studio Targets
When using the Microsoft compilers a new build system variable is provided that
controls whether whole program optimization is used or not. For static builds
using Visual Studio 2010 this optimization must be disabled. This is controlled
in the files `configure/os/CONFIG_SITE.Common.windows-x64-static` and
`configure/os/CONFIG_SITE.Common.win32-x86-static` by setting the variable
`OPT_WHOLE_PROGRAM=NO` to override the default value `YES` that would otherwise
be used.
Note that enabling this optimization slows down the build process. It is not
possible to selectively disable this optimization, when building a particular
module say; Microsoft's linker will restart itself automatically with the
`-LTCG` flag set and display a warning if it is asked to link any object
files that were compiled with the `-GL` flag.
### Add dynamic (variable length) array support to PCAS
Dynamic array sizing support was added to the IOC server (RSRV) in the
Base-3.14.12 release, but has not until now been supported in the Portable
Channel Access Server (PCAS). Channel Access server applications using the
PCAS may not need to be modified at all; if they already push monitors with
different gdd array lengths, those variable sizes will be forwarded to any CA
clients who have requested variable length updates. The example CAS server
application has been modified to demonstrate this feature.
In implementing the above, the gdd method `gdd::put(const gdd *)` now
copies the full-sized array from the source gdd if the destination gdd is of
type array, has no allocated memory and a boundary size of 0.
### Additional epicsTime conversion
The EPICS timestamp library (epicsTime) inside libCom's OSI layer has
been extended by routines that convert from `struct tm` to the EPICS
internal `epicsTime` type, assuming UTC - i.e. without going through
the timezone mechanism. This solves issues with converting from the structured
type to the EPICS timestamp at driver level from multiple threads at a high
repetition rate, where the timezone mechanism was blocking on file access.
### MinGW Cross-builds from Linux
The build configuration files that allow cross-building of the 32-bit
win32-x86-mingw cross-target have been adjusted to default to building shared
libraries (DLLs) as this is now supported by recent MinGW compilers. The 64-bit
windows-x64-mingw cross-target was already being built that way by default. The
configuration options to tell the minGW cross-compiler to link programs with
static versions of the compiler support libraries have now been moved into the
`CONFIG_SITE.linux-x86.<target>` files.
### General Time updates
The `iocInit` code now performs a sanity check of the current time
returned by the generalTime subsystem and will print a warning if the wall-clock
time returned has not been initialized yet. This is just a warning message; when
a time provider does synchonize the IOC will subsequently pick up and use the
correct time. This check code also primes the registered event system provider
if there is one so the `epicsTimeGetEventInt()` routine will work on IOCs
that ask for event time within an interrupt service routine.
The osiClockTime provider's synchronization thread (which is only used on
some embedded targets) will now poll the other time providers at 1Hz until the
first time it manages to get a successful timestamp, after which it will poll
for updates every 60 seconds as before.
The routine `generalTimeGetExceptPriority()` was designed for use by
backup (lower priority) time providers like the osiClockTime provider which do
not have their own absolute time reference and rely on other providers for an
absolute time source. This routine no longer implements the ratchet mechanism
that prevented the time it returned from going backwards. If the backup clock's
tick-timer runs fast the synchronization of the backup time provider would never
allow it to be corrected backwards when the ratchet was in place. The regular
`epicsTimeGetCurrent()` API still uses the ratchet mechanism, so this
change will not cause the IOC to see time going backwards.
### Microsoft Visual Studio builds
The build configuration files for builds using the Microsoft compilers have been
updated, although there should be no noticable difference at most sites. One
extra compiler warning is now being suppressed for C++ code, `C4344: behavior
change: use of explicit template arguments results in ...` which is gratuitous
and was appearing frequently in builds of the EPICS V4 modules.
Cross-builds of the windows-x64 target from a win32-x86 host have been
removed as they don't actually work within the context of a single `make`
run. Significant changes to the build configuration files would be necessary for
these kinds of cross-builds to work properly, which could be done if someone
needs them (email Andrew Johnson before working on this, and see
[this stack-overflow answer](http://stackoverflow.com/questions/5807647/how-do-you-compile-32-bit-and-64-bit-applications-at-the-same-time-in-visual-stu) for a starting point).
### Bazaar keywords such as 'Revision-Id' removed
In preparation for moving to git in place of the Bazaar revision control
system we have removed all the keywords from the Base source code.
### Linux systemd service file for CA Repeater
Building this version of Base on a Linux system creates a systemd service
file suitable for starting the Channel Access Repeater under systemd. The file
will be installed into the target bin directory, from where it can be copied
into the appropriate systemd location and modified as necessary. Installation
instructions are included as comments in the file.
-----
## Changes made between 3.15.3 and 3.15.4
### New string input device support "getenv"
A new "getenv" device support for both the stringin and lsi (long string
input) record types can be used to read the value of an environment variable
from the IOC at runtime. See base/db/softIocExit.db for sample usage.
### Build rules and `DELAY_INSTALL_LIBS`
A new order-only prerequisite build rule has been added to ensure that
library files (and DLL stubs on Windows) get installed before linking any
executables, which resolves parallel build problems on high-powered CPUs. There
are some (rare) cases though where a Makefile has to build an executable and run
it to be able to compile code for a library built by the same Makefile. With
this new build rule GNUmake will complain about a circular dependency and the
build will probably fail in those cases. To avoid this problem the failing
Makefile should set `DELAY_INSTALL_LIBS = YES` before including the
`$(TOP)/configure/RULES` file, disabling the new build rule.
### IOC environment variables and build parameters
The IOC now sets a number of environment variables at startup that provide the
version of EPICS Base it was built against (`EPICS_VERSION_...`) and its build
architecture (ARCH). In some cases this allows a single iocBoot/ioc directory to
be used to run the same IOC on several different architectures without any
changes.
There are also 3 new environment parameters (`EPICS_BUILD_...`) available that
C/C++ code can use to find out the target architecture, OS class and compiler
class it was built with. These may be useful when writing interfaces to other
languages.
### New implementation of `promptgroup`/`gui_group` field property
The mechanism behind the `promptgroup()` field property inside a record type
definition has been changed. Instead of using a fixed set of choices,
the static database access library now collects the used gui group names
while parsing DBD information. Group names should start with a two-digit number
plus space-dash-space to allow proper sorting of groups.
The include file `guigroup.h` that defined the fixed set of choices
has been deprecated. Instead, use the conversion functions between index number
and group string that have been added to dbStaticLib.
When a DBD file containing record-type descriptions is expanded, any
old-style `GUI_xxx` group names will be replaced by a new-style
string for use by the IOC. This permits an older record type to be used with
the 3.15.4 release, although eventually record types should be converted by
hand with better group names used.
### CA server configuration changes
RSRV now honors `EPICS_CAS_INTF_ADDR_LIST` and binds only to the provided list
of network interfaces. Name searches (UDP and TCP) on other network interfaces
are ignored. For example on a computer with interfaces 10.5.1.1/24, 10.5.2.1/24,
and 10.5.3.1/24, setting `EPICS_CAS_INTF_ADDR_LIST='10.5.1.1 10.5.2.1'` will
accept traffic on the .1.1 and .2.1, but ignore from .3.1
RSRV now honors `EPICS_CAS_IGNORE_ADDR_LIST` and ignores UDP messages received
from addresses in this list.
Previously, CA servers (RSRV and PCAS) would build the beacon address list using
`EPICS_CA_ADDR_LIST` if `EPICS_CAS_BEACON_ADDR_LIST` was no set. This is no
longer done. Sites depending on this should set both environment variables to
the same value.
### IPv4 multicast for name search and beacons
libca, RSRV, and PCAS may now use IPv4 multicasting for UDP traffic (name search
and beacons). This is disabled by default. To enable multicast address(s) must
be listed in `EPICS_CA_ADDR_LIST` for clients and `EPICS_CAS_INTF_ADDR_LIST` for
servers (IOCs should set both). For example:
EPICS_CAS_INTF_ADDR_LIST='224.0.2.9' EPICS_CA_ADDR_LIST=224.0.2.9
Please note that no IPv4 multicast address is officially assigned for Channel
Access by IANA. The example 224.0.2.9 is taken from the AD-HOC Block I range.
### Moved `mlockall()` into its own epicsThread routine
Since EPICS Base 3.15.0.2 on Posix OSs the initialization of the epicsThread
subsystem has called `mlockall()` when the OS supports it and thread
priority scheduling is enabled. Doing so has caused problems in third-party
applications that call the CA client library, so the functionality has been
moved to a separate routine `epicsThreadRealtimeLock()` which will be
called by the IOC at iocInit (unless disabled by setting the global variable
`dbThreadRealtimeLock` to zero).
### Added dbQuietMacroWarnings control
When loading database files, macros get expanded even on comment lines. If a
comment contains an undefined macro, the load still continues but an error
message gets printed. For this release the error message has been changed to a
warning, but even this warning can be made less verbose by setting this new
variable to a non-zero value before loading the file, like this:
```
var dbQuietMacroWarnings 1 iocsh
dbQuietMacroWarnings=1 VxWorks
```
This was [Launchpad bug
541119](https://bugs.launchpad.net/bugs/541119).
-----
## Changes from the 3.14 branch between 3.15.3 and 3.15.4
### NTP Time Provider adjusts to OS tick rate changes
Dirk Zimoch provided code that allows the NTP Time provider (used on VxWorks
and RTEMS only) to adapt to changes in the OS clock tick rate after the provider
has been initialized. Note that changing the tick rate after iocInit() is not
advisable, and that other software might still misbehave if initialized before
an OS tick rate change. This change was back-ported from the 3.15 branch.
### Making IOC `ca_get` operations atomic
When a CA client gets data from an IOC record using a compound data type such
as `DBR_TIME_DOUBLE` the value field is fetched from the database in a
separate call than the other metadata, without keeping the record locked. This
allows some other thread such as a periodic scan thread a chance to interrupt
the get operation and process the record in between. CA monitors have always
been atomic as long as the value data isn't a string or an array, but this race
condition in the CA get path has now been fixed so the record will stay locked
between the two fetch operations.
This fixes
[Launchpad bug 1581212](https://bugs.launchpad.net/epics-base/+bug/1581212),
thanks to Till Strauman and Dehong Zhang.
### New `CONFIG_SITE` variable for running self-tests
The 'make runtests' and 'make tapfiles' build targets normally only run the
self-tests for the main `EPICS_HOST_ARCH` architecture. If the host is
able to execute self-test programs for other target architectures that are being
built by the host, such as when building a `-debug` version of the host
architecture for example, the names of those other architectures can be added to
the new `CROSS_COMPILER_RUNTEST_ARCHS` variable in either the
`configure/CONFIG_SITE` file or in an appropriate
`configure/os/CONFIG_SITE.<host>.Common` file to have the test
programs for those targets be run as well.
### Additional RELEASE file checks
An additional check has been added at build-time for the contents of the
`configure/RELEASE` file(s), which will mostly only affect users of the Debian
EPICS packages published by NSLS-2. Support modules may share an install path,
but all such modules must be listed adjacent to each other in any `RELEASE`
files that point to them. For example the following will fail the new checks:
```
AUTOSAVE = /usr/lib/epics
ASYN = /home/mdavidsaver/asyn
EPICS_BASE = /usr/lib/epics
```
giving the compile-time error
```
This application's RELEASE file(s) define
EPICS_BASE = /usr/lib/epics
after but not adjacent to
AUTOSAVE = /usr/lib/epics
Module definitions that share paths must be grouped together.
Either remove a definition, or move it to a line immediately
above or below the other(s).
Any non-module definitions belong in configure/CONFIG_SITE.
```
In many cases such as the one above the order of the `AUTOSAVE` and
`ASYN` lines can be swapped to let the checks pass, but if the
`AUTOSAVE` module depended on `ASYN` and hence had to appear
before it in the list this error indicates that `AUTOSAVE` should also be
built in its own private area; a shared copy would likely be incompatible with
the version of `ASYN` built in the home directory.
### String field buffer overflows
Two buffer overflow bugs that can crash the IOC have been fixed, caused by
initializing a string field with a value larger than the field size
([Launchpad bug 1563191](https://bugs.launchpad.net/bugs/1563191)).
### Fixed stack corruption bug in epicsThread C++ API
The C++ interface to the epicsThread API could corrupt the stack on thread
exit in some rare circumstances, usually at program exit. This bug has been
fixed ([Launchpad bug 1558206](https://bugs.launchpad.net/bugs/1558206)).
### RTEMS NTP Support Issue
On RTEMS the NTP Time Provider could in some circumstances get out of sync
with the server because the `osdNTPGet()` code wasn't clearing its input socket
before sending out a new request. This
([Launchpad bug 1549908](https://bugs.launchpad.net/bugs/1549908))
has now been fixed.
### CALC engine bitwise operator fixes
The bitwise operators in the CALC engine have been modified to work properly
with values that have bit 31 (0x80000000) set. This modification involved
back-porting some earlier changes from the 3.15 branch, and fixes
[Launchpad bug 1514520](https://code.launchpad.net/bugs/1514520).
### Fix `ipAddrToAsciiAsync()`: Don't try to join the daemon thread
On process exit, don't try to stop the worker thread that makes DNS lookups
asynchronous. Previously this would wait for any lookups still in progress,
delaying the exit unnecessarily. This was most obvious with catools (eg.
cainfo).
[lp:1527636](https://bugs.launchpad.net/bugs/1527636)
### Fix `epicsTime_localtime()` on Windows
Simpler versions of the `epicsTime_gmtime()` and `epicsTime_localtime()`
routines have been included in the Windows implementations, and a new test
program added. The original versions do not report DST status properly. Fixes
[Launchpad bug 1528284](https://bugs.launchpad.net/bugs/1528284).

View File

@@ -0,0 +1,756 @@
# Changes incorporated from the 3.16 branch
## Changes made between 3.16.1 and 3.16.2
### Launchpad Bugs
The list of tracked bugs fixed in this release can be found on the
[Launchpad Milestone page for EPICS Base 3.16.2](https://launchpad.net/epics-base/+milestone/3.16.2).
### Status reporting for the callback and scanOnce task queues
Two new iocsh commands and some associated underlying APIs have been added to
show the state of the queues that feed the three callback tasks and the
scanOnce task, including a high-water mark which can optionally be reset. The
new iocsh commands are `callbackQueueShow` and `scanOnceQueueShow`; both take
an optional integer argument which must be non-zero to reset the high-water
mark.
### Support for event codes greater than or equal to `NUM_TIME_EVENTS`
Event numbers greater than or equal to `NUM_TIME_EVENTS` are now allowed if
supported by the registered event time provider, which must provide its own
advancing timestamp validation for such events.
Time events numbered 0 through `(NUM_TIME_EVENTS-1)` are still validated by code
in epicsGeneralTime.c that checks for advancing timestamps and enforces that
restriction.
### Type-safe Device and Driver Support Tables
Type-safe versions of the device and driver support structures `dset` and
`drvet` have been added to the devSup.h and drvSup.h headers respectively. The
original structure definitions have not been changed so existing support
modules will still build normally, but older modules can be modified and new
code written to be compatible with both.
The old structure definitions will be replaced by the new ones if the macros
`USE_TYPED_DSET` and/or `USE_TYPED_DRVET` are defined when the appropriate
header is included. The best place to define these is in the Makefile, as with
the `USE_TYPED_RSET` macro that was introduced in Base-3.16.1 and described
below. See the comments in devSup.h for a brief usage example, or look at
[this commit](https://github.com/epics-modules/ipac/commit/a7e0ff4089b9aa39108bc8569e95ba7fcf07cee9)
to the ipac module to see a module conversion.
A helper function `DBLINK* dbGetDevLink(dbCommon *prec)` has also been added
to devSup.h which fetches a pointer to the INP or OUT field of the record.
### RTEMS build configuration update, running tests under QEMU
This release includes the ability to run the EPICS unit tests built for a
special version of the RTEMS-pc386 target architecture on systems that have an
appropriate QEMU emulator installed (`qemu-system-i386`). It is also now
possible to create sub-architectures of RTEMS targets, whereas previously the
EPICS target architecture name had to be `RTEMS-$(RTEMS_BSP)`.
The new target `RTEMS-pc386-qemu` builds binaries that can be run in the
`qemu-system-i386` PC System emulator. This target is a derivative of the
original `RTEMS-pc386` target but with additional software to build an in-
memory file-system, and some minor modifications to allow the unit tests to
work properly under QEMU. When this target is enabled, building any of the
make targets that cause the built-in self-tests to be run (such as `make
runtests`) will also run the tests for RTEMS using QEMU.
To allow the new 3-component RTEMS target name, the EPICS build system for
RTEMS was modified to allow a `configure/os/CONFIG.Common.<arch>` file to set
the `RTEMS_BSP` variable to inform the build what RTEMS BSP to use. Previously
this was inferred from the value of the `T_A` make variable, but that prevents
having multiple EPICS targets that build against the same BSP. All the
included RTEMS target configuration files have been updated; build
configuration files for out-of-tree RTEMS targets will continue to work as the
original rules are used to set `RTEMS_BSP` if it hasn't been set when needed.
### Link type enhancements
This release adds three new link types: "state", "debug" and "trace". The
"state" link type gets and puts boolean values from/to the dbState library
that was added in the 3.15.1 release. The "debug" link type sets the
`jlink::debug` flag in its child link, while the "trace" link type also causes
the arguments and return values for all calls to the child link's jlif and
lset routines to be printed on stdout. The debug flag can no longer be set
using an info tag. The addition of the "trace" link type has allowed over 200
lines of conditional diagnostic printf() calls to be removed from the other
link types.
The "calc" link type can now be used for output links as well as input links.
This allows modification of the output value and even combining it with values
from other input links. See the separate JSON Link types document for details.
A new `start_child()` method was added to the end of the jlif interface table.
The `lset` methods have now been properly documented in the dbLink.h header
file using Doxygen annotations, although we do not run Doxygen on the source
tree yet to generate API documentation.
Link types that utilize child links must now indicate whether the child will
be used for input, output or forward linking by the return value from its
`parse_start_map()` method. The `jlif_key_result` enum now contains 3 values
`jlif_key_child_inlink`, `jlif_key_child_outlink` and `jlif_key_child_fwdlink`
instead of the single `jlif_key_child_link` that was previously used for this.
### GNUmake targets for debugging
Some additional build rules have been added to help debug configuration
problems with the build system. Run `make show-makefiles` to get a sorted list
of all the files that the build system includes when building in the current
directory.
A new pattern rule for `PRINT.%` can be used to show the value of any GNUmake
variable for the current build directory (make sure you are in the right
directory though, many variables are only set when inside the `O.<arch>` build
directory). For example `make PRINT.T_A` will display the build target
architecture name from inside a `O.<arch>` directory but the variable will be
empty from an application top or src directory. `make PRINT.EPICS_BASE` will
show the path to Base from any EPICS application directory though.
### Propagate PUTF across Asynchronous record processing
The IOC contains a mechanism involving the PUTF and RPRO fields of each record
to ensure that if a record is busy when it receives a put to one of its
fields, the record will be processed again to ensure that the new field value
has been correctly acted on. Until now that mechanism only worked if the put
was to the asynchronous record itself, so puts that were chained from some
other record via a DB link did not cause reprocessing.
In this release the mechanism has been extended to propagate the PUTF state
across DB links until all downstream records have been reprocessed. Some
additional information about the record state can be shown by setting the TPRO
field of an upstream record, and even more trace data is displayed if the
debugging variable `dbAccessDebugPUTF` is set in addition to TPRO.
### Finding info fields
A new iocsh command `dbli` lists the info fields defined in the database, and
can take a glob pattern to limit output to specific info names. The newly
added dbStaticLib function `dbNextMatchingInfo()` iterates through the info
fields defined in the current record, and is used to implement the new
command.
### Output from `dbpr` command enhanced
The "DataBase Print Record" command `dbpr` now generates slightly better
output, with more field types having their own display methods. This release
also includes additional protection against buffer overflows while printing
long links in `dbpr`, and corrects the output of long strings from the `dbgf`
command.
### Record types mbbiDirect and mbboDirect upgraded to 32 bit
The VAL fields and related fields of these records are now `DBF_LONG`. (Not
`DBF_ULONG` in order to prevent Channel Access from promoting them to
`DBF_DOUBLE`.) Additional bit fields `B10`...`B1F` have been added.
Device support that accesses `VAL` or the bit fields directly (most don't) and
aims for compatibility with old and new versions of these records should use
at least 32 bit integer types to avoid bit loss. The number of bit fields can
be calculated using `8 * sizeof(prec->val)` which is correct in both versions.
### Restore use of ledlib for VxWorks command editing
The epicsReadline refactoring work described below unfortunately disabled the
VxWorks implementation of the osdReadline.c API that uses ledlib for command
editing and history. This functionality has now been restored, see Launchpad
[bug #1741578](https://bugs.launchpad.net/bugs/1741578).
### Constant link types
Constant links can now hold 64-bit integer values, either as scalars or
arrays. Only base 10 is supported by the JSON parser though, the JSON standard
doesn't allow for hexadecimal numbers.
### Upgraded the YAJL JSON Library
The third-party YAJL library that has been included in libCom for several
years has been upgraded to version 2.1.0 and several bugs fixed. This has an
updated API, requiring any code that uses it to parse its own JSON files to be
modified to match. The changes are mainly that it uses `size_t` instead
`unsigned int` for string lengths, but it also uses `long long` instead of
`long` for JSON integer values, which was the main motivation for the upgrade.
The self-tests that YAJL comes with have been imported and are now run as an
EPICS Unit Test program, and the JSON syntax accepted by the parser was
extended to permit trailing commas in both arrays and maps. The difference
between the old and new YAJL APIs can be detected at compile time by looking
for the macro `EPICS_YAJL_VERSION` which is defined in the `yajl_common.h`
header file along with a brief description of the API changes.
### Timestamp support for the calc link type
A new optional parameter can be given when specifying a calc JSON link. The
`time` parameter is a string containing a single letter `A..L` that selects
one of the input links to be used for the timestamp of calculation if
requested. The timestamp will be fetched atomically with the value from the
chosen input link (providing that input link type supports the readLocked()
method).
### Silence errors from puts to constant link types
A soft channel output record with the OUT link unset uses the CONSTANT link
type. The new link type code was causing some soft channel device supports to
return an error status from the write method of that link type, which would
cause a `ca_put()` operation to such a record to generate an exception. This has
been silenced by giving the constant link types a dummy putValue method. A new
test program has been added to prevent regressions of this behaviour.
### RSRV expanding large buffer causes crash
In the 3.16.1 release a crash can occur in the IOC's RSRV server when a large
array is made even larger; the previous array buffer was not being released
correctly. See Launchpad
[bug #1706703](https://bugs.launchpad.net/epics-base/+bug/1706703).
-----
## Changes made between 3.16.0.1 and 3.16.1
### IOC Database Support for 64-bit integers
The IOC now supports the 64-bit integer field types `DBF_INT64` and
`DBF_UINT64`, and there are new record types `int64in` and `int64out` derived
from the `longin` and `longout` types respectively that use the `DBF_INT64`
data type for their VAL and related fields. The usual range of Soft Channel
device support are included for these new record types.
All internal IOC APIs such as dbAccess can handle the new field types and
their associated request values `DBR_INT64` and `DBR_UINT64`, which are
implemented using the `epicsInt64` and `epicsUInt64` typedef's from the
`epicsTypes.h` header.
The waveform record type has been updated to support these new field types.
**All waveform device support layers must be updated to recognize the new type
enumeration values**, which had to be inserted before the `FLOAT` value in the
enum `dbfType` and in `menuFtype`. C or C++ code can detect at compile-time
whether this version of base provides 64-bit support by checking for the
presence of the `DBR_INT64` macro as follows (Note that `DBF_INT64` is an
enum tag and not a preprocessor macro):
```
#ifdef DBR_INT64
/* Code where Base has INT64 support */
#else
/* Code for older versions */
#endif
```
If the code uses the old `db_access.h` types (probably because it's calling
Channel Access APIs) then it will have to test against the EPICS version
number instead, like this:
```
#include <epicsVersion.h>
#ifndef VERSION_INT
# define VERSION_INT(V,R,M,P) ( ((V)<<24) | ((R)<<16) | ((M)<<8) | (P))
#endif
#ifndef EPICS_VERSION_INT
# define EPICS_VERSION_INT VERSION_INT(EPICS_VERSION, EPICS_REVISION, EPICS_MODIFICATION, EPICS_PATCH_LEVEL)
#endif
#if EPICS_VERSION_INT >= VERSION_INT(3,16,1,0)
/* Code where Base has INT64 support */
#else
/* Code for older versions */
#endif
```
Channel Access does not (and probably never will) directly support 64-bit
integer types, so the new field types are presented to the CA server as
`DBF_DOUBLE` values. This means that field values larger than 2^52
(0x10\_0000\_0000\_0000 = 4503599627370496) cannot be transported over Channel
Access without their least significant bits being truncated. The EPICS V4
pvAccess network protocol _can_ transport 64-bit data types however, and a
future release of the pvaSrv module will connect this ability to the fields of
the IOC.
Additional 64-bit support will be provided in later release. For instance the
JSON parser for the new Link Support feature only handles integers up to 32
bits wide, so constant array initializer values cannot hold larger values in
this release.
### Add `EPICS_CA_MCAST_TTL`
A new environment parameter `EPICS_CA_MCAST_TTL` is used to set the Time To Live
(TTL) value of any IP multi-cast CA search or beacon packets sent.
### `EPICS_CA_MAX_ARRAY_BYTES` is optional
A new environment parameter `EPICS_CA_AUTO_ARRAY_BYTES` is now used by libca and
RSRV (CA clients and the IOC CA server). The default is equivalent to setting
`EPICS_CA_AUTO_ARRAY_BYTES=YES` which removes the need to set
`EPICS_CA_MAX_ARRAY_BYTES` and always attempts to allocate sufficiently large
network buffers to transfer large arrays properly over the network. In this case
the value of the `EPICS_CA_MAX_ARRAY_BYTES` parameter is ignored.
Explicitly setting `EPICS_CA_AUTO_ARRAY_BYTES=NO` will continue to honor the
buffer setting in `EPICS_CA_AUTO_ARRAY_BYTES` as in previous releases.
The default setting for `EPICS_CA_AUTO_ARRAY_BYTES` can be changed by adding the
line
```makefile
EPICS_CA_AUTO_ARRAY_BYTES=NO
```
to the `configure/CONFIG_SITE_ENV` file before building Base. Sites that wish to
override this only for specific IOC architectures can create new files for each
architecture named `configure/os/CONFIG_SITE_ENV.<target-arch>` with the above
setting in before building Base. The configuration can also be explicitly
changed by setting the environment variable in the IOC's startup script,
anywhere above the `iocInit` line.
The PCAS server (used by the PV Gateway and other CA servers) now always behaves
as if `EPICS_CA_AUTO_ARRAY_BYTES` is set to `YES` (it ignores the configuration
parameter and environment variable).
### Channel Access "modernization"
Drop support for CA clients advertising protocol versions less than 4.
This effects clients from Base older than 3.12.0-beta1. Newer clients will
continue to be able to connect to older servers. Older clients will be ignored
by newer servers.
This allows removal of UDP echo and similar protocol features which are not
compatible with secure protocol design practice.
### Lookup-tables using the subArrray record
The subArray record can now be used as a lookup-table from a constant array
specified in its INP field. For example:
```
record(subArray, "powers-of-2") {
field(FTVL, "LONG")
field(MALM, 12)
field(INP, [1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048])
field(INDX, 0)
field(NELM, 1)
}
```
The INDX field selects which power of 2 to set the VAL field to. In previous
releases the INP field would have to have been pointed to a separate waveform
record that was initialized with the array values somehow at initialization
time.
### Synchronized Timestamps with TSEL=-2
Most Soft Channel input device support routines have supported fetching the
timestamp through the INP link along with the input data. However before now
there was no guarantee that the timestamp provided by a CA link came from the
same update as the data, since the two were read from the CA input buffer at
separate times without maintaining a lock on that buffer in between. This
shortcoming could be fixed as a result of the new link support code, which
allows code using a link to pass a subroutine to the link type which will be
run with the link locked. The subroutine may make multiple requests for
metadata from the link, but must not block.
### Extensible Link Types
A major new feature introduced with this release of EPICS Base is an
Extensible Link Type mechanism, also known as Link Support or JSON Link Types.
This addition permits new kinds of link I/O to be added to an IOC in a similar
manner to the other extension points already supported (e.g. record, device
and driver support).
A new link type must implement two related APIs, one for parsing the JSON
string which provides the link address and the other which implements the link
operations that get called at run-time to perform I/O. The link type is built
into the IOC by providing a new `link` entry in a DBD file.
#### New Link Types Added
This release contains two new JSON link types, `const` and `calc`:
* The `const` link type is almost equivalent to the old CONSTANT link type
with the updates described below to accept arrays and strings, except that
there is no need to wrap a scalar string constant inside array brackets since
a constant string will never be confused with a PV name.
* The `calc` link type allows CALC expressions to be used to combine
values from other JSON links to produce its value. Until additional JSON link
types are created though, the `calc` link type has little practical utility as
it can currently only fetch inputs from other `calc` links or from `const`
links.
```
field(INP, {calc:{expr:"A+B+1",
args:[5, # A
{const:6}] # B
}
}
)
```
The new link types are documented in a separate document that gets generated at build time and installed as `html/links.html`.
#### Device Support Addressing using `JSON_LINK`
The API to allow device support to use JSON addresses is currently
incomplete; developers are advised not to try creating device support that
specifies a `JSON_LINK` address type.
#### Support Routine Modifications for Extensible Link Types
For link fields in external record types and soft device support to be able
to use the new link types properly, various changes are required to utilize
the new Link Support API as defined in the dbLink.h header file and outlined
below. The existing built-in Database and Channel Access link types have been
altered to implement the link APIs, so will work properly after these
conversions:
* Make all calls to `recGblInitConstantLink()` unconditional on the link
type, i.e. change this code:
```C
if (prec->siml.type == CONSTANT) {
recGblInitConstantLink(&prec->siml, DBF_USHORT, &prec->simm);
}
```
into this:
```C
recGblInitConstantLink(&prec->siml, DBF_USHORT, &prec->simm);
```
Note that `recGblInitConstantLink()` still returns TRUE if the field was
successfully initialized from the link (implying the link is constant).
This change will work properly with all Base releases currently in use.
* Code that needs to identify a constant link should be modified to use
the new routine `dbLinkIsConstant()` instead, which returns TRUE for constant
or undefined links, FALSE for links whose `dbGetLink()` routine may return
different values on different calls. For example this:
```C
if (prec->dol.type != CONSTANT)
```
should become this:
```C
if (!dbLinkIsConstant(&prec->dol))
```
When the converted software is also required to build against older versions
of Base, this macro definition may be useful:
```C
#define dbLinkIsConstant(lnk) ((lnk)->type == CONSTANT)
```
* Any code that calls dbCa routines directly, or that explicitly checks if
a link has been resolved as a CA link using code such as
```C
if (prec->inp.type == CA_LINK)
```
will still compile and run, but will only work properly with the old CA link
type. To operate with the new extensible link types such code must be
modified to use the new generic routines defined in dbLink.h and should
never attempt to examine or modify data inside the link. After conversion
the above line would probably become:
```C
if (dbLinkIsVolatile(&prec->inp))
```
A volatile link is one like a Channel Access link which may disconnect and
reconnect without notice at runtime. Database links and constant links are
not volatile; unless their link address is changed they will always remain
in the same state they started in. For compatibility when building against
older versions of Base, this macro definition may be useful:
```C
#define dbLinkIsVolatile(lnk) ((lnk)->type == CA_LINK)
```
* The current connection state of a volatile link can be found using the
routine `dbIsLinkConnected()` which will only return TRUE for a volatile link
that is currently connected. Code using the older dbCa API returning this
information used to look like this:
```C
stat = dbCaIsLinkConnected(plink);
```
which should become:
```C
stat = dbIsLinkConnected(plink);
```
Similar changes should be made for calls to the other dbCa routines.
* A full example can be found by looking at the changes to the calcout
record type, which has been modified in this release to use the new dbLink
generic API.
### Constant Link Values
Previously a constant link (i.e. a link that did not point to another PV,
either locally or over Channel Access) was only able to provide a single
numeric value to a record initialization; any string given in a link field
that was not recognized as a number was treated as a PV name. In this release,
constant links can be expressed using JSON array syntax and may provide array
initialization of values containing integers, doubles or strings. An array
containing a single string value can also be used to initialize scalar
strings, so the stringin, stringout, lsi (long string input), lso (long string
output), printf, waveform, subArray and aai (analog array input) record types
and/or their soft device supports have been modified to support this.
Some examples of constant array and string initialized records are:
```
record(stringin, "const:string") {
field(INP, ["Not-a-PV-name"])
}
record(waveform, "const:longs") {
field(FTVL, LONG)
field(NELM, 10)
field(INP, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10])
}
record(aai, "const:doubles") {
field(FTVL, DOUBLE)
field(NELM, 10)
field(INP, [0, 1, 1.6e-19, 2.718, 3.141593])
}
record(aSub, "select") {
field(FTA, STRING)
field(NOA, 4)
field(INPA, ["Zero", "One", "Two", "Three"])
field(FTB, SHORT)
field(NOB, 1)
field(FTVA, STRING)
field(NOVA, 1)
field(SNAM, "select_asub")
}
```
Reminder: Link initialization with constant values normally only occurs at
record initialization time. The calcout and printf record types are the only
exceptions in the Base record types to this rule, so it is generally not
useful to change a const link value after iocInit.
### Database Parsing of "Relaxed JSON" Values
A database file can now provide a "relaxed JSON" value for a database field
value or an info tag. Only a few field types can currently accept such values,
but the capability is now available for use in other places in the future.
When writing to a JSON-capable field at run-time however, only strictly
compliant JSON may be used (the dbStaticLib parser rewrites relaxed JSON
values into strict JSON before passing them to the datase for interpretation,
where the strict rules must be followed).
"Relaxed JSON" was developed to maximize compatibility with the previous
database parser rules and reduce the number of double-quotes that would be
needed for strict JSON syntax. The parser does accept strict JSON too though,
which should be used when machine-generating database files. The differences
are:
* Strings containing only the characters `a-z A-Z 0-9 _ - + .` do not have to
be enclosed in double-quote characters.
* The above rule applies to map keys as well as to regular string values.
* The JSON keywords `null`, `true` and `false` (all lower-case) will be
recognized as keywords, so they must be quoted to use any of these single words
as a string.
* Comments may be used, introduced as usual by the `#` character and extending
to the end of the line.
A JSON field or info value is only enclosed in quotes when the value being
provided is a single string, and even here the quotes can be omitted in some
cases as described above. The following shows both correct and incorrect
excerpts from a database file:
```
record(ai, math:pi) {
field(INP, {const: 3.14159265358979}) # Correct
field(SIOL, "{const: 3.142857}") # Wrong
info(autosave, { # White-space and comments are allowed
fields:[DESC, SIMM],
pass0:[VAL]
}) # Correct
}
```
Note that the record, field and info-tag names do *not* accept JSON values, so
they follows the older bareword rules for quoting where the colon `:` and
several additional characters are legal in a bareword string. Only the value
(after the comma) is parsed as JSON. The autosave module has not been modified
to accept JSON syntax, the above is only an example of how JSON might be used.
### Echoless comments in iocsh
The way comments are parsed by the iocsh interpreter has changed. The
interpreter can be selectively disabled from echoing comments coming from a
script by starting those lines with `#-` rather than just `#`.
### Typed record support methods
The table of record support functions (rset methods for short) no longer has
entries of type `RECSUPFUN` (which says: any number and type of arguments).
Instead, rset methods are now typed by default. The `RECSUPFUN` typedef has
been deprecated and casts to it as well as using the untyped `struct rset`
will create compilation warnings.
Existing code (e.g. external record supports) will generate such warnings when
compiled against this version of Base, but it will work without changes.
For a conversion period, the new typed rset definitions are activated by
defining `USE_TYPED_RSET`, preferably by setting `USR_CPPFLAGS +=
-DUSE_TYPED_RSET` inside a Makefile. After activating the new typed rset in
this way and making the following changes, the result should still compile and
work properly against older versions of Base.
The first parameter of `init_record` and `process` has been changed to `struct
dbCommon *`. Record types that use `void*` here should be changed to use
`struct dbCommon*`, and cast the argument to their own `xxxRecord *`.
When compiled against this release, compiler warnings about incompatible types
for the method pointers should be taken seriously. When compiled against older
versions of base, such warnings are unavoidable.
Record types written in C++ need to take more drastic measures because of the
stricter type checking in C++. To remain compatible with older versions of
base you will need to use something like:
```
#include "epicsVersion.h"
#ifdef VERSION_INT
# if EPICS_VERSION_INT < VERSION_INT(3,16,0,2)
# define RECSUPFUN_CAST (RECSUPFUN)
# else
# define RECSUPFUN_CAST
# endif
#else
# define RECSUPFUN_CAST (RECSUPFUN)
#endif
```
and then replace `(RECSUPFUN)` with `RECSUPFUN_CAST` when initializing the
rset. Further changes might also be needed, e.g. to adapt `const`-ness of
method parameters.
-----
## Changes made between 3.15.3 and 3.16.0.1
### Build support for CapFast and dbst removed
The build rules associated with the CapFast-related tools `sch2edif` and
`e2db` and the database optimization tool `dbst` have been removed, along with
the `DB_OPT` build configuration variable.
### compressRecord buffering order
The compressRecord has a new field `BALG` which can select between FIFO
(append) and LIFO (prepend) ordering for insertion of new elements. FIFO
ordering is the default, matching the behviour of previous versions.
### Valgrind Instrumentation
Valgrind is a software debugging suite provided by many Linux distributions.
The header valgrind/valgrind.h is now included in, and installed by, Base.
When included by a C or C++ source file this header defines some macros which
expand to provide hints to the Valgrind runtime. These have no effect on
normal operation of the software, but when run using the valgrind tool they
can help to find memory leaks and buffer overflows. Suitable hints have been
added to several free-lists within libCom, including freeListLib, allowing
valgrind to provide more accurate information about the source of potential
leaks.
valgrind.h automatically disables itself when the build target is not
supported by the valgrind tool. It can also explicitly be disabled by defining
the macro `NVALGRIND`. See `src/libCom/Makefile` for a commented-out example.
As a matter of policy valgrind.h will never be included by any header file
installed by Base, so its use will remain purely an implementation detail
hidden from application software. Support modules which choose to use
valgrind.h are advised to do likewise.
### Database Multi-locking
The IOC record locking code has been re-written with an expanded API; global
locks are no longer required by the IOC database implementation.
The new API functions center around `dbScanLockMany()`, which behaves like
`dbScanLock()` applied to an arbitrary group of records. `dbLockerAlloc()` is
used to prepare a list or record pointers, then `dbScanLockMany()` is called.
When it returns, all of the records listed may be accessed (in any order) until
`dbScanUnlockMany()` is called.
The Application Developer's Guide has been updated to describe the API and
implementation is more detail.
Previously a global mutex `lockSetModifyLock` was locked and unlocked during
`dbScanLock()`, acting as a sequencing point for otherwise unrelated calls. The
new dbLock.c implementation does not include any global mutex in `dbScanLock()`
or `dbScanLockMany()`. Locking and unlocking of unrelated lock sets is now
completely concurrent.
### Generate Version Header
A Perl script and Makefile rules have been added to allow modules to generate
a C header file with a macro defined with an automatically updated identifier.
This is a VCS revision ID (Darcs, Git, Mercurial, Subversion, and Bazaar are
supported) or the date/time of the build if no VCS system is in use.
The makeBaseApp example template has been updated with a new device support
which makes this identifier visible via a lsi (long string input) record.
### epicsTime API return status
The epicsTime routines that used to return epicsTimeERROR now return a
specific `S_time_` status value, allowing the caller to discover the reason for
any failure. The identifier `epicsTimeERROR` is no longer defined, so any
references to it in source code will no longer compile. The identifier
epicsTimeOK still exists and has the value 0 as before, so most code that uses
these APIs can be changed in a way that is backwards-compatible with the
previous return status.
Time providers that have to return a status value and still need to be built
with earlier versions of Base can define the necessary status symbols like
this:
```
#include "epicsTime.h"
#ifndef M_time
/* S_time_... status values were not provided before Base 3.16 */
#define S_time_unsynchronized epicsTimeERROR
#define S_time_...whatever... epicsTimeERROR
#endif
```
### Refactoring of epicsReadline
The epicsReadline code has been reorganized to allow the commandline history
editor to be disabled at runtime. The `EPICS_COMMANDLINE_LIBRARY` build setting
still selects the preferred editor, but the new `IOCSH_HISTEDIT_DISABLE`
environment variable can be set at runtime to disable history editing and make
the IOC or other program use the basic editor instead. This is useful when
starting and controlling an IOC from another program through its stdin and
stdout streams since history editors often insert invisible escape codes into
the stdout stream, making it hard to parse.
### Callback subsystem API
Added a new macro `callbackGetPriority(prio, callback)` to the callback.h
header and removed the need for dbScan.c to reach into the internals of its
`CALLBACK` objects.

Some files were not shown because too many files have changed in this diff Show More