Compare commits

...

767 Commits

Author SHA1 Message Date
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
Michael Davidsaver
235f8ed2fb add db_field_log::mask
Allow filters to distingush DBE_PROPERTY
2021-04-05 10:31:25 -07:00
Michael Davidsaver
91b2b65c68 doc 2021-04-04 22:51:46 -07:00
Marcio Paduan Donadio
614961da17 iocsh: set PWD
Set the env variable PWD during libCom IOC shell function registration.
Change environment variable PWD when a user calls cd from the IOC shell
2021-04-04 12:26:07 -07:00
Kathryn Baker
dd09afc4e8 Addying Doxugen annotations for cvtFast.h and freeList.h 2021-04-04 11:21:44 -07:00
Michael Davidsaver
417821ddc0 fixups for DBCORE_API 2021-04-01 11:09:53 -07:00
Michael Davidsaver
0f428ea334 use DBCORE_API
git ls-files modules/database/src/ioc|egrep '\.[hc]p*$' | xargs sed -i \
 -e 's|epicsShareFunc|DBCORE_API|g' \
 -e 's|epicsShareClass|DBCORE_API|g' \
 -e 's|epicsShareExtern|DBCORE_API extern|g' \
 -e 's|epicsShareDef\s*||g' \
 -e 's|shareLib\.h|dbCoreAPI.h|g' \
 -e 's|epicsShareAPI|epicsStdCall|g' \
 -e '/#define\s*epicsExportSharedSymbols/d'
2021-04-01 10:57:19 -07:00
Michael Davidsaver
c829ca39d8 ci: enable overall test timeout 2021-04-01 10:20:47 -07:00
Michael Davidsaver
51cdfe9e8e ci: appveyor more recent mingw 2021-04-01 10:19:28 -07:00
Michael Davidsaver
6ed6dc11bb doc dbUnitTest.h 2021-04-01 10:19:14 -07:00
Andrew Johnson
0d2228b536 Recognize linux-ppc64 in EpicsHostArch.pl 2021-04-01 10:26:17 -05:00
Michael Davidsaver
3eeebb74cd Com: avoid intentional memory leak in epicsEnvSet
Switch default impl. to setenv/unsetenv
Switch WIN32 to use _putenv_s
On vxWorks putenv() is documented to make a copy.

log error, but never halt, if env (un)set not possible.

RTEMS <4.10 compat where unsetenv() returns void.
2021-03-29 10:55:30 -07:00
Michael Davidsaver
1bd041745b epicsEnvTest: ensure epicsEnvSet copies argument 2021-03-29 10:55:30 -07:00
Michael Davidsaver
e5aab6561c ci: remove travis debris 2021-03-26 11:48:57 -07:00
243807cbe5 updated submodules 2021-03-26 17:07:27 +01:00
Andrew Johnson
f9ea6a5bff CI config and git export tweaks
Add paths-ignore filters for GHA PRs
Stop .tools/ and .gitattributes commits from triggering CI
Exclude CI files from git exports
2021-03-25 14:46:28 -05: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
Michael Davidsaver
54e9d3f5d1 ci: github actions add mingw 2021-03-18 14:06:45 -07:00
Michael Davidsaver
7e01cdacac ci: GHA always upload tapfiles 2021-03-18 14:06:45 -07:00
Ziga Oven
746d21c71d Add usage messages 2021-03-18 14:06:45 -07:00
Oksana Ivashkevych
7eb7988e55 Add usage to miscIocRegister.c and dbStaticIocRegister.c 2021-03-14 16:30:28 -07:00
Matthew Pearson
5daf4fc932 epicsStdlib.h: add doxygen comments. 2021-03-14 16:30:28 -07:00
Matthew Pearson
ef878808ce errlog.h: added doxygen comments. 2021-03-14 16:30:28 -07:00
Dominic Oram
1fcbdad5e9 Adds doxygen annotations to epicsType.h 2021-03-14 16:30:28 -07:00
Michael Davidsaver
ca3ef9c61e dbUnitTest use dbChannel
Allows testing of server side filters
2021-03-12 09:16:31 -08:00
Andrew Johnson
e10b1d7660 Merge 3.15 branch into 7.0
Includes support for 'make inc'
2021-03-12 00:04:32 -06:00
Andrew Johnson
0c4ab7b24a Merge my 'make-inc-fix' branch into 3.15 2021-03-11 20:45:37 -06:00
Andrew Johnson
d831c2b384 Merge 'FreddieAkeroyd-use_epicsStrtod' into 3.15 2021-03-11 20:18:57 -06:00
Andrew Johnson
34d06b6e36 Merge branch 'gabrielfedel-fix_msi' into 3.15 2021-03-11 20:12:07 -06:00
Andrew Johnson
b2f7f4e173 Minor fixes in configure/RULES files 2021-03-11 18:13:44 -06:00
Michael Davidsaver
f30e9533c4 epicsLoadTest use INSTALL_LOCATION 2021-03-11 09:30:28 -08:00
Freddie Akeroyd
3c7fb7990f Use <epicsStdlib.h> 2021-03-11 15:08:00 +00:00
Andrew Johnson
c359b49aed Fix the 3.15 'make inc' build target
Now generates and installs dbd, header and html files.
No compilation involved/required.
2021-03-10 22:05:39 -06:00
Gabriel Fedel
0bc2a3e999 Fix variable type and cast on msi.cpp
This way the attribution of i to cmdind is a valid value.
2021-03-10 14:37:14 +01:00
Freddie Akeroyd
8e7702c8a5 Use epicsStrtod, remove some warnings 2021-03-10 11:29:45 +00:00
Gabriel Fedel
6ac10d43b1 Fix type comparision on msi.cpp
This change fix the comparision of different signedess (int and long
unsigned int).
2021-03-10 09:45:01 +01:00
Andrew Johnson
436a5e7fa2 Fix markdown link in Release Notes
Found by Kathryn Baker
2021-03-10 01:14:56 -06:00
Andrew Johnson
09820d799e Fix POD-generated HTML anchor IDs 2021-03-10 01:14:56 -06:00
Andrew Johnson
9184983cf0 Merge branch Ticket80_use_os_strtod_if_above_vs_2015 2021-03-09 18:27:18 -06:00
Michael Davidsaver
979445c8fe ci: add gcc-9 build 2021-03-09 09:26:44 -08:00
Jack Harper
30172226f9 whoops, MSVC 1900 not 1800 2021-03-09 13:13:16 +00:00
Jack Harper
2ea0994507 tests passing 2021-03-09 13:04:57 +00:00
Andrew Johnson
f571c5950b Modify DBD processing scripts to output Doxygen comments 2021-03-08 21:39:39 -06:00
Andrew Johnson
6786b2e7c2 Modify the Doxyfile to match earlier settings 2021-03-08 21:25:24 -06:00
Michael Davidsaver
504191441d Merge remote-tracking branch 'github/pr/99' into 7.0
* github/pr/99:
  fix an out-dated comment in the array filter code
  add macro dbfl_pfield to db_field_log.h and use it in dbGet
  fix in dbGet: decide use of db_field_log based on whether it has copy or not
  add macro dbfl_has_copy to db_field_log.h and use it in dbAccess.c
  refactor db_field_log and filters to get rid of dbfl_type_rec
  make it clearer what the result of wrapArrayIndices will be
2021-03-07 21:17:21 -08:00
Andrew Johnson
3ba778c08b documentation/Makefile tweaks 2021-03-07 21:35:07 -06:00
Andrew Johnson
1fbbae73de Modify documentation/Doxyfile to parse include directory
Excludes the include/pv and include/pva directories,
which are processed separately in their own modules.
2021-03-07 20:27:45 -06:00
Andrew Johnson
4baf7912e1 Tidying up in documentation directory 2021-03-07 20:23:19 -06:00
c949cb5c8c new license server name needed for cross compiler 2021-03-05 14:20:53 +01:00
Andrew Johnson
bbb4d86f78 Enable RTEMS testing in modules/database/test/std/link 2021-03-03 18:17:31 -06: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
Brendan Chandler
f41276bef8 epicPosicMutexInit: avoid calling with 0 which is platform dependent
Different platforms (RTEMS5) can define different values for
PTHREAD_MUTEX_DEFAULT, so we shouldn't pass 0 assuming its
PTHREAD_MUTEX_DEFAULT.
2021-03-02 22:44:56 -08:00
Andrew Johnson
f9e3e86401 Support VxWorks 6.9.x before taskWait() was added
We don't know exactly which version this was added in,
but it is present in 6.9.4.1 so use that.

Fixes lp: #1913699
2021-03-02 11:54:17 -06: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
Michael Davidsaver
3c46542630 posix: epicsMutexOsdShowAll check for PI support 2021-03-02 06:47:43 -08: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
Andrew Johnson
f8eb0be7a4 Update submodules after release 2021-02-28 21:39:28 -06:00
Andrew Johnson
ff5df5fbf3 Update version numbers after tagging 2021-02-28 20:21:41 -06:00
Andrew Johnson
7f142e03f5 Version number updates for 7.0.5 release
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 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 / Win2019 MSC-19 (push) Has been cancelled
Base / Win2019 MSC-19, static (push) Has been cancelled
2021-02-28 20:06:40 -06:00
Andrew Johnson
bb7b754730 Documentation updates for release
Mostly version numbers, a few text and formatting changes.
2021-02-28 20:04:16 -06:00
Andrew Johnson
a9ff175cf0 Replace "UNRELEASED" in epicsString.h 2021-02-28 17:37:40 -06:00
Andrew Johnson
458c0af4e9 Checkout submodules at tagged versions for 7.0.5 2021-02-28 17:36:25 -06:00
Andrew Johnson
eacee1b548 Merge Krisztian Loki's issue_97 branch into 7.0 2021-02-28 15:40:11 -06:00
Andrew Johnson
6754404d0f Replace magic "2" with macro AAI_DEVINIT_PASS1 2021-02-28 15:02:27 -06:00
Andrew Johnson
6734918e6e Release notes and aai documentation updates 2021-02-27 22:19:48 -06:00
Andrew Johnson
1c566e2110 Modify aai to support pass-1 device initialization
The Soft Channel device support requests pass-1 initialization.
It no longer needs to initialize the INP link or allocate the
array buffer itself, these are taken care of elsewhere.

The record code uses PACT to remember that the device must be
initialized again in pass 1.
2021-02-27 22:08:50 -06:00
Andrew Johnson
7f878d3074 Merge fix-1908305 branch into 7.0 2021-02-27 17:20:30 -06:00
Andrew Johnson
12ab69402a Improve the message from a DBD field-count mismatch 2021-02-27 17:15:47 -06:00
Andrew Johnson
0926f7db0f Release Notes updates
Added notes for the Windows Monotonic fix, and Apple arm64 support.
Expanded and edited some other notes.
2021-02-27 17:15:35 -06:00
Andrew Johnson
08eaea64d2 Fix up comments & messages, add Release Notes 2021-02-27 16:48:55 -06:00
Andrew Johnson
bee00658ae Limit auto-declaration of record types to regRecDevDrv only
Allowing this while expanding DBD files for IOCs can insert other
device supports before of the Base "Soft Channel" ones, making the
other type the default. Adds a note that DBD file order matters.

Fixes lp: #1908305
2021-02-27 16:48:55 -06:00
Michael Davidsaver
e881cb15c4 registerAllRecordDeviceDrivers() handle function 2021-02-26 07:42:17 -08:00
Krisztián Löki
4a0f488657 Fixed db_post_events to not use bptr 2021-02-25 16:13:48 +01:00
Krisztián Löki
2340c6e6c1 Allow changing the BPTR field
This fixes github issue #97:
Reading into an aai record from a compress or histogram or subArray record
could cause a segfault if the aai record was initialized before the
linked one.
2021-02-25 14:54:07 +01:00
Michael Davidsaver
5593103c11 posix: epicsMutexShowAll() print if PI mutex are used
Confirms that pthread_mutex_t are actually being created
with PTHREAD_PRIO_INHERIT, ie. if both libc and kernel
support is present.
2021-02-21 20:01:45 -08:00
5a8b6e4111 posix: PI for epicsMutex, epicsEvent etc.
Enable priority-inheritance for primitives based on pthread_mutex_t.

Based on work by Till Straumann <till.straumann@psi.ch>
2021-02-21 20:01:45 -08:00
Michael Davidsaver
c4348dc6e0 ci: fix gcc 4.8 builds 2021-02-21 11:16:20 -08:00
Andrew Johnson
9d0597fc15 Fix MS compiler issue that I introduced into Freddie's code
Plus a little more code simplification.
2021-02-21 12:04:07 -06:00
Andrew Johnson
93208af61c Merged Freddie Akeroyd's fix_win32_monotonic_time branch 2021-02-20 17:36:21 -06:00
Andrew Johnson
9c23247c04 Windows: Move cxx warning flag to the right CONFIG file 2021-02-20 17:02:09 -06:00
Michael Davidsaver
552b2d1766 dbConstAddLink bounds check dbrType
cf. 6c914d19c3
2021-02-19 15:53:32 -08:00
Andrew Johnson
1755a46bfe Merge Han's darwin-aarch64 branch into 7.0 2021-02-19 17:36:45 -06:00
Andrew Johnson
36d0fbd7be Another c89 compat fix 2021-02-08 13:34:01 -06:00
Michael Davidsaver
30e1431fb4 c89 compat 2021-02-08 09:43:51 -08:00
Michael Davidsaver
3f209efa3c release notes 2021-02-08 09:23:27 -08:00
Michael Davidsaver
2c1c35268e db: Suggest DBF_MENU values on parser error 2021-02-08 09:22:27 -08:00
Michael Davidsaver
745c3f552e Com: add epicsStrSimilarity() 2021-02-08 09:22:27 -08:00
Michael Davidsaver
27918cb7a1 improve error message from dbPutString() for DBF_MENU/DEVICE 2021-02-08 09:22:27 -08:00
Michael Davidsaver
8723d4d9cb include database S_* in error string table 2021-02-08 09:22:27 -08:00
Michael Ritzert
410921b5ef Use getifaddrs instead of SIOCGIFCONF.
The old code is preserved in osdNetIfConf.c, which is used by the default
platform directory.

Platforms that support getifaddrs use the new code from osdNetIfAddrs.c.
2021-02-06 08:27:21 -08:00
Jeong Han Lee
d3e96c4c2b fixed a typo in CONFIG.Common.darwin-aarch64 2021-02-05 17:02:54 -08:00
Michael Davidsaver
43bd5ee1c2 Com: always skip SOCK_CLOEXEC for RTEMS and vxWorks 2021-02-05 10:32:47 -08:00
Jeong Han Lee
34a0b387b0 add dawrin-aarch64 (arm64) Host Arch 2021-02-02 17:26:12 -08:00
Andrew Johnson
78d685688c Add VALID_BUILDS support for "Command" 2021-02-02 16:06:42 -06:00
Michael Davidsaver
cf3173b6f4 posix: use SOCK_CLOEXEC and accept4()
If available, ensure O_CLOEXEC is set atomically.
Continue to F_SETFD as well (paranoia).

Available at least on Linux, freebsd, and RTEMS 5 w/ libbsd
2021-01-29 08:45:44 -08:00
Michael Davidsaver
c95cbe4a0f ci: re-add .appveyor.yml
Re-introduce default config file for use with repositories
other than the main ones.
2021-01-27 09:19:58 -08:00
Michael Davidsaver
1e471832e9 consolidate osiFileName.h
Don't really need 10 files for this
2021-01-27 09:19:13 -08:00
Ralph Lange
40d9a21c0c Merge 3.15 into 7.0 - build system fixes
- improve silencing the build
- assemblies fix for Windows
2021-01-26 17:44:24 +01:00
Ralph Lange
dd9f38d711 Build: Fix spurious failures with SNIPPETS in Windows
Under some combinations of shell / Make version / Windows version,
Windows make was giving up searching for a target "../"
2021-01-26 17:14:00 +01:00
Andrew Johnson
7050bded31 Update MSVC paths in Windows startup files 2021-01-22 12:32:33 -06:00
Michael Davidsaver
c19605232a epicsAtomicDefault.h typo 2021-01-18 08:23:54 -08:00
Ben Franksen
236bb2c671 fix an out-dated comment in the array filter code 2021-01-15 15:13:47 +01:00
Ben Franksen
372e937717 add macro dbfl_pfield to db_field_log.h and use it in dbGet 2021-01-14 17:45:25 +01:00
Ben Franksen
56f05d722d fix in dbGet: decide use of db_field_log based on whether it has copy or not 2021-01-14 17:40:37 +01:00
Ben Franksen
85822f3051 add macro dbfl_has_copy to db_field_log.h and use it in dbAccess.c
It encapsulates the slightly tricky logic to decide whether a pointer
to a db_field_log has ownership of the data or not.
2021-01-12 17:49:10 +01:00
Ben Franksen
27fe3e4468 refactor db_field_log and filters to get rid of dbfl_type_rec
This refactor simplifies and streamlines the code associated with server
side filters. Apart from immediate benefits (clearer code, less duplication)
it is also hoped that this will make it easier to add write filters.

The data pointer dbfl_ref.field can now either point to a copy owned by a
filter, or it can point to the original data owned by a record. In the
latter case, the dbfl_ref.dtor is NULL.

The dbExtractArray* functions are unified to the single function
dbExtractArray and stripped of conversion functionality. This is redundant
because we always call dbGet after applying filters, which takes care of
conversion. Accordingly, dbChannelMakeArrayCopy is now obsolete and its
single use (in the ts filter) replaced with dbExtractArray. Instead, we add
the helper function dbChannelGetArrayInfo to wrap the common boilerplate
around calls to the get_array_info method, used in both arr.c and ts.c.
2021-01-12 17:49:10 +01:00
Ben Franksen
4ab9808180 make it clearer what the result of wrapArrayIndices will be 2021-01-12 15:56:32 +01:00
Andrew Johnson
4e81eaa7e8 Update pvAccess module (caProvider) 2021-01-05 21:42:59 -06:00
Andrew Johnson
99852c6504 Merge JSON5 support into 7.0 2021-01-05 21:39:15 -06:00
Michael Ritzert
a9e3fa74aa FTBFS on FreeBSD 12 2021-01-05 08:56:57 -08:00
Andrew Johnson
d997690aa5 Build: Fix tests for the 'make -s' flag
'make -j2' or more adds an 's' to MFLAGS in "--jobserver-fds".
This is the correct way to do the check.
2020-12-30 13:08:48 -06:00
Andrew Johnson
326ef00bc9 Merge 3.15 into 7.0 - GHA tapfiles Artifact 2020-12-29 15:42:44 -06:00
Andrew Johnson
a043599e18 GHA: Save .tap files as an artifact 2020-12-28 18:04:06 -06:00
Andrew Johnson
02be10069e Make the CI commit-ignore patterns match 2020-12-28 17:13:45 -06:00
Andrew Johnson
4f14e9e674 Merge up Appveyor changes from 3.15 into 7.0 2020-12-28 16:22:15 -06:00
Andrew Johnson
ff4317d05a Make .appveyor.yml into a branch-specific filename
The name should match the Appveyor account that builds the branch;
From a suggestion by Michael.
2020-12-28 15:59:12 -06:00
Andrew Johnson
63919e199c Fix menuPriority filename in RecordReference index 2020-12-28 13:40:35 -06:00
Andrew Johnson
f775e0b8f6 Merge 3.15 branch into 7.0
Adjust updated test result displays for submodules
2020-12-23 16:18:21 -06:00
Andrew Johnson
518bab9675 Clean up .appveyor.yml
Whitelist the tagged versions too
Exclude MinGW debug builds since (unlike the VS builds) they use
the same system libraries as the non-debug builds.
We aren't building vs2008 any more anyway.
2020-12-23 11:56:32 -06:00
Andrew Johnson
a8036d7f34 posix/osdThread: Use "Once" versions properly
Functions used before epicsThreadInit() returns must call the
checkStatusOnceQuit() version to avoid recursion from errlogInit()
2020-12-23 11:53:05 -06:00
Andrew Johnson
436ce4526b Appveyor: Update CMP from mingw => gcc 2020-12-21 15:49:52 -06:00
Michael Davidsaver
b49f06916e gcc -Werror-implicit-function-declaration
Treat implicit declarations as an error in GCC builds.
2020-12-21 07:38:24 -08:00
Andrew Johnson
9ba0081a82 Change the Appveyor steps to call the new cue.py script 2020-12-18 15:35:18 -06:00
Andrew Johnson
c60056d4d6 Reconfigure and tidy up the testFailure stuff
Many variables renamed.
Generated files are now named .log for .gitignore
Actions are now defined in CONFIG_BASE variables.
2020-12-18 15:32:46 -06:00
Andrew Johnson
68c056f2f8 Fix makeTestfile.pl to report test failures properly
If a test program reports test failures, the Perl wrapper
must return the same error status. On Windows where we use
system() instead of exec() that needs some value fiddling.
2020-12-18 10:20:31 -06:00
Andrew Johnson
48a6d2f781 GH-Actions: Undo my workflow name change
Changing it also modified the names of all previous builds.
2020-12-17 20:59:56 -06:00
Andrew Johnson
79bb9e000b GH-Actions: Tweaks 2020-12-17 20:39:08 -06:00
Andrew Johnson
c404eb3f83 GH-Actions: Add short names for each job 2020-12-17 20:38:06 -06:00
Andrew Johnson
7beb32e209 Extend testFailures.pl to list the failed test programs
Creates a file .taps-failed in each O.<arch> directory,
appending the name of each tapfile that has failures to it.
The testFailures script now reads the .taps-failed files
from each directory listed in .tests-failed and nicely
displays the failing tests listed in each.
2020-12-17 18:34:24 -06:00
Andrew Johnson
a365de2419 Fix return value of epicsUnitTest::testDone()
Wasn't properly returning a non-zero exit status
when HARNESS_ACTIVE was set.
2020-12-17 18:21:07 -06:00
Andrew Johnson
035ffdf045 Additions to .gitignore 2020-12-08 10:11:55 -06:00
Andrew Johnson
5f0d52cd5c errSymLib Fix from Ivo Hanak
Fixes lp: #1907077
2020-12-08 10:10:03 -06:00
Ralph Lange
2035fc641a PCAS: fix scope of tsDLList when used in other classes
Use ::tsDLList to avoid resolving to privately inherited
name (which was breaking builds on newer clang compilers)
2020-12-07 10:07:23 +01:00
Ralph Lange
d25c9a74ad ci: travis-ci -> github actions 2020-12-06 15:12:28 +01:00
Michael Davidsaver
e20151439b ci: use ci-core-dumper 2020-12-03 08:33:57 -08:00
Michael Davidsaver
4e055610b7 epicsUnitTest: SetErrorMode() 2020-12-03 08:33:57 -08:00
Andrew Johnson
db027d4a7f makeTestfile SetErrorMode() 2020-12-02 11:43:39 -08:00
Michael Davidsaver
17ee7dd6c7 update PVA modules 2020-12-02 10:44:21 -08:00
Michael Davidsaver
dc99d63df8 C89 compat
Present for Dirk
2020-11-20 17:25:27 -08:00
Michael Davidsaver
53897d4a82 ci: need apt-get update 2020-11-20 17:23:43 -08:00
Michael Davidsaver
d24a297304 osiSockTest: fix timeout 2020-11-19 13:07:05 -08:00
Michael Davidsaver
761edcae15 travis-ci -> github actions 2020-11-18 11:11:37 -08:00
Michael Davidsaver
b890d584bc softIoc: avoid extra iocInit() 2020-11-18 11:11:37 -08:00
Michael Davidsaver
db2f7d8b92 use auto_ptr or unique_ptr 2020-11-18 10:54:44 -08:00
Michael Davidsaver
d83e3b5de1 osiSockTest: probe for !EPERM 2020-11-18 10:54:44 -08:00
Michael Davidsaver
cbac1c54f5 test/ioc/db: xRecord handle alarms 2020-11-18 10:54:44 -08:00
Michael Davidsaver
2cfbf5c1c9 fix release notes 2020-11-18 10:54:10 -08:00
Michael Davidsaver
d108a1ff11 Merge remote-tracking branch 'lp-zimoch/dbChannelForDBLinks' into 7.0
* lp-zimoch/dbChannelForDBLinks: (43 commits)
  add tests for empty array filter results
  Fix linkFilterTest, move Release Notes to the right place
  do not handle empty arrays (undefined behavior)
  Revert "new error code for empty arrays"
  test code beautification
  make db_init_event_freelists private
  remove unnecessary check
  remove needless pointer access
  new error code for empty arrays
  clean up code structure
  Release notes updated
  set number of planned link filter tests
  removed unnecessary recGblSetSevr call
  re-order link filter tests to alternate between success and failure
  unused variable removed
  Revert "fix crash in PINI: use local db_field_log"
  initialize free lists when starting dbChannel
  db link filter tests added
  bugfix: dbGet should not crash because of empty array requests
  fix crash in PINI: use local db_field_log
  ...

# Conflicts:
#	documentation/RELEASE_NOTES.md
2020-11-18 10:53:50 -08:00
Michael Davidsaver
0a65707383 Merge remote-tracking branch 'githubbhill/timestamp-before-outlink' into 7.0
* githubbhill/timestamp-before-outlink:
  Update RELEASE_NOTES for timestamp-before-outlink
  Patch record processing routines to update timestamp before processing outlinks
2020-11-18 10:48:57 -08:00
9048e998fb add tests for empty array filter results 2020-11-17 15:22:40 +01:00
Andrew Johnson
7632c355ee dbpr: Catch buffer overflow from long link strings.
Fixes lp: #1776141

Currently this just truncates when we hit the end of the buffer,
a better solution is warranted.
2020-11-16 14:25:51 -05: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
Andrew Johnson
4730e14cc7 Document the PINI, POST and PRIO menus 2020-11-13 18:17:47 -06: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
Ralph Lange
c969f05f51 AppVeyor: explicitly set default runner image (VS2015) 2020-11-03 12:04:57 +01:00
Ralph Lange
8fd36d8eef AppVeyor: whitelist 7.0 branch
The AppVeyor epics-base-7 project is supposed to pull the .appveyor.yml from this branch to only build commits and pull requests from/for 7.0.
2020-11-03 10:02:34 +01:00
Ralph Lange
3947b9a061 Appveyor: whitelist 3.15 branch
- DO NOT UPMERGE TO 7.0

The AppVeyor epics-base-3 project is supposed to pull the .appveyor.yml from this branch to only build commits from 3.15.
2020-11-03 09:41:45 +01:00
Andrew Johnson
cf56a0e08e Fix linkFilterTest, move Release Notes to the right place 2020-10-30 17:43:03 -05:00
6b5abf76c8 do not handle empty arrays (undefined behavior) 2020-10-30 17:07:09 -05:00
3b3261c877 Revert "new error code for empty arrays"
This reverts commit d51b5513fda5ca7c6058990396d315cfff81cbfe.

Conflicts:
	modules/database/src/ioc/db/dbAccess.c
	modules/database/src/ioc/db/dbDbLink.c
2020-10-30 17:07:09 -05:00
30d8febb0b test code beautification 2020-10-30 17:07:09 -05:00
4ad98d5b4f make db_init_event_freelists private 2020-10-30 17:07:09 -05:00
14b9ac3277 remove unnecessary check 2020-10-30 17:07:09 -05:00
275c4c7cf4 remove needless pointer access 2020-10-30 17:07:09 -05:00
5d808b7c02 new error code for empty arrays 2020-10-30 17:07:09 -05:00
afdf34b791 clean up code structure 2020-10-30 17:07:09 -05:00
ea05bab26a Release notes updated 2020-10-30 17:07:09 -05:00
edb8f1a5df set number of planned link filter tests 2020-10-30 17:07:09 -05:00
8f5be5f0ad removed unnecessary recGblSetSevr call 2020-10-30 17:07:09 -05:00
bc34526bcb re-order link filter tests to alternate between success and failure 2020-10-30 17:07:09 -05:00
0ee36388cb unused variable removed 2020-10-30 17:07:09 -05:00
c51c83b1d5 Revert "fix crash in PINI: use local db_field_log"
This reverts commit a590151accb1d187562c515a48e013244dd98a45.

Conflicts:
	modules/database/src/ioc/db/dbDbLink.c
2020-10-30 17:07:09 -05:00
d0ef45acc3 initialize free lists when starting dbChannel 2020-10-30 17:07:09 -05:00
7ab56a68d1 db link filter tests added 2020-10-30 17:07:09 -05:00
39c8d5619a bugfix: dbGet should not crash because of empty array requests 2020-10-30 17:07:09 -05:00
e0dfb6cff8 fix crash in PINI: use local db_field_log 2020-10-30 17:07:09 -05:00
3627c38a57 don't crash when filter results in 0 elements 2020-10-30 17:07:09 -05:00
17a8dbc2d7 apply filters in dbDbGetValue 2020-10-30 17:07:09 -05:00
b1f445925d use dbChannel in link instead of DBADDR 2020-10-30 17:07:09 -05:00
Andrew Johnson
297f04bddc Make dbgf display something for an empty array
Also significantly expands on Dirk's Release Notes entries.
2020-10-30 13:37:50 -05:00
Andrew Johnson
a7bf59079f Merge Dirk Zimoch's fix_zero_size_arrays branch 2020-10-29 17:07:35 -05:00
Andrew Johnson
baced535e3 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-10-28 23:55:24 -05:00
Andrew Johnson
be7c6a0a0a Build: Do clean before uninstall actions (if requested) 2020-10-28 23:26:25 -05:00
Andrew Johnson
14476391c0 Warn about NULL dbevEventUserFreeList 2020-10-28 23:25:02 -05:00
Andrew Johnson
223b292c33 Merge fix-wrong-order-phas fixes from 3.15 branch 2020-10-22 10:31:52 -05:00
Andrew Johnson
68121ec907 Merged Dirk's fix_one_element_input_link_arrays branch 2020-10-22 10:14:10 -05:00
Martin Konrad
228ad79b7a Simplify addToList() function 2020-10-13 18:38:17 -04:00
Martin Konrad
bbc0a56d2b Fix wrong PHAS order
Records with lower PHAS value than any previously loaded records
were inserted at the end of the list rather than at the beginning.
This fixes lp: #1899697. Also fixes a proto-bug in that the second
argument to the previously used ellAdd() call assumed that
offsetof(scan_element, node)==0.

Thanks to Bruno Martins for providing this patch.
2020-10-13 18:34:39 -04:00
Andrew Johnson
9726b9efc9 aSubRecord: Fix OVLA..OVLU POD field list 2020-10-12 15:34:43 -05:00
Bruce Hill
f44f4ac7ad Update RELEASE_NOTES for timestamp-before-outlink 2020-10-07 06:47:44 -07:00
Bruce Hill
f1e83b22f2 Patch record processing routines to update timestamp before processing outlinks 2020-10-07 06:47:44 -07:00
Freddie Akeroyd
cdc627a15c Use native Windows type for perfCounterOffset 2020-10-04 01:20:44 +01:00
Freddie Akeroyd
8a90688880 Make returned value relative to IOC boot time to improve accuracy 2020-10-04 00:20:11 +01:00
Freddie Akeroyd
bbdd9392fe Call cantProceed() if performance counter is unavailable 2020-09-27 00:42:20 +01:00
Freddie Akeroyd
fe35e6e703 Remove use of GetTickCount() - only use performance counter 2020-09-25 20:59:20 +01:00
Gabriel Fedel
3e891a12ff Fix asub documentation: alarm happens when retunr status is < 0 2020-09-23 09:36:36 +02:00
Freddie Akeroyd
f8a6735691 Print warning if using GetTickCount() 2020-09-19 00:53:05 +01:00
Freddie Akeroyd
dc579b78db * Fix and enable usage of QueryPerformanceCounter()
* Use GetTickCount64() as fallback on Windows Vista and above
2020-09-19 00:07:06 +01:00
Andrew Johnson
22ee229aca Add support for linux-aarch64 native builds 2020-09-16 00:45:19 -05:00
Andrew Johnson
1ae3bd6c70 Add warnings to CONFIG_SITE files that can't override gnuCommon
Move the clang and '-g' suggestions to the right places
2020-09-08 16:57:48 -05:00
Ralph Lange
cbba08b1ef Merge pull request #88 from HiteshDhola/patch-1
Update README.md
2020-08-26 10:17:42 +02:00
Hitesh Dhola
53044571fb Update README.md
Pointing out few err in the release version. As this is the first document anyone would Read. 

-Corrected released version. Removed old references.
PS : I also use this file to restore my "base" folder with older original version when new EPICS version is released. This way I can keep all of my compiled version isolated.
2020-08-26 12:47:19 +05:30
Ralph Lange
f8df3473ab Redo d3d40689 that was lost in upmerging 2020-08-25 16:06:39 +02:00
Ralph Lange
e8bee54531 Redo 97b29129/0fbfc741 that was lost in upmerging 2020-08-25 16:04:04 +02:00
Michael Davidsaver
0cae0db98b compat IPPORT_USERRESERVED
musl libc doesn't define IPPORT_USERRESERVED
2020-08-22 07:51:33 -07:00
Michael Davidsaver
df6981ceae doc 2020-08-22 07:51:33 -07:00
Michael Davidsaver
11984633dc conditional test of registerAllRecordDeviceDrivers() 2020-08-22 07:50:40 -07:00
Michael Davidsaver
051ba20fe1 fix registerAllRecordDeviceDrivers() prints 2020-08-22 07:50:40 -07:00
Michael Davidsaver
d6cf29e942 add HAS_registerAllRecordDeviceDrivers 2020-08-22 07:50:40 -07:00
Michael Davidsaver
bdd41cca13 move test of registerAllRecordDeviceDrivers() 2020-08-22 07:50:40 -07:00
Michael Davidsaver
e40970bd5e rename dynamic_registerRecordDeviceDriver -> registerAllRecordDeviceDrivers 2020-08-22 07:50:40 -07:00
Michael Davidsaver
9e3d5d52ab iocshRegisterVariable() avoid spurious redefinition warning
Compare the contents, not the container.
2020-08-22 07:50:40 -07:00
Michael Davidsaver
2c389a90d1 test dynamic_registerRecordDeviceDriver() 2020-08-22 07:50:40 -07:00
Michael Davidsaver
8d98387245 add dynamic_registerRecordDeviceDriver()
Use epicsFindSymbol() to build a dynamic and idempotent equivalent
to the code generated by registerRecordDeviceDriver.pl

Also add runRegistrarOnce() to prevent registrars
from running multiple times, except from unittest code.
2020-08-22 07:50:40 -07:00
Andrew Johnson
b36e5262c7 const init a char array from a string value 2020-08-21 17:59:46 -05:00
Andrew Johnson
79d7ac9315 Support undefine in RELEASE files 2020-08-21 16:30:06 -05:00
Andrew Johnson
03c4fe8a8d Merge Record ref updates from 3.15 into 7.0 2020-08-21 15:47:53 -05:00
Andrew Johnson
ad3728d00d Edits to the Record Ref index page 2020-08-21 15:43:48 -05:00
Michael Davidsaver
c465354c67 Set next development version 2020-08-14 13:25:40 -07:00
Michael Davidsaver
4e84f36faf Update version numbers for release 2020-08-14 12:56:39 -07:00
Matic Pogacnik
5b37663bcb Check if input string to aToIPAddr is null 2020-08-14 10:04:56 -07:00
Andrew Johnson
a808e3c790 Document ARM architecture adjustments 2020-08-12 17:39:07 -05:00
Andrew Johnson
0743aabaad Remove linux-arm_eb and linux-arm_el targets 2020-08-12 13:46:35 -05:00
Andrew Johnson
0035ca1846 Add cross-builds for linux-aarch64 2020-08-12 13:46:35 -05:00
Andrew Johnson
d7434eadc3 printf record: Document ll format modifier 2020-08-12 13:25:58 -05:00
Andrew Johnson
5f5cc85e28 Release Notes for json5 changes 2020-08-09 00:35:52 -05:00
Andrew Johnson
7cc246afc1 Modify database tests to use JSON5
(except for the tests that check parsing).
Remove escaped double-quotes in map keys where possible.
Replace escaped double-quotes with single quotes.
2020-08-09 00:33:07 -05:00
Andrew Johnson
75b89b40bf Support single-quoted strings in dbStatic JSON5 values
Teach lexer to recognize them.
Strip leading & trailing quotes from string values.
Add some tests.
2020-08-09 00:33:07 -05:00
Andrew Johnson
b34d3c83fc Add support for hex escapes to the dbStatic lexer
Only translate escaped chars that are inside a jsonSTRING value.
2020-08-09 00:33:07 -05:00
Andrew Johnson
c1152f94fd epicsString: Remove support for Octal character escapes \nnn
These changes to the functions epicsStrnRawFromEscaped() and
epicsStrnEscapedFromRaw() were prompted by the addition of JSON5
support to the dbStatic parser.

 * \0 now represents a zero byte
 * Unprintable characters are now escaped in hex

Tests for the octal escapes have been removed.
2020-08-09 00:33:07 -05:00
Andrew Johnson
8c9e42d15e Fixed the response of epicsStrnRawFromEscaped() to numeric overflows
\x only takes 2 hex digits now, and the octal parser ignores a 3rd
digit if it would take the value over 0xff:
    "\400"  => ' ' then '0'
    "\x088" => '\b' then '8'

With additional tests.
2020-08-09 00:33:07 -05:00
Andrew Johnson
0c800d4428 JSON5 in dbStatic: Update bare-word JSON keys
Our bare-word character set is wider than JSON5's. Quote any
keys containing the extra characters so YAJL can parse them,
but don't quote keys unnecessarily.

Tests for this behavior are in dbStaticTest.db

Adjust the other tests that read links parsed by the dbStatic
parser that used bareword keys, which are no longer quoted.
2020-08-09 00:33:07 -05:00
Andrew Johnson
0fca5fc8a9 JSON5 in dbStatic: Lexer support for NaN and Infinity
The JSON5 spec requires exact capitalization of these strings.
Other numeric parsers such as strtod() are usually more lenient.
2020-08-09 00:33:07 -05:00
Andrew Johnson
fe177e40fd JSON5 in dbStatic: Add lexer support for hex integers
dbLex.l accepts hex notation in JSON numbers.
Tested in dbStaticTest.db as before.
2020-08-09 00:33:07 -05:00
Andrew Johnson
fa4af8b27d JSON5 in dbStatic: Modify lexer's number support
dbLex.l acceps a leading or trailing decimal point with float/double
values and an explicit leading + on all numbers.
Tested in dbStaticTest.db but only passing tests.
2020-08-09 00:33:07 -05:00
Andrew Johnson
980711589a database/test: Give xRecord fields of all numeric types
Extend dbStaticTest to check dbVerify() with all types.
2020-08-09 00:33:07 -05:00
Andrew Johnson
b2ef47573c Drop TODOs from regression tests, hex now works in array values 2020-08-09 00:33:07 -05:00
Andrew Johnson
b0d78921fd Final changes to YAJL for use in Base
* Bump the YAJL version number
* Define a HAS_JSON5 macro
* Set yajl_allow_json5 by default, fixing yajl_test and API comments
2020-08-09 00:33:07 -05:00
Andrew Johnson
c00f638f7e yajl: Add yajl_gen_reset() routine
For some reason this never got added with the rest of the generator.
2020-08-09 00:33:07 -05:00
Andrew Johnson
975e9ec553 Doxygen text and markup fixes and updates 2020-08-09 00:33:07 -05:00
Andrew Johnson
de2de5e2fd yajl: Clean up the formatting of some C macros 2020-08-09 00:33:07 -05:00
Andrew Johnson
a8e0de043c Support for 'single-quoted strings'
Also adds missing character flag VIC for 'r'.
The a5_spec_example test was copied from the JSON5 spec.
2020-08-09 00:33:07 -05:00
Andrew Johnson
549d6f67e3 YAJL support for JSON5 \xXX hex escapes in strings, with tests
Teach the lexer/parser to recognize and decode them in JSON5 mode.
Teach the encoder to use them in JSON5 mode.
Add another error message for bad hex digits.
Test cases to show they work, and that the bad-digit check fires.
2020-08-09 00:33:07 -05:00
Andrew Johnson
55f4e55383 Support for JSON5 character escapes in strings
Any character other than the digits 1-9 may be preceded by a
reverse solidus '\', and unless the combination has an explicitly
defined expansion the character is included without the solidus.
JSON5 adds \', \0 and \v to the set of defined escapes, and an
escaped newline is omitted from a string.

In the test case Perl uses \13 instead of \v in the output
but it is the correct character (13 octal = 11 decimal = '\v').
2020-08-09 00:33:07 -05:00
Andrew Johnson
e2256d0663 Accept unquoted identifiers as map keys
Adds another lexer entry point for lexing map keys only,
adjust parser to use this instead of the general lexer.
Also defines another lexer token for internal use only.
2020-08-09 00:33:07 -05:00
Andrew Johnson
88e0ced03e JSON5 support for generating unquoted map keys
Added a new routine to yajl_encode.c that validates bare identifiers.
Use this in yajl_gen_string() to avoid quoting keys we don't have to.
2020-08-09 00:33:07 -05:00
Andrew Johnson
baaf50c6d2 Add yajl_gen_json5 option and generator support for special numbers
When this flag is set, the yajl_gen_double() routine can output
the values NaN, -Infinity and +Infinity.
2020-08-09 00:33:07 -05:00
Andrew Johnson
97b8df6912 Added JSON5 support for parsing special numbers
NaN and both Infinities, with tests.
Special handling was added to yajl_test since different OSs don't
always generate the same output for special numbers (nan/NaN/...).
2020-08-09 00:33:07 -05:00
Andrew Johnson
98a358437f Add JSON5 support for hexadecimal integers
With tests for YAJL.

Note yajl_parse_integer still can't handle LLONG_MIN in base 10 or 16.
2020-08-09 00:33:07 -05:00
Andrew Johnson
00ac15cec5 Turning on JSON5 also enables comments
Includes the simple test case.
2020-08-09 00:33:07 -05:00
Andrew Johnson
456e774d85 JSON5: Modified lexer for some number support
If configured for JSON5 the lexer now allows a leading or trailing
decimal point on doubles, and an explicit leading + sign on integers
or double numbers.

Includes test cases.
2020-08-09 00:33:07 -05:00
Andrew Johnson
91c5b2fee2 Trailing commas now require a json5 parser
Modifies the yajl test case to add the -5 option
2020-08-09 00:33:06 -05:00
Andrew Johnson
ae604b2a55 Start of JSON5 support
Added yajl_allow_json5 config flag, pass it around.
Added -5 option to yajl_test and yajlTestConverter.pl
2020-08-09 00:33:06 -05:00
Andrew Johnson
d381a936b5 Fix for yajl#188 potential UB
Apparently it is UB to use an enum in va_start()
2020-08-09 00:33:06 -05:00
Andrew Johnson
e542a22631 Fix Darwin version of epicsMonotonicResolution() 2020-08-04 16:22:03 -05:00
Andrew Johnson
97edcfc289 simmTest.c: Allow the clock to not always tick
On some systems the wall clock may tick slowly, so we must allow
the time to not change at all between checks.
Show the time differences.
2020-08-03 18:03:05 -05:00
Andrew Johnson
951b6acbbc Fix Cygwin TCP_NODELAY issue from Paul Chu & Freddie 2020-08-03 12:25:31 -05:00
Andrew Johnson
3c99391d93 Added SPDX License ID to all EPICS-original source files
In some cases the license-identification header was missing,
so I added that as well. Replaced the remaining headers that
specifically identified "Versions 3.13.7 and higher".

Makefiles and the build system were deliberately excluded.
2020-08-03 11:53:01 -05:00
Andrew Johnson
957f386d77 Removed EPICS license header and (c) from yacc/antelope sources
These should never have been added in the first place.
2020-08-03 11:49:56 -05:00
Andrew Johnson
60aaa16e1d Removed EPICS license header and (c) from flex sources
These should never have been added in the first place.
2020-08-03 11:49:56 -05:00
Andrew Johnson
82b3856535 Release notes updated 2020-08-03 11:38:12 -05:00
Andrew Johnson
3506d11558 Speed up osdTimeGetCurrent() on recent macOS
Fixes https://github.com/epics-base/epics-base/issues/83
2020-08-03 11:37:19 -05:00
Michael Davidsaver
29bdca3b84 forgot commit-gh.sh 2020-07-27 14:38:15 -07:00
Michael Davidsaver
a6cdb4c5b6 Set next development version 2020-07-26 14:45:02 -07:00
Michael Davidsaver
aee99a5987 Update version numbers for release 2020-07-26 14:39:02 -07:00
Michael Davidsaver
809a1553bf update release notes 2020-07-26 14:15:10 -07:00
Michael Davidsaver
8029a72fec add doxygen+gh-pages 2020-07-26 13:48:01 -07:00
Michael Davidsaver
bcbaffc158 update submodules 2020-07-26 13:48:01 -07:00
Andrew Johnson
10d472202d Fix some ca/perl builds
Use the pre-expanded Perl configuration variables.
Conda builds of Perl need these (and a fix to the Perl
config files, see https://github.com/conda/conda/issues/8425
for details).
2020-07-21 15:17:37 -05:00
Andrew Johnson
f99bb637b9 ca: Minor cleanups in capr.pl 2020-07-20 18:22:37 -05:00
Andrew Johnson
c55a95fc98 ca: Support DBF_INT64 and DBF_UINT64 in capr.pl 2020-07-20 18:21:46 -05:00
Andrew Johnson
7d9746003b ca: Fix capr.pl to handle missing fields properly
When using an EPICS 7 softIoc.dbd file with a PV from an older version
of Base which didn't have all the fields, our attempts to read those
fields will time out, but the internal logic was buggy. Don't try to
print the values of timed out fields at all. The user will still see a
warning about connection timeouts at the top.
2020-07-20 18:20:45 -05:00
d1491e0860 Use JSON arrays in dbpf 2020-07-17 15:03:53 +02:00
7709239636 make sure put_array_info exists before using it 2020-07-17 09:26:55 +02:00
a9731b90f6 Don't freeze the shell when we are out of memory 2020-07-17 09:12:54 +02:00
Ralph Lange
7d2e352f6a Merge changes from 3.15 branch into 7.0
- merged 3.15 branch up to bf7a1605

# Conflicts:
#	modules/database/src/ioc/db/dbChannel.c
2020-07-15 11:46:45 +02:00
4368697f58 Updated RELEASE_NOTES.md 2020-07-13 14:53:20 +02:00
12cfd418d6 fix dbPut to set target to INVALID/LINK alarm when writing empty arrays into scalars 2020-07-06 15:22:54 +02: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
Andrew Johnson
5c03f8ba79 Simplify epicsMessageQueueTest using joinable threads
Fixes issues with thread shutdown
2020-07-02 16:17:04 -05:00
Andrew Johnson
1eeac6da2f Switch RTEMS to the default osdMessageQueue 2020-07-02 16:14:08 -05:00
Michael Davidsaver
d4781bca28 Merge branch 'recnames' into 7.0
* recnames:
  validate alias names as well
  yet more record name validation
  Further record name validation
  popFirstTemp() may return NULL
  fix crash on bad record name
  Extend record name validation
2020-06-30 19:54:43 -07:00
Michael Davidsaver
32ff3b2ed9 update ci-scripts 3.0 2020-06-29 20:08:13 -07:00
Michael Davidsaver
25681eca4c ci: set EPICS_TEST_IMPRECISE_TIMING 2020-06-29 20:07:06 -07:00
Michael Davidsaver
dcee015f71 validate alias names as well 2020-06-29 14:44:04 -07:00
e5a48f152a RELEASE_NOTES updated 2020-06-29 23:00:30 +02:00
0a1fb25e6b fix dbCaGetLink to fail when reading scalars from empty arrays 2020-06-29 22:23:21 +02:00
Michael Davidsaver
fddd65ccb1 yet more record name validation 2020-06-29 11:33:21 -07:00
473790124b bugfix: ai SoftDevice should return error status when get fails 2020-06-29 14:54:39 +02:00
0353ede517 don't use epicsOldString 2020-06-27 16:05:54 +02:00
Michael Davidsaver
7f9fefc2a4 Further record name validation 2020-06-26 13:22:11 -07: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
Ralph Lange
bf7a1605c6 Name generated junitfiles '<testname>-results.xml'
- following an idea by Freddie Akeroyd,
  to allow better distinction from other xml files
2020-06-23 13:47:33 +02:00
Ralph Lange
0fbfc74182 Fix missing deletion in 97b29129 from 'fix/misc'
- fixes 97b29129 that was replacing two assert() statements
  without removing the original (offending) lines
2020-06-23 11:23:57 +02:00
Michael Davidsaver
b34aa594c8 popFirstTemp() may return NULL
This indicates an earlier error, which should already
been printed.
2020-06-22 12:09:26 -07:00
Michael Davidsaver
3124d972bf fix crash on bad record name 2020-06-22 12:09:26 -07:00
Michael Davidsaver
49889d8549 Extend record name validation
Begin enforcing earlier check (and tab).
Add new warning for record names beginning
with numeric or '{'.
2020-06-22 12:09:26 -07:00
73b86d4921 prevent buffer overflow in dbpf 2020-06-22 13:23:26 +02:00
dec4fc30d9 bugfix in dbpf 2020-06-22 11:30:59 +02:00
Michael Davidsaver
a4bdee82c3 travis fixup networking 2020-06-20 23:11:12 -07:00
Michael Davidsaver
4160610885 libCom: test osdSockAddrReuse
Ensure that epicsSocketEnableAddressReuseDuringTimeWaitState()
and epicsSocketEnableAddressUseForDatagramFanout()
have the desired effects.
2020-06-20 12:01:40 -07:00
Michael Davidsaver
19146a597b WIN32: fix epicsSocketEnableAddressReuseDuringTimeWaitState() 2020-06-19 20:17:14 -07:00
Michael Davidsaver
4eb8ea33ea make-tar add -v and -d arguments
Add -d developer mode to permit export of
branches and raw revisions.

Switch to bash for builtin getopts
2020-06-19 20:17:14 -07:00
Michael Davidsaver
1e425159ed travis mixup STATIC=YES
Ensure that trusty isn't only tested with STATIC=YES,
and others only STATIC=NO.
2020-06-19 20:17:14 -07:00
Andrew Johnson
9259e40483 Perl scripts: leading tabs => spaces, rm trailing spaces 2020-06-17 16:00:31 -05:00
Andrew Johnson
b8f0fd4cdb Make BKPT field an epicsUInt8 for consistency
It was the last 'char' field in dbCommon and the Base record types.
2020-06-12 17:11:34 -05:00
Ralph Lange
b248023eb2 Merge Ralph's 'fix/misc' branch into 3.15
(closes #77)
2020-06-10 18:39:22 +02:00
e68e38ad95 update RELEASE_NOTES.md about empty arrays 2020-06-10 17:48:09 +02:00
Ralph Lange
92374b2be2 libcom/osi: fix potential leak in vxWorks/osdThread.c
(found by sonar/cppcheck)
2020-06-10 14:26:40 +02:00
Ralph Lange
579fc9d0c7 libcom/osi: fix potential leak in default/osdThreadHooks.c
(found by sonar/cppcheck)
2020-06-10 14:26:40 +02:00
Ralph Lange
cd47bbf99b libcom/osi: fix debug printf() in default/osdNetIntf.c
(found by sonar/cppcheck)
2020-06-10 14:26:40 +02:00
Ralph Lange
d3d40689c8 libcom/osi: fix dangerous usage of strncat (WIN32)
(found by sonar/cppcheck)
2020-06-10 14:26:40 +02:00
Ralph Lange
d5eb055bb7 libcom/flex: fix sscanf() argument types
(code smell found by sonar/cppcheck)
2020-06-10 14:26:40 +02:00
Ralph Lange
97b29129af libcom/test: don't modify operand in assert() statement
(code smell found by sonar/cppcheck)
2020-06-10 14:26:40 +02:00
Ralph Lange
801710b8c7 db: fix possible null pointer dereference
(found by sonar/cppcheck)
2020-06-10 14:26:40 +02:00
Ralph Lange
30f5c3b301 db: fix incomplete initialization in dbChannelOpen()
(found by sonar/cppcheck)
2020-06-10 14:26:40 +02:00
3176651c71 fix dbGet to fail when reading scalars from empty arrays 2020-06-09 16:14:49 +02:00
Ralph Lange
69d4c238e7 ca/tools: free() all allocated buffers
(found by sonar/cppcheck)
2020-06-09 15:52:14 +02:00
Ralph Lange
7d1ff1411f ca/tools: fix type errors in option parsing
(found by sonar/cppcheck)
2020-06-09 15:51:35 +02:00
Ralph Lange
f0e143b907 ca/client: fix possible null pointer dereference
(found by sonar/cppcheck)
2020-06-09 15:48:33 +02:00
a42197f0d6 allow to write empty arrays with caput 2020-06-09 10:57:05 +02:00
f8035d8d5e support arrays in dbpf 2020-06-09 10:56:58 +02:00
e4dcd3cefd fix aSub record to support reading empty arrays 2020-06-09 10:56:52 +02:00
c4c13d8ce0 fix subArray soft device support to support reading empty arrays 2020-06-09 10:56:45 +02:00
19c50d4c3d fix aai and waveform soft device support to support reading empty arrays 2020-06-09 10:56:34 +02:00
8cc20393f1 fix dbr size of empty arrays. Fixes caget returning non 0 in first element 2020-06-09 10:56:24 +02:00
cc616371b1 allow constant links with numeric 1 element arrays like [42] 2020-06-08 15:05:22 +02:00
Andrew Johnson
545550dd9a convertRelease: Restore $Bin to @INC
This is needed when convertRelease.pl gets run before the
EPICS::Path and EPICS::Release modules are installed, and
after 'make uninstall' has deleted the lib/perl directory.
2020-06-05 12:51:54 -05:00
Andrew Johnson
eb060e7fcd RULES_MODULES: Fix runtests with no submodules 2020-06-05 10:23:07 -05: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
Michael Davidsaver
786c4c2ca2 Revert "dbRecordtypeFieldItem() avoid excess strcmp()"
This reverts commit 48eb4ff4ac.
2020-06-02 11:26:07 -07:00
Michael Davidsaver
48eb4ff4ac dbRecordtypeFieldItem() avoid excess strcmp()
only one is going to match.
2020-06-02 07:55:22 -07:00
Michael Davidsaver
6c914d19c3 db: validate dbrType 2020-06-02 07:55:22 -07:00
Michael Davidsaver
d6f8e9038c getLinkValue() use dbInitEntryFromAddr()
Called from dbGet().  Optimize hash table lookup
and bsearch of array to O(0) assignment.
2020-06-02 07:55:22 -07:00
Michael Davidsaver
5917990908 dbPutGetTest test plain array field 2020-06-02 07:55:22 -07:00
Michael Davidsaver
eeb198db15 change arrRecord cvt_dbaddr() to behave like waveformRecord et al. 2020-06-02 07:55:22 -07:00
Andrew Johnson
1fec685eed Merge new stuff after the 7.0.4 release work 2020-05-28 21:23:44 -05:00
Andrew Johnson
0bfe0eda0c Update the things to skip in make-tar.sh 2020-05-28 21:18:28 -05:00
Michael Davidsaver
6188d3fdaf update doc comments 2020-05-28 16:26:56 -07:00
Andrew Johnson
cd07888149 Set next development versions 2020-05-28 18:25:32 -05:00
Andrew Johnson
745d2755f9 Update version numbers for release
With both libcom and database having minor version bumps I
concluded that this couldn't be 7.0.3.2 and should really
be numbered 7.0.4
2020-05-28 18:12:51 -05:00
Michael Davidsaver
688bc3247c missing include 2020-05-28 16:07:50 -07:00
Andrew Johnson
f0d814d5c7 Final Release Notes update, added bug links 2020-05-28 17:55:27 -05:00
Andrew Johnson
005580556c Add and document the macro IOCSHFUNCDEF_HAS_USAGE 2020-05-28 17:33:18 -05:00
Andrew Johnson
591e1f22dd Update submodules to tagged versions for 7.0.3.2 2020-05-28 16:34:28 -05:00
Andrew Johnson
75a3442669 Move RTEMS test-skip to just the failing test 2020-05-27 01:50:23 -05:00
Andrew Johnson
c3cb72a2ca Rename .tests-failed to match a .gitignore pattern
This is simpler than trying to add that file to the
.gitignore files in all of the submodules.
2020-05-27 01:46:14 -05:00
Andrew Johnson
d41b3979fb Collect submodule test failures into the parent
Instead of displaying the failures from each submodule at the end
of testing that submodule, RULES_TOP suppresses the output when
it detects a parent module, and RULES_MODULES adds the children's
failure lists into the parent's list so they all get shown at the
end of the tests/results.
2020-05-27 01:43:40 -05:00
Andrew Johnson
a6f85ffd1a Decorate the output from epicsProve.pl
Adds the CWD at the top, plus top & bottom separators
2020-05-27 00:13:56 -05:00
Andrew Johnson
c56311424c Add TOUCH command 2020-05-27 00:11:59 -05:00
Andrew Johnson
7ba12f600c Perl: Close and delete output files when dying 2020-05-26 22:09:24 -05:00
Andrew Johnson
808cf80579 Fix Makefiles to use RULES_DIRS instead of _TOP 2020-05-26 22:09:24 -05:00
Andrew Johnson
dd1b65f32c Many edits to record reference docs
Add documentation for aSub from wiki.
Fix incorrect document structures.
Remove inclusion of menu.dbd files.
Fix links to common doc's, remove some links to nowhere.
Adjust podToHtml.pl and the rule that calls it.
2020-05-26 21:49:35 -05:00
Michael Davidsaver
1f4e812223 update ci-scripts 2020-05-26 10:24:39 -07:00
Ralph Lange
ee39b05839 travis-ci: remove declarative DIST settings
Travis started showing the distribution setting on the web UI
2020-05-26 11:08:43 +02:00
Ralph Lange
9ff6c4bb36 Update .ci to ci-scripts bb9b591 (bugfix) 2020-05-26 11:04:32 +02:00
Andrew Johnson
ab281f0f53 Excuse RTEMS for failing tests... 2020-05-25 21:05:18 -05:00
Andrew Johnson
f89ef1f12f Re-enable RTEMS tests in Travis builds 2020-05-25 20:45:14 -05:00
Andrew Johnson
290f2d7e7d Skip appveyor builds when only .travis.yml changes 2020-05-25 20:42:35 -05:00
Andrew Johnson
88d34c2d38 Merge changes from 3.15 branch into 7.0 2020-05-24 23:17:33 -05:00
Andrew Johnson
b2fb83179a Remove duplicate MBA template files 2020-05-24 21:37:11 -05:00
Michael Davidsaver
04dd52c79a update release notes 2020-05-24 11:05:46 -07:00
Michael Davidsaver
2f2c023a51 update submodules 2020-05-22 10:18:48 -07:00
hir12111
0f88c67473 Add a getter function for field_type 2020-05-21 12:06:56 -07:00
Michael Davidsaver
4eeb205374 Remove ANSI-C OS prototypes from flexdef.h
Use osiUnistd.h instead.
Add io.h to osiUnistd.h on Windows

# Conflicts:
#	modules/libcom/src/flex/flexdef.h
#	modules/libcom/src/osi/os/WIN32/osiUnistd.h
2020-05-21 11:49:27 -07:00
Michael Davidsaver
4c192e7bba Merge remote-tracking branch 'githubrl/doc-sim-mode' into 7.0
* githubrl/doc-sim-mode:
  doc: update simulation parameters sections in dbds
  doc: add description of improved simulation mode

# Conflicts:
#	modules/database/src/std/rec/mbboRecord.dbd.pod
2020-05-21 11:42:24 -07:00
Ralph Lange
96f9f355c9 doc: update simulation parameters sections in dbds
- refer to appropriate sections in dbCommonInput/dbCommonOutput
2020-05-21 13:41:11 +02:00
36a8b51d8e CleanupWhitespace
removed spaces at end of line

replaced tabs with spaces
2020-05-20 14:48:09 -07:00
Michael Davidsaver
055223dbe4 fix epicsTempFile in antelope+e_flex 2020-05-20 14:48:09 -07:00
Michael Davidsaver
799e72b1e3 libCom: actually use libComAPI.h in libCom 2020-05-20 14:47:51 -07:00
Michael Davidsaver
b2750bbe93 Merge remote-tracking branch 'github/7.0' into 7.0
* github/7.0:
  Unify doxygen keywords to use '\' not '@'
  Applied all doxy-libcom changes to latest headers

# Conflicts:
#	modules/libcom/src/yajl/yajl_common.h
2020-05-20 13:33:36 -07:00
Ralph Lange
b0cd3518e4 doc: add description of improved simulation mode
- improve sections in dbCommonInput/dbCommonOutput
2020-05-20 19:48:22 +02:00
Andrew Johnson
4b848ef344 Merge the doxy-libcom branch into 7.0 2020-05-19 18:12:29 -05:00
Andrew Johnson
9142eca878 Unify doxygen keywords to use '\' not '@' 2020-05-19 18:04:26 -05:00
Andrew Johnson
e923790c41 Update versions after tagging 2020-05-15 13:55:29 -05:00
Andrew Johnson
c7e42fab3c Set version number to 3.15.8, clear snapshot 2020-05-15 12:00:23 -05:00
Andrew Johnson
2f28ce94f4 Release Notes changes for 3.15.8 2020-05-15 11:36:45 -05:00
Andrew Johnson
732f8b19be Merge branch 'defaultMessageQueue' into 3.15 2020-05-14 10:41:52 -05:00
Andrew Johnson
b03e2f376b eMQTest: Start each test with a new (empty) queue
If fastReceiver() took more than 0.01 seconds to exit,
sleepySender() might have pushed a second message onto
the queue after setting recvExit, so there would be an
extra message in the queue for the next test, which I
was seeing on Appveyor. That's my current theory...
2020-05-13 16:11:31 -05:00
Andrew Johnson
59c68807b6 Heinz Junkes' fix for lp: #1812084 Build failure on RTEMS
I reduced some of the code duplication from his original.
2020-05-13 15:26:34 -05:00
Andrew Johnson
a09b1c8569 Applied all doxy-libcom changes to latest headers 2020-05-13 00:34:33 -05:00
Andrew Johnson
2e7ed02a60 Allow/expect MinGW to fail epicsStackTraceTest #5 2020-05-07 13:13:26 -05:00
Andrew Johnson
089954aaab MessageQueue Tests: Extend Mark's sleep tests 2020-05-07 13:12:12 -05:00
Andrew Johnson
34e0b2f305 osdMessageQueue: Undo change to -ve timeout handling
The internal mySend() and myReceive() routines do expect a timeout
of -1 to mean wait forever, see the epicsMessageQueueSend() and
epicsMessageQueueReceive() API routines.
2020-05-04 11:56:14 -05:00
Andrew Johnson
ceb13797a6 Cosmetic 2020-05-01 00:13:02 -05:00
Andrew Johnson
084557bd3e osdMessageQueue: Don't wake our sender until we're ready for it
Move the code that wakes up the next sending task to after we've
added our threadNode to the receiveQueue. He still has to wait for
us to release the Mutex though, so this might make no difference.
This commit also changes when we decrement the number of waiting
senders so it always happens immediately after a threadNode gets
taken off the sendQueue by the code that removed it.
2020-05-01 00:12:32 -05:00
Andrew Johnson
aeed7cfbdd osdMessageQueue: This is the mirror of Heinz Junkes' earlier fix
When sending a message, if the queue is full so we have to wait, we
create a threadNode with an eventNode in it and stick it on the
sendQueue, then wait for a receiver to signal that event, waking us.
If we awoke due to a timeout but a receiver was actually waking us
up anyway (i.e. eventSent was set), we shouldn't give up.
2020-04-30 23:55:30 -05:00
Andrew Johnson
183c3b2a3e osdMessageQueue: Clear eventNode before returning it
Introduced freeEventNode() which ensures eventNodes don't have a
signalled event in them before returning the node to the freeList.
Callers pass the status from epicsEventWaitWithTimeout() to indicate
whether it was signalled or not. If it timed out we must trigger it
and Wait to clear the event state.
2020-04-30 23:38:51 -05:00
Andrew Johnson
cf2fef2405 osdMessageQueue: Return sooner on -ve timeout
It appears that previously a negative timeout actually implemented a
'wait forever', but the VxWorks and RTEMS implementations both check
for (timeout <= 0) and return immediately if nothing can be done
without waiting.
2020-04-30 23:27:43 -05:00
Andrew Johnson
298c8706ec osdMessageQueue: Rename freeEventNode() -> destroyEventNode() 2020-04-30 22:59:58 -05:00
Michael Davidsaver
a9934792a0 Merge remote-tracking branch 'lp-anj7/expanded-rules' into 7.0
* lp-anj7/expanded-rules:
  Generate module version files with new RULES_EXPAND facilities
  Extend RULES_EXPAND to add more features
  More generator doc updates
  Document <library>_API = <stem> for Makefiles
  Convert epicsShareAPI to epicsStdCall in modules/ca
  Update generator script
  Modify rules to allow multiple API.h libraries to be built
  Convert modules/ca to use LIBCA_API instead of epicsShare
  Try out a representative sample of APIs from multiple libraries
  Add build rules to generate and install *API.h header files
  Add script to generate *API.h headers
2020-04-30 11:34:34 -07:00
Michael Davidsaver
bc595e3a70 Merge remote-tracking branch 'lp-anj7/typed-dsets' into 7.0
* lp-anj7/typed-dsets:
  Bump database version to 3.18.0, use in SHRLIB_VERSION
  Adjust example code in devSup.h
  Set USE_TYPED_DSET centrally now everything uses it
  Update the wording of the Release Notes entry
  - Record updates:   . histogramRecord   . eventRecord   . aaiRecord   . aaoRecord
  - Record updates:   . aoRecord   . biRecord   . boRecord   . mbbiRecord   . mbbiDirectRecord   . mbboRecord   . mbboDirectRecord   . longinRecord   . longoutRecord   . stringoutRecord   . stringinRecord   . waveformRecord   . calcoutRecord   . subArrayRecord
  initial typed-dset changes for ao record
  Add Release Notes entry about dsets
  Export and use aidset, set USE_TYPED_DSET
  Remove duplicated include line
  Add HAS_<record>dset macros to allow detection
  Export and use int64outdset, set USE_TYPED_DSET
  Export and use int64indset, set USE_TYPED_DSET
  Modify lsodset, set USE_TYPED_DSET
  Modify lsidset, set USE_TYPED_DSET
  Modify printfdset, set USE_TYPED_DSET
2020-04-30 11:26:08 -07:00
Michael Davidsaver
5149627242 Merge commit '17efb0b82c4a3b07f8072d3f574d12d01e2435ec' into 7.0
* commit '17efb0b82c4a3b07f8072d3f574d12d01e2435ec':
  WIN32: osdFindSymbol.c use PSAPI_VERSION
  WIN32: epicsFindSymbol() clear error on success
  epicsLoadTest: avoid stdcall name mangling on WIN32
  epicsLoadTest: test expected failure
  WIN32: epicsFindSymbol() fix use of EnumProcessModules()
  fix epicsLoadError()
  WIN32: GetLastError() returns DWORD
  WIN32: osdFindSymbol() use psapi
  WIN32: epicsLoadError() strip trailing newlines
  add epicsLoadTest
  WIN32 fix epicsFindSymbol()
  WIN32 fix epicsFindSymbol() error propagation
  OSX fix osdFindSymbol
2020-04-29 16:44:59 -07:00
Michael Davidsaver
5d5e552a7e de-init hooks 2020-04-29 16:40:16 -07:00
Martin Konrad
fd5edce919 Warn if deprecated state record is used 2020-04-29 16:39:30 -07:00
Hinko Kocevar
8709fbb63f add missing newline 2020-04-29 16:35:34 -07:00
Andrew Johnson
18a632b0e9 Merge 3.15 branch into 7.0 after ci-scripts added 2020-04-27 12:27:50 -05:00
Ralph Lange
6d625f36e3 Merge ralph@gh/use-ci-scripts-7.0 into 7.0 2020-04-27 12:13:18 +02:00
Ralph Lange
49de2ec498 Merge ralph@gh:use-ci-scripts-3.15 into 3.15 2020-04-27 12:10:24 +02:00
Ralph Lange
e0015ef5f3 Update .ci submodule to v2.3.3
- fix appveyor issue when building base
- fix RTEMS cross build for Base 3.15
- run tests using parallel make
2020-04-27 12:03:34 +02:00
Ralph Lange
0aa6e9603b Update .ci submodule to v2.3.3
- fix appveyor issue when building base
- fix RTEMS cross build for Base 3.15
- run tests using parallel make
2020-04-27 11:59:57 +02:00
Ralph Lange
65e7a3e3ef ci: remove old integration in .ci-local 2020-04-25 14:18:30 +02:00
Ralph Lange
958af54895 appveyor: update .appveyor.yml for ci-scripts 2020-04-25 14:18:30 +02:00
Ralph Lange
44ed397517 travis-ci: update .travis.yml for ci-scripts 2020-04-25 14:16:10 +02:00
Michael Davidsaver
ce4fb6085f iocsh: add usage messages 2020-04-24 20:28:00 -07:00
Michael Davidsaver
cd32a7cb1e epicsEventTest: quiet WIN32 noise
timeout for WaitForSingleObject() is known to be
shorter than expected.
2020-04-24 15:38:04 -07:00
Michael Davidsaver
f1cbe93b6c Revert "replace most internal getCurrent() -> getMonotonic()"
This reverts commit 4f2228fb1d
except for some test code.
2020-04-24 15:37:48 -07:00
Andrew Johnson
314e09d8ca Build system release notes 2020-04-24 16:44:49 -05:00
Ralph Lange
076175386f ci: remove old integration in .ci-local 2020-04-24 19:27:05 +02:00
Ralph Lange
f40d379485 appveyor: update .appveyor.yml for ci-scripts 2020-04-24 19:27:05 +02:00
Ralph Lange
445cbb8221 travis-ci: update .travis.yml for ci-scripts
- use more EXTRAs on MacOS for make args
2020-04-24 19:27:05 +02:00
Ralph Lange
a9c8d8d5d3 Add ci-scripts v2.3.2 (submodule in .ci) 2020-04-24 15:11:32 +02:00
Michael Davidsaver
17efb0b82c WIN32: osdFindSymbol.c use PSAPI_VERSION
Prefer the more specific PSAPI_VERSION to NTDDI_VERSION.
2020-04-23 15:25:31 -07:00
Ralph Lange
54efe4b7cd Add ci-scripts v2.3.2 (submodule in .ci) 2020-04-23 17:58:05 +02:00
Ralph Lange
1ff64f72a9 ci: move ci -> .ci-local
also rename appveyor.yml -> .appveyor.yml
2020-04-23 16:00:53 +02:00
Ralph Lange
199979a44c ci: move .ci -> .ci-local 2020-04-22 12:01:24 +02:00
Ralph Lange
f10d0d95b0 Apply perl rules for .tap and .xml only to perl tests
Don't apply the %.tap: %.t and %.xml: %.tap rules to tap and junit
result files from other test frameworks.
(They would overwrite the other frameworks' own rules.)
2020-04-21 11:45:50 +02:00
Andrew Johnson
dfbda1394d Revert the runtests:: change but in an extensible way
Use only %.t files in new TESTSCRIPTS.t var for Perl tests.
TAPFILES and JUNITFILES can be appended to by other rules.
The runtests and test-results rules have no direct recipes.
Added run-tap-tests and tap-results rules, simlified recipe.
Make %.tap:%.t and %.xml:%.tap into static pattern rules.
2020-04-21 01:39:59 -05:00
Andrew Johnson
d05d8807ec Stop generating the testspec file
It was created before modern continuous integration systems
came along; Diamond were supposed to run the tests for us,
but they didn't last for very long.
2020-04-21 01:17:48 -05:00
Andrew Johnson
582a9dbef5 Replace pre-make rule with before-actions rules
For all standard build ACTIONS, a rule before-<action> is
run just before running that action in the subdirectories
given by the DIRS variable. Only works in Makefiles that
include RULES_DIRS or RULES_TOP.
2020-04-21 01:14:03 -05:00
Andrew Johnson
b655662131 Appveyor: Move 'make test-results' to the on_finish stage 2020-04-20 11:33:37 -05:00
Andrew Johnson
be061e1084 Tidy up testFailures script slighlty 2020-04-20 11:31:45 -05:00
Michael Davidsaver
379ea6e586 WIN32: epicsFindSymbol() clear error on success 2020-04-19 10:32:12 -07:00
Michael Davidsaver
c6670e756e epicsLoadTest: avoid stdcall name mangling on WIN32 2020-04-19 10:32:12 -07:00
Michael Davidsaver
0d8fb0a895 epicsLoadTest: test expected failure 2020-04-18 08:21:23 -07:00
Michael Davidsaver
9edb9c2050 WIN32: epicsFindSymbol() fix use of EnumProcessModules() 2020-04-18 08:18:03 -07:00
Michael Davidsaver
aa7c2a647c fix epicsLoadError()
FORMAT_MESSAGE_IGNORE_INSERTS as no va_list is provided.

Handle possibility of n=0 if unable to lookup error.
2020-04-18 07:35:21 -07:00
Michael Davidsaver
6e41f2911b WIN32: GetLastError() returns DWORD 2020-04-18 07:33:57 -07:00
Andrew Johnson
91c18c32d4 Have Appveyor make 'tapfiles test-results' instead of 'runtests' 2020-04-18 00:36:35 -05:00
Andrew Johnson
3790ce4452 Have 'make test-results' fail nicely if any tests did
Lists the directories with failed tests at the end of the build.
It is no longer necessary to use 'make -k' to see the results
of all tests after one or more failures as only the top-level
test-results recipe will generate a build error.
2020-04-18 00:18:11 -05:00
Andrew Johnson
566ab038d2 Make test-results not fail so it shows all results
For some reason 'make -k test-results' isn't always doing
the -k (continue-on-error) on Windows.
2020-04-17 16:51:48 -05:00
Andrew Johnson
648589e6ab podToHtml: Add bootstrap search path for EPICS::PodHtml 2020-04-17 16:42:18 -05:00
Andrew Johnson
841effe9ee epicsMessageQueueTest: Shorten the 1R4S tests 2020-04-16 17:14:58 -05:00
Andrew Johnson
a9727fd5cb Ben Franksen's fix for lp: #1868486 2020-04-16 17:12:25 -05:00
Andrew Johnson
fde0485d6b Added Mark Rivers' tests for the message queue timeout bug 2020-04-16 17:10:53 -05:00
Michael Davidsaver
db2cd68ce3 WIN32: osdFindSymbol() use psapi 2020-04-16 07:53:06 -07:00
Michael Davidsaver
1492baace9 WIN32: epicsLoadError() strip trailing newlines 2020-04-16 07:45:40 -07:00
Ralph Lange
cbf917e833 Improve automated testing rules to allow other test frameworks
- make runtests a double-colon rule, so that other test frameworks
  can add their own recipes independently
- only define runtests:: $TESTSCRIPTS rule when there are TESTSCRIPTS
  (to avoid having it run every time when no TESTSCRIPTS are defined)
- $(strip $TAPFILES) inside ifneq to fix trouble when TAPFILES=' '
2020-04-16 12:04:16 +02:00
Andrew Johnson
85d1982890 Merge changes from 3.15 branch into 7.0 2020-04-15 21:39:54 -05:00
Andrew Johnson
45cf2ea5ce Modify the POD to HTML conversion code to work on older Perls 2020-04-14 16:41:20 -05:00
Andrew Johnson
a95635a018 Merge Freddie's bit_operations branch into 3.15 2020-04-14 15:28:22 -05:00
Andrew Johnson
9df39475cd Merge Martin Konrad's fix-log-issues branch into 3.15 2020-04-14 11:41:23 -05:00
Andrew Johnson
bdf01e7a67 Merge Martin Konrad's Appveyor-worker-image branch into 3.15 2020-04-14 11:28:53 -05:00
Andrew Johnson
0dd5f863ef Add some release notes 2020-04-13 17:57:33 -05:00
Andrew Johnson
38339b6ccf Initialize main thread as OkToBlock 2020-04-13 17:56:09 -05:00
Martin Konrad
2aecf3142a Explicitly specify worker image 2020-04-13 16:45:21 -04:00
Michael Davidsaver
ad44c7a501 update PVA 2020-04-08 17:23:03 -07: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
Ralph Lange
1687757752 catools: make camonitor handle type changes
taken from a patch provided by Dirk Zimoch (in 2014)
2020-04-06 10:58:40 +02:00
Xiaoqiang Wang
594fcb9a0d CXXFLAGS from CONFIG_win32-x86.Common 2020-04-03 15:10:46 +02:00
Andrew Johnson
1533a4f13f Updates to record POD documentation. 2020-04-03 00:33:51 -05:00
Andrew Johnson
a1aeb23314 Modify POD to HTML tools to better support links
Introduce derived classes to process links the way we need them.
Unify the generation of an ID from a section heading.
2020-04-03 00:29:22 -05:00
Andrew Johnson
933e276e1a Rolf Keitel's POD documentation for dbCommon (from the Wiki)
I split his two "Fields Common to ..." sections back into separate docs,
added links between them all, and made the appropriate build changes.
Also added these and the aai/aao records to the documentation index.
2020-04-02 15:47:10 -05: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
Freddie Akeroyd
7f02f8a386 Exclude VS2012 from -FS option
(cherry picked from 7.0 / commit 4aee25e8 and e29a53f0)
2020-03-28 15:55:35 +01:00
Rold Keitel
cb3fb18f40 POD docs: add aai & aai, update others 2020-03-26 17:41:12 -05:00
Rold Keitel
062c75a078 Prepare for POD documentation of the aa[io]Records 2020-03-26 16:35:58 -05:00
Andrew Johnson
1d6fcd46d6 Adjust RELEASE file variable name recognition
I was asked to support the use of hyphens `-` in names.
2020-03-26 16:31:10 -05:00
Andrew Johnson
5040af322d Fixes in link type documentation 2020-03-26 15:55:27 -05:00
Michael Davidsaver
6f44f64afb add epicsLoadTest 2020-03-24 08:38:41 -07:00
Michael Davidsaver
24df056bcb WIN32 fix epicsFindSymbol()
Passing zero as to GetProcAddress is undocumented,
but seems to be equivalent to passing GetModuleHandle(NULL)
which searches only the address space of the executable file.

Emulate the effect of dlsym(0, ...) by searching all
loaded modules.  Probably not so efficient...
2020-03-24 08:38:36 -07:00
Michael Davidsaver
d3b2298bcb WIN32 fix epicsFindSymbol() error propagation
And use thread local to hold error code/message.
2020-03-24 08:38:33 -07:00
Michael Davidsaver
872009336e OSX fix osdFindSymbol
RTLD_DEFAULT isn't zero on OSX
2020-03-24 08:38:29 -07:00
Michael Davidsaver
a8b2bc5c3b asCa.c normalize indentation
whitespace only
2020-03-23 18:24:44 -07:00
Michael Davidsaver
bac8851132 Revert "asCaStop() join worker thread"
This reverts commit afc31f2f06.

# Conflicts:
#	modules/database/src/ioc/as/asCa.c
2020-03-23 18:22:16 -07:00
Michael Davidsaver
46fa31020e Com: (WIN32) fix handling of thread joinable flag and refcnt
Analogous changes for windows

cf. 02a24a144d
2020-03-23 09:57:14 -07:00
Andrew Johnson
b2160bd618 Merge Martin Konrad's replace-usleep branch into 3.15 2020-03-20 13:40:35 -05:00
Andrew Johnson
5b7f896312 Merge Dirk's emptyArrayCrashFix branch into 3.15 2020-03-20 13:28:34 -05:00
Andrew Johnson
5009f288ae Generate module version files with new RULES_EXPAND facilities
Also removes the separate *VersionNum.h@ templates
2020-03-20 12:03:14 -05:00
Andrew Johnson
5f1b3a5419 Extend RULES_EXPAND to add more features
* Use EXPAND_COMMON for architecture-independent templates,
  generated in the O.Common directory instead of O.$(T_A).
* Add EXPAND_ME to name Makefile variables to be added without
  having to provide a value (permits spaces in value too).
* Comments in RULES_EXPAND describe how to use these rules.
2020-03-20 11:45:20 -05:00
Andrew Johnson
25bb966cbc Use the dbChannel*() accessor macros in the array filter code
instead of exposing the dbChannel innards unnecessarily.
2020-03-14 16:19:26 -05:00
Andrew Johnson
0f35d0c3f9 Improve epicsEventTest delay checks 2020-03-12 13:59:41 -05:00
Andrew Johnson
b4625a0c1f Fix osiSockTest on VxWorks 2020-03-12 13:49:55 -05:00
Andrew Johnson
d38ede55c5 More generator doc updates 2020-03-11 22:37:02 -05:00
Andrew Johnson
809fb88fa2 Document <library>_API = <stem> for Makefiles 2020-03-11 21:19:11 -05:00
Andrew Johnson
33c3b1c89a Convert epicsShareAPI to epicsStdCall in modules/ca 2020-03-10 23:42:42 -05:00
Andrew Johnson
017d561b8d Update generator script
Rename xxxSTD_API to epicsStdCall, don't redefine.
Ensure name stem is a legal C identifier.
Update the Pod text
2020-03-10 23:41:15 -05:00
Andrew Johnson
eb817ba056 Modify rules to allow multiple API.h libraries to be built 2020-03-10 23:35:03 -05:00
Andrew Johnson
18402f0354 Convert modules/ca to use LIBCA_API instead of epicsShare
Also unified the header exclusion guard names,
removed a couple of files that are no longer used,
dropped the '3.13.7' from the Copyright header.
2020-03-09 23:53:22 -05:00
Michael Davidsaver
02a24a144d Com: fix handling of thread joinable flag and refcnt
The second increment of refcnt must occur before pthread_create
or a subtle possibility of a double free() occurs if the thread
runs immediately and self-joins before the second inc.

Also use atomic ops for joinable flag to ensure that
concurrent joins will error properly.
2020-03-08 22:27:06 -07:00
Andrew Johnson
0cf38bfb29 Try out a representative sample of APIs from multiple libraries 2020-03-07 01:32:36 -06:00
Andrew Johnson
9e7fc1915b Add build rules to generate and install *API.h header files 2020-03-07 01:05:05 -06:00
Andrew Johnson
eaee851a2d Add script to generate *API.h headers 2020-03-07 01:05:05 -06:00
Andrew Johnson
a9034bb586 Fix clock_gettime issue on newer MinGW builds
Fixes lp: #1853168
2020-03-07 00:40:13 -06:00
Andrew Johnson
e13b01208b Bump database version to 3.18.0, use in SHRLIB_VERSION 2020-03-06 23:28:57 -06:00
Andrew Johnson
048689d6db Adjust example code in devSup.h 2020-03-06 23:20:55 -06:00
Andrew Johnson
23cac3c1a8 Set USE_TYPED_DSET centrally now everything uses it 2020-03-06 22:49:58 -06:00
Andrew Johnson
8b9c313941 Update the wording of the Release Notes entry 2020-03-06 22:36:02 -06:00
Andrew Johnson
3871f89dcd Appveyor should 'make -s test-results' as the last thing 2020-03-05 13:23:07 -06:00
Andrew Johnson
227a749105 Properly convert epicsTempFile to old-style C 2020-03-04 21:49:17 -06:00
Martin Konrad
f9820577c1 Replace usleep call by nanosleep
Also improve behavior in case signals are delivered to the sleeping
thread. This fixes a potential security weakness reported by codacy
(interaction of usleep with SIGALRM and other timer functions such
as sleep(), alarm(), setitimer(), and nanosleep() is unspecified).
2020-03-04 11:19:02 -05:00
Andrew Johnson
fdacb6b92e MSVC <= 11.0 doesn't like 'const int' in C code 2020-03-03 00:53:16 -06:00
Andrew Johnson
5361888997 Have antelope.c include epicsTempFile.c directly 2020-02-29 14:46:13 -06:00
Andrew Johnson
cc4d888ae8 Convert epicsTempFile.cpp to .c 2020-02-29 14:42:54 -06:00
Michael Davidsaver
e6914f3b80 osdSockUnsentCount.c check for existance of SIO_TCP_INFO 2020-02-20 15:37:18 -05:00
Andrew Johnson
41f1b0ffb5 Fix histogram record allocation bug
Found by Peter Heesterman: Potential use of NULL pcallback pointer.

Nothing looks at the return value from wdogInit(), so don't bother.
2020-02-19 15:09:13 -06:00
Andrew Johnson
d82d3d3679 Combine the iocVirgin and iocStopped states into iocVoid 2020-02-18 18:05:46 -06:00
e48cdb48ac dbGet should not crash when source is an empty array 2020-02-18 17:45:12 +01:00
Freddie Akeroyd
3944b32e04 Add back in optimisation disable 2020-02-17 13:30:15 +00:00
Freddie Akeroyd
a0667a122b Excluded x64 tests now need to be excluded on x86 too 2020-02-17 13:29:38 +00:00
Freddie Akeroyd
f2b4c412d3 Fix doc typo 2020-02-17 12:49:45 +00:00
Freddie Akeroyd
8250339e0d Update record pod documentation 2020-02-17 12:46:11 +00:00
Freddie Akeroyd
803593560d Remove redundant left logical shift 2020-02-17 12:22:20 +00:00
Freddie Akeroyd
bfae080af4 Merge branch '3.15' of git+ssh://git.launchpad.net/epics-base into bit_operations 2020-02-17 11:45:25 +00:00
Michael Davidsaver
6ae3f56560 Merge remote-tracking branch 'lp-konrad/fix-crash-dbloadrecords-after-iocinit' into 3.15
* lp-konrad/fix-crash-dbloadrecords-after-iocinit:
  Fix mingw cross-build
  Use accessor in iocInit
  Fix segfault when calling dbLoadRecords after iocInit
2020-02-14 17:18:01 +00:00
Bryan Robert Tester
4844fbbd82 moved listen into rsrv_grab_tcp to allow retry if failed
Fixes race condition with multiple IOCs starting simultaneously.
2020-02-14 17:10:04 +00:00
Gabriel Fedel
983937a52f Fix event record device support with constant INP
This fix apply to event record device with constant INP.
Now when the event record is proccessed the associated records with the
same SCAN setup get triggered correctly, it is not more necessary to set
VAL on event record.

Fixes lp: #1829770
2020-02-14 17:08:36 +00:00
Gabriel Fedel
90c0f5c48d Fix seq to work correctly on "Specified" mode
On Specified mode is expected that when seq is processed the value from
DOL0 (fixed or links) is set on LNK0, if SELN = 0 (and OFFS = 0).
2020-02-14 15:09:11 +00:00
Gabriel Fedel
d82529058a Add a test to record seq in "Specified" mode 2020-02-14 15:09:11 +00:00
Michael Davidsaver
8668cc1267 testTodoEnd() needs to lock
when NULLing
2020-02-14 13:28:44 +00:00
Michael Davidsaver
3465c0c8b0 simmTest imprecise 2020-02-14 13:25:43 +00:00
Michael Davidsaver
b5be8b2eaf update PVA 2020-02-14 11:58:17 +00:00
hanlet
97bf9171c6 Added Multicast to caRepeater
Modifications to allow for CA multicast listening by adding multicast address
from EPICS_CA_BEACON_ADDR_LIST (or EPICS_CA_ADDR_LIST if beacon list is empty).
Original modifications from Jim Smedinghoff, with further changes by Pierrick Hanlet.
2020-02-14 11:42:17 +00:00
gabadinho
c54237e34a - Record updates:
. histogramRecord
  . eventRecord
  . aaiRecord
  . aaoRecord

- Device support updates:
  . devHistogramSoft (histogramRecord)
  . devEventSoft (eventRecord)
  . devAaiSoft (aaiRecord)
  . devAaoSoft (aaoRecord)

- Fixes in already-migrated records
  . lsiRecord: replaced 'struct lsidset' with typedef(ed) 'lsidset'
  . int64inRecord (similar as above)
  . int64outRecord (similar as above)
  . calcRecord: minor fix in init_record() prototype declaration

- Note: the comments about return values in dset structs were outright copied from .c to .pod/.dbd files without confirmation if they are indeed correct!
2020-02-14 11:07:11 +01:00
Michael Davidsaver
bf533ac195 win32 epicsSocketEnableAddressUseForDatagramFanout call spec
apparently epicsShareAPI is required on both declaration and definition.
2020-02-14 09:00:49 +00:00
Michael Davidsaver
6dba2ec1d7 caRepeater /dev/null 2020-02-14 09:00:22 +00:00
Michael Davidsaver
819b0de65b epicsTimerTest testImpreciseTiming() 2020-02-14 09:00:17 +00:00
Freddie Akeroyd
6867f97346 Fix bit operations failures on VS2019 32bit
Working with Dirk Zimoch @dirk.zimoch, fixed various issues
with bit operations on VS2019 32bit. These seem to relate to
handling bit 31 of a 32 bit number.

As EPICS << is an arithmetic bit shift, following Java we
have added <<< and >>> operators for logical shifts

Though it is on a different architecture, this looks like
a similar issue to LP: #1838792
2020-02-14 01:16:09 +00:00
gabadinho
754eb73334 - Record updates:
. aoRecord
  . biRecord
  . boRecord
  . mbbiRecord
  . mbbiDirectRecord
  . mbboRecord
  . mbboDirectRecord
  . longinRecord
  . longoutRecord
  . stringoutRecord
  . stringinRecord
  . waveformRecord
  . calcoutRecord
  . subArrayRecord

- Device support updates:
  . devAoSoft, devAoSoftCallback, devAoSoftRaw (aoRecord)
  . devBiSoft, devBiSoftCallback, devBiSoftRaw, devBiDbState (biRecord)
  . devBoSoft, devBoSoftCallback, devBoSoftRaw, devBoDbState, devGeneralTime (boRecord)
  . devMbbiSoft, devMbbiSoftCallback, devMbbiSoftRaw (mbbiRecord)
  . devMbboSoft, devMbboSoftCallback, devMbboSoftRaw (mbboRecord)
  . devMbbiDirectSoft, devMbbiDirectSoftCallback, devMbbiDirectSoftRaw (mbbiDirectRecord)
  . devMbboDirectSoft, devMbboDirectSoftCallback, devMbboDirectSoftRaw (mbboDirectRecord)
  . devGeneralTime, devLiSoft, devLiSoftCallback (longinRecord)
  . devLoSoft, devLoSoftCallback (longoutRecord)
  . devSoSoft, devSoSoftCallback, devStdio (stringoutRecord)
  . devSiSoft, devSiSoftCallback, devEnviron, devGeneralTime, devTimestamp (stringinRecord)
  . devWfSoft (waveformRecord)
  . devCalcoutSoft, devCalcoutSoftCallback (recordCalcout)
  . devSASoft (subArrayRecord)
2020-02-13 17:40:22 +01:00
Karl Vestin
8075b3c316 Added a null check in epicsWin32ThreadEntry to prevent dereferencing a null pointer in case fetchWin32ThreadGlobal fails.
LP: #1863118
2020-02-13 16:16:56 +00:00
Andrew Johnson
1d9e9ff4f7 Add new POD output files to RecordReference index 2020-02-13 09:06:48 -06:00
Andrew Johnson
eb8ca22704 Add new POD documentation, from Rolf Keitel
Documents the lsi, lso and printf record types.
2020-02-13 09:06:14 -06:00
Gabriel Fedel
6feb1c788d Add extern C for all c headers
This allow that these files could be imported to c++ correctly
2020-02-13 14:21:54 +00:00
Aaron
6e0706a312 Set argBuff->sval to NULL if arg is NULL 2020-02-13 13:22:26 +00:00
Aaron
45bbe274e9 Error case for NULL arg causing segfault in iocshPersistentString 2020-02-13 13:22:19 +00:00
Karl Vestin
2bcaa5448c Added null check in modules/ca/src/client/udpiiu.cpp to prevent possible dereferencing of null pointer. Flagged as error by Codacy static code analysis.
Codacy link: https://app.codacy.com/gh/epics-base/epics-base/file/42103575495/issues/source?bid=16430872&fileBranchId=16430872#l950
Launchpad bug: https://bugs.launchpad.net/epics-base/+bug/1862916

LP: #1862916
2020-02-13 13:22:04 +00:00
Karl Vestin
66f2a509db Added initialization of alarm severity on probe. This value is not used, but should be initialized regardless. This was flagged as an error by the Codacy static code analysis.
Codacy link: https://app.codacy.com/gh/epics-base/epics-base/file/42103575016/issues/source?bid=16430872&fileBranchId=16430872#l604
Launchpad bug: https://bugs.launchpad.net/epics-base/+bug/1862918

LP: #1862918
2020-02-13 13:22:00 +00:00
Karl Vestin
538f532184 Added a free statement to release memory allocated for postbuf if the memory allocation for inbuf fails. Resolves an error level issue generated by the Codacy static code analysis.
Codacy link: https://app.codacy.com/gh/epics-base/epics-base/file/42098735308/issues/source?bid=16430872&fileBranchId=16430872#l201
Launchpad bug: https://bugs.launchpad.net/epics-base/+bug/1862917

LP: #1862917
2020-02-13 13:21:58 +00:00
Andrew Johnson
bfd289e85f Add converted histogram POD 2020-02-13 05:11:36 -06:00
Andrew Johnson
a5bae49dab Rename lsi, lso and printf *Record.dbd to .dbd.pod 2020-02-13 04:58:06 -06:00
Andrew Johnson
7a612f9524 Update to stringout POD from Rolf Keitel
Fix spelling of OMSL.
Document the stdio device support.
2020-02-12 09:25:54 -06:00
gabadinho
55ec813908 initial typed-dset changes for ao record 2020-02-12 15:32:13 +01:00
Andrew Johnson
0db8f8ca1b Rename histogramRecord.dbd to .dbd.pod 2020-02-12 07:45:04 -06:00
Michael Davidsaver
e6810a4224 processTarget() remove unnecessary NULL test
psrc and pdst will always be non-NULL
2020-02-12 11:16:33 +00:00
Michael Davidsaver
7b6e48f4e0 casw shouldn't use monotonic 2020-02-12 11:16:29 +00:00
Michael Davidsaver
f0bf61b4cb rsrv: improve monitor/get error message 2020-02-12 11:16:26 +00:00
Michael Davidsaver
db6e7c7a22 use one osdSockAddrReuse impl for all targets
drop win32 specialization of osdSockAddrReuse
2020-02-12 10:52:51 +00:00
Michael Davidsaver
5064931aa6 try both to set both SO_REUSEPORT and SO_REUSEADDR
It seems that on Linux, SO_REUSEPORT shares with SO_REUSEPORT
and SO_REUSEADDR with SO_REUSEADDR, but not each other.

Setting both allows full sharing
2020-02-12 10:52:15 +00: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
Andrew Johnson
dbd6f7e807 Adding tests for epicsThreadClass API
Two tests are disabled which hang the parent in the epicsThread destuctor
2020-01-23 14:26:33 -06:00
Michael Davidsaver
d0c4cc0cec Darwin/iOS use posix osdSockAddrReuse.cpp
Redundant now that the posix version prefers SO_REUSEPORT
if defined.
2020-01-12 11:49:48 -08:00
Michael Davidsaver
65ef6e9d59 posix epicsSocketEnableAddressUseForDatagramFanout() prefer SO_REUSEPORT
prefer SO_REUSEPORT on targets which define it.

Linux defines both, and seems to treat
SO_REUSEPORT and SO_REUSEADDR as equivalent.
BSD derivatives need SO_REUSEPORT.
2020-01-12 11:49:26 -08:00
Michael Davidsaver
8dc131dc4c osiSockTest test epicsSocketEnableAddressUseForDatagramFanout() 2020-01-12 11:48:20 -08:00
Andrew Johnson
54cd7e7ba1 MinGW: Replace -Wno-format with -D__USE_MINGW_ANSI_STDIO 2020-01-08 17:21:04 -06:00
Andrew Johnson
cbe6173417 Updates to the subArrayRecord reference page 2020-01-08 17:19:25 -06:00
Michael Davidsaver
468f965dc2 dbLoadTemplate.h missing extern "C" 2020-01-05 17:52:43 -08:00
Andrew Johnson
8f358f4dd8 VxWorks::osdThread: Rename createFunction => epicsThreadEntry
and make it visible (non-static) so it appears in back-traces.
2020-01-02 16:41:55 -06:00
Andrew Johnson
05e0381b19 Fix VxWorks epicsThreadMustJoin() problems
taskWait() actually returns OK on timeout, so drop the timeout warning
(the other implementations don't have one).
The taskWait() may return ERROR with S_objLib_OBJ_ID_ERROR if the target
thread has higher priority; this indicates a successful join, because
we already did a rendezvous using joinSem.
Delete joinSem *after* calling taskSpareFieldSet(), in case it matters.
2020-01-02 16:39:10 -06:00
Andrew Johnson
06728e0e0b Run epicsThreadTest::testJoining with different priorities
A problem in the VxWorks epicsThreadMustJoin() only occurs when
the joining thread runs at a higher priority than its supervisor.
2020-01-02 16:22:35 -06:00
Andrew Johnson
3b20e71da5 EPICS::IOC.pm Save parms, more debug annotations 2020-01-01 15:03:40 -06:00
Andrew Johnson
81df1b2892 Rearrange EPICS::IOC->close() to be more robust 2020-01-01 00:14:08 -06:00
Andrew Johnson
aad8a96b0d Increase timeout for caget to 15 seconds 2020-01-01 00:08:06 -06:00
Andrew Johnson
83d2941405 netget: Run caget and pvget using EPICS::IOC instead of back-ticks
This lets us collect and echo their stderr streams, and if they
hang up without responding we can kill them directly instead of
just giving up and bailing out.

Left debug output turned on for now.
2019-12-31 22:28:43 -06:00
Andrew Johnson
b62ab817c6 Replace EPICS::IOC->kill() with exit() and close() methods 2019-12-31 22:21:03 -06:00
Andrew Johnson
70ea8d5476 Make EPICS::IOC->_geterrors() return on EOF from IOC's stderr 2019-12-31 22:15:22 -06:00
Andrew Johnson
5dc7995477 Enable IOC debug output in netget.plt 2019-12-27 17:36:37 -06:00
Michael Davidsaver
cb0d8d1297 update PVA 2019-12-19 19:31:21 -08:00
Andrew Johnson
71278477bc Update submodules 2019-12-19 00:08:18 -06:00
Andrew Johnson
e7715ba7b4 Merge 3.15 branch into 7.0 2019-12-18 23:58:02 -06:00
Michael Davidsaver
f64f84744e more fun with isinf() and friends.
GNU libstdc++ prior to GCC 6.1.0, the overlay math.h always
includes math.h from glibc, which defines isinf() and friends.

GCC 6.1.0 includes a change (6c8ced3f4f867b72a623fe2f23efa204c5786a28)
so that the overlay math.h never includes the glibc math.h
when compiling c++.
The overlay math.h sometimes includes "using std::isinf"
Determined by inspecting libc math.h when building gcc.
2019-12-18 20:30:23 -08:00
Michael Davidsaver
d97a12f095 travis-ci test trusty w/ c++11 2019-12-18 20:30:23 -08:00
Andrew Johnson
475963453c Merge Martin Konrad's retire-epicsexcept branch into 3.15 2019-12-17 23:48:45 -06:00
Andrew Johnson
f5a442c0de Merge Martin Konrad's fix-typos branch 2019-12-17 23:46:07 -06:00
Martin Konrad
df519ce1a2 Fix typos in calcoutRecord.dbd.pod 2019-12-17 15:53:41 -05:00
Michael Davidsaver
189060c14f Merge branch '3.15' into 7.0
* 3.15:
  minor epicsTimerTest
  epicsTimerTest loosen test threshold
  debug epicsTimerTest
  posix/epicsMath.h
  Revert "libcom: fix colliding isnan/isinf between C99 and C++0x for gcc-4"
  Revert "libcom: properly declare isnan() in C++ code"
  travis-ci /etc/hosts workaround
  redo travis-ci with matrix
  epicsSockResolveTest add detail
  libcom: properly declare isnan() in C++ code
  libcom: fix colliding isnan/isinf between C99 and C++0x for gcc-4
  libcom: import some C99 math (isnan etc.) into global namespace

# Conflicts:
#	.travis.yml
#	ci/travis-prepare.sh
2019-12-16 15:39:48 -08:00
Michael Davidsaver
feb938fae2 minor epicsTimerTest
(cherry picked from commit 7acd7c6145)
2019-12-16 13:16:31 -08:00
Michael Davidsaver
e068191684 epicsTimerTest loosen test threshold
(cherry picked from commit f955199805)
2019-12-16 13:16:30 -08:00
Michael Davidsaver
33f2d8c4aa debug epicsTimerTest
(cherry picked from commit 2af0c10470)
2019-12-16 13:16:29 -08:00
Michael Davidsaver
60a092fa50 posix/epicsMath.h
Include "<cmath>" for c++11 and pull in
non-namespace versions of isnan() and friends.
2019-12-16 11:40:13 -08:00
Michael Davidsaver
24f08460bb Revert "libcom: fix colliding isnan/isinf between C99 and C++0x for gcc-4"
This reverts commit 09ec3af337.
2019-12-16 11:40:13 -08:00
Michael Davidsaver
247fea0fa9 Revert "libcom: properly declare isnan() in C++ code"
This reverts commit 2e89a60c2d.
2019-12-16 11:40:13 -08:00
Michael Davidsaver
8a9637568e travis-ci /etc/hosts workaround 2019-12-16 11:40:13 -08:00
Michael Davidsaver
87229fdef0 redo travis-ci with matrix
add mix of Ubuntu versions
2019-12-16 11:40:13 -08:00
Michael Davidsaver
b0418e5274 epicsSockResolveTest add detail 2019-12-16 11:40:13 -08:00
Ralph Lange
2e89a60c2d libcom: properly declare isnan() in C++ code 2019-12-11 14:51:16 +01:00
Ralph Lange
09ec3af337 libcom: fix colliding isnan/isinf between C99 and C++0x for gcc-4
This fix can be removed once support for gcc-4 is dropped in 2038
2019-12-06 10:52:38 +01:00
Ralph Lange
70e9d46d75 libcom: import some C99 math (isnan etc.) into global namespace 2019-12-05 16:44:59 +01:00
Andrew Johnson
4c99a94453 Add Release Notes entry about dsets 2019-11-30 01:01:33 -06:00
Andrew Johnson
5407a25775 Export and use aidset, set USE_TYPED_DSET
I did ai so I can use it as an example in the Release Notes.
2019-11-30 00:20:16 -06:00
Andrew Johnson
6eaef18347 Remove duplicated include line 2019-11-28 00:56:00 -06:00
Andrew Johnson
f6d8a1ab6c Sort DIRECTORY_TARGETs to de-duplicate, avoids make warning 2019-11-26 14:31:29 -06:00
Michael Davidsaver
3450c9d442 softIoc use correct path sep 2019-11-24 19:39:45 -08:00
Michael Davidsaver
a7cb9524c2 softIoc re-add -D 2019-11-24 19:39:44 -08:00
Michael Davidsaver
90ef40e62b iocshFindVariable() safety 2019-11-24 19:39:44 -08:00
Michael Davidsaver
1290ab7c6c dbInitEntry() w/o matching dbFinishEntry() 2019-11-24 19:39:42 -08:00
Andrew Johnson
45c7039a45 Add HAS_<record>dset macros to allow detection
External device support that must also build against earlier
Base versions can use these to determine whether they need so
declare their own dset structures for each record type.
2019-11-23 22:23:47 -06:00
Andrew Johnson
b1b51cc70e Export and use int64outdset, set USE_TYPED_DSET 2019-11-23 15:32:51 -06:00
Andrew Johnson
7e1d165092 Export and use int64indset, set USE_TYPED_DSET 2019-11-23 15:32:51 -06:00
Andrew Johnson
7893445a2e Modify lsodset, set USE_TYPED_DSET 2019-11-23 15:32:51 -06:00
Andrew Johnson
465ab44606 Modify lsidset, set USE_TYPED_DSET 2019-11-23 15:32:51 -06:00
Andrew Johnson
23450fcfc8 Modify printfdset, set USE_TYPED_DSET 2019-11-23 15:32:51 -06:00
Andrew Johnson
37ed77006c Fix release headers in Release Notes 2019-11-21 12:47:02 -06:00
Andrew Johnson
578608b1c7 Merge changes from 3.15 branch into 7.0 2019-11-21 12:45:31 -06:00
Andrew Johnson
1d18aa3e6c Disable printf() format warnings on MinGW, they're broken 2019-11-21 12:20:56 -06:00
Andrew Johnson
a85967caea Cross-builds of 64-bit MinGW should inherit from 32-bit
Don't duplicate, this file missed an important change as a result.
2019-11-21 12:20:13 -06:00
Michael Davidsaver
3c0d4ccf49 remove another __DATE__ 2019-11-16 10:26:23 -08:00
Martin Konrad
218459f454 Remove epicsThrows() macro
Exception specifications are deprecated: http://isocpp.github.io/
CppCoreGuidelines/CppCoreGuidelines.html#e30-dont-use-exception-
specifications . They will be removed from the C++ standard with
C++20. Modern compilers are warning about them since years. Thus
it's unlikely that anyone is still using the epicsThrows() macro.
Even if that's the case the fix is trivial: Simply remove the macro.
2019-11-15 21:15:50 -08:00
Martin Konrad
13234afc40 Simplify definition of compiler-specific macros
Remove conditionals for older compiler versions that aren't
supported by EPICS Base anymore.
2019-11-15 21:14:27 -08:00
Michael Davidsaver
156b137af0 avoid 'struct dset'
doesn't work if -DUSE_TYPED_DSET
2019-11-15 21:11:27 -08:00
Michael Davidsaver
fab9c52858 missing includes
Need definition of FILE
2019-11-15 21:11:27 -08:00
Michael Davidsaver
019c20476a test include public Com and db headers
Ensure that headers which are meant to be included
actually can be.
2019-11-15 21:11:27 -08:00
Andrew Johnson
f3d63da77b Remove two long-unused environment parameters 2019-11-15 13:16:35 -06:00
Martin Konrad
a50b850ebd Fix mingw cross-build 2019-11-15 09:33:15 -05:00
Martin Konrad
6767bcd31e Use accessor in iocInit
This is simpler than using init hooks.
2019-11-14 13:57:45 -05:00
Martin Konrad
81550ac4d3 Fix segfault when calling dbLoadRecords after iocInit
This fixes lp:1829919.
2019-11-14 10:11:16 -05:00
d2d8674cb9 use EPICS_PRIVATE_API macro and fix bug with darwin/ios 2019-11-13 14:02:25 -05:00
6f193242e0 renamed epicsSocketCountUnsentBytes to epicsSocketUnsentCount and moved it to osi/os/ 2019-11-13 14:02:23 -05:00
39e8ccdef4 fix bug from commit f85454. Apparently epicsExportSharedSymbols is needed even though epicsExport.h is included 2019-11-13 13:49:28 -05:00
eb8992a750 epicsSocketCountUnsentBytes returns -1 on failure 2019-11-13 13:49:27 -05:00
62fb49f93b bugfix: memmove'ed to much 2019-11-13 13:49:27 -05:00
a5c9db8c8e epicsSockCountUnsentBytes renamed to epicsSocketCountUnsentBytes 2019-11-13 13:49:26 -05:00
04e752c83a moved logClientSendMessage and made it static 2019-11-13 13:49:26 -05:00
a16ce877e7 fix wrong function name in comment 2019-11-13 13:49:26 -05:00
15f28f1183 sending 0 bytes helps to detect broken connections on some systems (but is undefined behavior on Linux, fails on vxWorks and is a documented no-op on Windows) 2019-11-13 13:49:25 -05:00
9c18ce007a cannot print sockets with %d in Windows, they are not small ints but maybe pointers. 2019-11-13 13:49:25 -05:00
765af2efea ask logClient socket how many bytes are still in the send queue and don't discard them in case the connection turns out broken. 2019-11-13 13:49:24 -05:00
059c385286 use dynamic debug flag for logClient 2019-11-13 13:49:24 -05:00
feb1f9b0df increase error message buffer size for long (Windows) error messges 2019-11-13 13:49:23 -05:00
9d9840ad1e improve logClientShow to show unsent bytes on level 2 (and fix level 1) 2019-11-13 13:49:23 -05:00
af73e4cf65 removed unneeded include 2019-11-13 13:49:23 -05:00
ad861a0617 no need to delay startup only because log server is currently not available 2019-11-13 13:49:22 -05:00
1b88e834d6 send pending log messages directly after connecting 2019-11-13 13:49:22 -05:00
e000ea4913 avoid needless memmove calls 2019-11-13 13:49:21 -05:00
06f1a8ec23 elimitate duplicate code in logClient 2019-11-13 13:49:21 -05:00
cf2658be53 do not discard unsent messages when log server has closed connection, instead try to send them after reconnect 2019-11-13 13:49:20 -05:00
74a403090b speed up logRestart thread termination at exit 2019-11-13 13:49:20 -05:00
dc123a0a37 don't send errlog on all logClients 2019-11-13 13:49:20 -05:00
Michael Davidsaver
a4e5b9c528 minor 2019-11-13 10:19:16 -08:00
Michael Davidsaver
b43aafae70 VCS version instead of __DATE__
Use reproducable VCS version instead of date.
Of course, this falls back to a date if not
version controlled.
2019-11-13 10:18:12 -08:00
Michael Davidsaver
905ca4b7ac quiet some warnings 2019-11-13 10:17:43 -08:00
Michael Davidsaver
7acd7c6145 minor epicsTimerTest 2019-11-12 19:07:30 -08:00
Michael Davidsaver
05c93e954f makeRPath.py nicer error on mis-configuation 2019-11-12 19:07:30 -08:00
Michael Davidsaver
bef9a08f6d asLib minor 2019-11-12 19:07:30 -08:00
Michael Davidsaver
3e7ad9a86f rtems_init cleanup
Remove unnecessary (as of RTEMS 4.9) prototypes
Remove unused *Fatal
constify string contant
2019-11-12 19:07:30 -08:00
Michael Davidsaver
76b9461ee8 logClient windows needs SOCK_E* 2019-11-12 19:07:30 -08:00
Andrew Johnson
7eee262486 Shorten/simplify uninstall recipes 2019-11-12 16:16:02 -06:00
Andrew Johnson
a10379327c Replace broken cleandirs recipe 2019-11-12 16:14:39 -06:00
Martin Konrad
b37bfe3ed0 Retire unused epicsExcept.h
Due to a syntax error this header has been unusable since 2001
(since 34ea7db15b), and no one
noticed. Let's remove it.
2019-11-12 12:12:47 -05:00
Andrew Johnson
41d86ecd7a Add a document containing Record Reference links 2019-11-11 11:30:46 -06:00
Andrew Johnson
961dd2bc5d Don't check empty (overridden) RELEASE definitions
Bug reported by Dirk Zimoch
2019-11-11 11:29:03 -06:00
Andrew Johnson
6d8bf7c8ef Update checklist for next release 2019-11-01 14:36:34 -05:00
Andrew Johnson
98e5367126 Update submodules after release 2019-11-01 14:11:51 -05:00
Andrew Johnson
8734863f69 Incr version and set snapshot/development flags 2019-11-01 14:11:29 -05: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
1263 changed files with 46221 additions and 32172 deletions

View File

@@ -1,11 +1,18 @@
# AppVeyor configuration for EPICS Base
# Ralph Lange <ralph.lange@gmx.de>
# Copyright (c) 2016-2017 ITER Organization
# Appveyor configuration file for EPICS Base 7 builds
# (see also https://github.com/epics-base/ci-scripts)
# Version format
version: base-{branch}-{build}
#---------------------------------#
# build cache #
#---------------------------------#
# The AppVeyor cache allowance is way too small (1GB per account across all projects, branches and jobs)
# to be used for the dependency builds.
cache:
- C:\Users\appveyor\.tools
#---------------------------------#
# repository cloning #
#---------------------------------#
@@ -16,13 +23,16 @@ init:
- git config --global core.autocrlf true
# Set clone depth (do not fetch complete history)
clone_depth: 50
clone_depth: 5
# Skipping commits affecting only specific files
skip_commits:
files:
- 'documentation/*'
- 'templates/*'
- 'startup/*'
- '.github/*'
- '.tools/*'
- '.gitattributes'
- '**/*.html'
- '**/*.md'
@@ -30,6 +40,8 @@ skip_commits:
# build matrix configuration #
#---------------------------------#
image: Visual Studio 2015
# Build Configurations: dll/static, regular/debug
configuration:
- dynamic
@@ -37,45 +49,49 @@ configuration:
- dynamic-debug
- static-debug
# Environment variables: compiler toolchain
# Environment variables: compiler toolchain, base version, setup file, ...
environment:
matrix:
- TOOLCHAIN: mingw
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
TOOLCHAIN: 2019
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
TOOLCHAIN: 2017
- TOOLCHAIN: 14.0
- TOOLCHAIN: 12.0
- TOOLCHAIN: 11.0
- TOOLCHAIN: 10.0
# common / default variables for all jobs
SETUP_PATH: .ci-local:.ci
BASE: SELF
EPICS_TEST_IMPRECISE_TIMING: YES
# Platform: architecture
matrix:
- CMP: vs2019
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
- CMP: vs2017
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
- CMP: vs2015
- CMP: vs2013
- CMP: vs2012
- CMP: vs2010
- CMP: gcc
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
# Platform: processor architecture
platform:
- x86
- x64
# Matrix configuration: allow specific failing jobs
# Matrix configuration: exclude sets of jobs
matrix:
exclude:
# VS Express installs don't have the 64 bit compiler
# VS2012 and older installs don't have the 64 bit compiler
- platform: x64
TOOLCHAIN: 10.0
# Exclude to reduce total job runtime
# skip 64-bit for older and 32-bit for newer
CMP: vs2012
- platform: x64
TOOLCHAIN: 11.0
CMP: vs2010
# Exclude more jobs to reduce build time
# Skip 32-bit for "middle-aged" compilers
- platform: x86
TOOLCHAIN: mingw
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2015
CMP: vs2017
- platform: x86
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
TOOLCHAIN: 2019
- platform: x86
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
TOOLCHAIN: 2017
CMP: vs2015
# MinGW debug builds use the same libraries, unlike VS
- configuration: dynamic-debug
CMP: gcc
- configuration: static-debug
CMP: gcc
#---------------------------------#
# building & testing #
@@ -83,18 +99,22 @@ matrix:
install:
- cmd: git submodule update --init --recursive
- cmd: .ci/appveyor-prepare.bat
- cmd: pip install git+https://github.com/mdavidsaver/ci-core-dumper#egg=ci-core-dumper
- cmd: python .ci/cue.py prepare
build_script:
- cmd: .ci/appveyor-make.bat
- cmd: python .ci/cue.py build
test_script:
- cmd: .ci/appveyor-make.bat tapfiles
- cmd: .ci/appveyor-make.bat test-results
- cmd: python -m ci_core_dumper install
- cmd: python .ci/cue.py -T 20M test
on_finish:
- ps: Get-ChildItem *.tap -Recurse -Force | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
- cmd: python .ci/cue.py -T 5M test-results
on_failure:
- cmd: python -m ci_core_dumper report
#---------------------------------#
# debugging #
@@ -104,10 +124,13 @@ on_finish:
## note that you will need to connect within the usual build timeout limit (60 minutes)
## so you may want to adjust the build matrix above to just build the one of interest
#on_failure:
# print the connection info
#init:
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
# block a failed build (until the watchdog barks)
#on_failure:
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
#---------------------------------#
# notifications #

152
.appveyor/epics-base-7.yml Normal file
View File

@@ -0,0 +1,152 @@
# Appveyor configuration file for EPICS Base 7 builds
# (see also https://github.com/epics-base/ci-scripts)
# branches to build
branches:
# whitelist
only:
- 7.0
- /R7\.0\.\d+.*/
# Version format
version: base-{branch}-{build}
#---------------------------------#
# build cache #
#---------------------------------#
# The AppVeyor cache allowance is way too small (1GB per account across all projects, branches and jobs)
# to be used for the dependency builds.
cache:
- C:\Users\appveyor\.tools
#---------------------------------#
# repository cloning #
#---------------------------------#
# Called at very beginning, before repo cloning
init:
# Set autocrlf to make batch files work
- git config --global core.autocrlf true
# Set clone depth (do not fetch complete history)
clone_depth: 5
# Skipping commits affecting only specific files
skip_commits:
files:
- 'documentation/*'
- 'startup/*'
- '.github/*'
- '.tools/*'
- '.gitattributes'
- '**/*.html'
- '**/*.md'
#---------------------------------#
# build matrix configuration #
#---------------------------------#
image: Visual Studio 2015
# Build Configurations: dll/static, regular/debug
configuration:
- dynamic
- static
- dynamic-debug
- static-debug
# Environment variables: compiler toolchain, base version, setup file, ...
environment:
# common / default variables for all jobs
SETUP_PATH: .ci-local:.ci
BASE: SELF
EPICS_TEST_IMPRECISE_TIMING: YES
matrix:
- CMP: vs2019
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2019
- CMP: vs2017
APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
- CMP: vs2015
- CMP: vs2013
- CMP: vs2012
- CMP: vs2010
- CMP: gcc
# Platform: processor architecture
platform:
- x86
- x64
# Matrix configuration: exclude sets of jobs
matrix:
exclude:
# VS2012 and older installs don't have the 64 bit compiler
- platform: x64
CMP: vs2012
- platform: x64
CMP: vs2010
# Exclude more jobs to reduce build time
# Skip 32-bit for "middle-aged" compilers
- platform: x86
CMP: vs2017
- platform: x86
CMP: vs2015
# MinGW debug builds use the same libraries, unlike VS
- configuration: dynamic-debug
CMP: gcc
- configuration: static-debug
CMP: gcc
#---------------------------------#
# building & testing #
#---------------------------------#
install:
- cmd: git submodule update --init --recursive
- cmd: pip install git+https://github.com/mdavidsaver/ci-core-dumper#egg=ci-core-dumper
- cmd: python .ci/cue.py prepare
build_script:
- cmd: python .ci/cue.py build
test_script:
- cmd: python -m ci_core_dumper install
- cmd: python .ci/cue.py -T 20M test
on_finish:
- ps: Get-ChildItem *.tap -Recurse -Force | % { Push-AppveyorArtifact $_.FullName -FileName $_.Name }
- cmd: python .ci/cue.py -T 5M test-results
on_failure:
- cmd: python -m ci_core_dumper report
#---------------------------------#
# debugging #
#---------------------------------#
## if you want to connect by remote desktop to a failed build, uncomment these lines
## note that you will need to connect within the usual build timeout limit (60 minutes)
## so you may want to adjust the build matrix above to just build the one of interest
# print the connection info
#init:
# - ps: iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
# block a failed build (until the watchdog barks)
#on_failure:
# - ps: $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1'))
#---------------------------------#
# notifications #
#---------------------------------#
notifications:
- provider: Email
to:
- core-talk@aps.anl.gov
on_build_success: false
- provider: GitHubPullRequest

1
.ci Submodule

Submodule .ci added at 7d9d426629

View File

@@ -1,132 +0,0 @@
:: Universal build script for AppVeyor (https://ci.appveyor.com/)
:: Environment:
:: TOOLCHAIN - toolchain version [10.0/11.0/12.0/14.0/2017/2019/mingw]
:: CONFIGURATION - determines EPICS build [dynamic/static]
:: PLATFORM - architecture [x86/x64]
::
:: All command line args are passed to make
Setlocal EnableDelayedExpansion
:: we do not currently have a combined static and debug EPICS_HOST_ARCH target
:: So a combined debug and static target will appear to be just static
:: but debug will have been specified in CONFIG_SITE by appveyor-prepare.bat
set "ST="
echo.%CONFIGURATION% | findstr /C:"debug">nul && (
set "ST=-debug"
)
echo.%CONFIGURATION% | findstr /C:"static">nul && (
set "ST=-static"
)
set MY_OS=64BIT
if "%PLATFORM%"=="x86" set MY_OS=32BIT
echo [INFO] Platform: %MY_OS%
:: Use parallel make, except for 3.14
set "MAKEARGS=-j2 -Otarget"
if "%APPVEYOR_REPO_BRANCH%"=="3.14" set MAKEARGS=
if "%TOOLCHAIN%"=="mingw" (
set "MAKE=mingw32-make"
if "%MY_OS%"=="64BIT" (
set "EPICS_HOST_ARCH=windows-x64-mingw"
set "INCLUDE=C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\include;%INCLUDE%"
set "PATH=C:\mingw-w64\x86_64-8.1.0-posix-seh-rt_v6-rev0\mingw64\bin;%PATH%"
echo [INFO] MinGW Toolchain 64bit
) else (
set "EPICS_HOST_ARCH=win32-x86-mingw"
set "INCLUDE=C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\include;%INCLUDE%"
set "PATH=C:\mingw-w64\i686-6.3.0-posix-dwarf-rt_v5-rev1\mingw32\bin;%PATH%"
echo [INFO] MinGW Toolchain 32bit
)
echo [INFO] Compiler Version
gcc -v
goto Finish
)
if "%TOOLCHAIN%"=="2019" (
echo [INFO] Setting strawberry perl path
set "PATH=c:\strawberry\perl\site\bin;C:\strawberry\perl\bin;%PATH%"
)
set "VSINSTALL=C:\Program Files (x86)\Microsoft Visual Studio %TOOLCHAIN%"
if not exist "%VSINSTALL%\" set "VSINSTALL=C:\Program Files (x86)\Microsoft Visual Studio\%TOOLCHAIN%\Community"
if not exist "%VSINSTALL%\" goto MSMissing
set "MAKE=C:\tools\make"
echo [INFO] APPVEYOR_BUILD_WORKER_IMAGE=%APPVEYOR_BUILD_WORKER_IMAGE%
if "%MY_OS%"=="64BIT" (
set EPICS_HOST_ARCH=windows-x64%ST%
:: VS 2017/2019
if exist "%VSINSTALL%\VC\Auxiliary\Build\vcvars64.bat" (
call "%VSINSTALL%\VC\Auxiliary\Build\vcvars64.bat"
where cl
if !ERRORLEVEL! NEQ 0 goto MSMissing
goto MSFound
)
if exist "%VSINSTALL%\VC\vcvarsall.bat" (
call "%VSINSTALL%\VC\vcvarsall.bat" amd64
where cl
if !ERRORLEVEL! NEQ 0 (
call "%VSINSTALL%\VC\vcvarsall.bat" x86_amd64
where cl
if !ERRORLEVEL! NEQ 0 goto MSMissing
)
goto MSFound
)
if exist "%VSINSTALL%\VC\bin\amd64\vcvars64.bat" (
call "%VSINSTALL%\VC\bin\amd64\vcvars64.bat"
where cl
if !ERRORLEVEL! NEQ 0 goto MSMissing
goto MSFound
)
) else (
set EPICS_HOST_ARCH=win32-x86%ST%
:: VS 2017/2019
if exist "%VSINSTALL%\VC\Auxiliary\Build\vcvars32.bat" (
call "%VSINSTALL%\VC\Auxiliary\Build\vcvars32.bat"
where cl
if !ERRORLEVEL! NEQ 0 goto MSMissing
goto MSFound
)
if exist "%VSINSTALL%\VC\vcvarsall.bat" (
call "%VSINSTALL%\VC\vcvarsall.bat" x86
where cl
if !ERRORLEVEL! NEQ 0 goto MSMissing
goto MSFound
)
if exist "%VSINSTALL%\VC\bin\vcvars32.bat" (
call "%VSINSTALL%\VC\bin\vcvars32.bat"
where cl
if !ERRORLEVEL! NEQ 0 goto MSMissing
goto MSFound
)
if exist "%VSINSTALL%\Common7\Tools\vsvars32.bat" (
call "%VSINSTALL%\Common7\Tools\vsvars32.bat"
where cl
if !ERRORLEVEL! NEQ 0 goto MSMissing
goto MSFound
)
)
:MSMissing
echo [INFO] Installation for MSVC Toolchain %TOOLCHAIN% / %MY_OS% seems to be missing
exit 1
:MSFound
echo [INFO] Microsoft Visual Studio Toolchain %TOOLCHAIN%
echo [INFO] Compiler Version
cl
:Finish
echo [INFO] EPICS_HOST_ARCH: %EPICS_HOST_ARCH%
echo [INFO] Make version
%MAKE% --version
echo [INFO] Perl version
perl --version
%MAKE% %MAKEARGS% %*

View File

@@ -1,52 +0,0 @@
:: Build script for AppVeyor (https://ci.appveyor.com/)
:: Environment:
:: TOOLCHAIN - Toolchain Version [9.0/10.0/11.0/12.0/14.0/mingw]
:: CONFIGURATION - determines EPICS build [dynamic/static, -debug]
:: PLATFORM - "x86" -> use 32bit architecture
::
:: Prepares an Appveyor build by excuting the following steps
:: - Set up configure\CONFIG_SITE for static vs. dynamic build
:: - Install Mingw (TOOLCHAIN setting) in the in the appropriate flavor
:: - Download and install Make-4.1 from EPICS download page
Setlocal EnableDelayedExpansion
set MY_OS=64BIT
if "%PLATFORM%"=="x86" set MY_OS=32BIT
echo [INFO] Platform: %MY_OS%
:: with MSVC either static or debug can be handled as part
:: of EPICS_HOST_ARCH but not both. So we set the appropriate
:: options in CONFIG_SITE. For mingw and cygwin they are missing
:: some static and debug targets so set things here too
echo.%CONFIGURATION% | findstr /C:"static">nul && (
echo SHARED_LIBRARIES=NO>> configure\CONFIG_SITE
echo STATIC_BUILD=YES>> configure\CONFIG_SITE
echo [INFO] EPICS set up for static build
) || (
echo [INFO] EPICS set up for dynamic build
)
echo.%CONFIGURATION% | findstr /C:"debug">nul && (
echo HOST_OPT=NO>> configure\CONFIG_SITE
echo [INFO] EPICS set up for debug build
) || (
echo [INFO] EPICS set up for optimized build
)
echo [INFO] Installing Make 4.2.1 from ANL web site
curl -fsS --retry 3 -o C:\tools\make-4.2.1.zip https://epics.anl.gov/download/tools/make-4.2.1-win64.zip
cd \tools
"C:\Program Files\7-Zip\7z" e make-4.2.1.zip
set "PERLVER=5.30.0.1"
if "%TOOLCHAIN%"=="2019" (
echo [INFO] Installing Strawberry Perl %PERLVER%
curl -fsS --retry 3 -o C:\tools\perl-%PERLVER%.zip http://strawberryperl.com/download/%PERLVER%/strawberry-perl-%PERLVER%-64bit.zip
cd \tools
"C:\Program Files\7-Zip\7z" x perl-%PERLVER%.zip -oC:\strawberry
cd \strawberry
:: we set PATH in appveyor-build.bat
call relocation.pl.bat
)

View File

@@ -1,8 +0,0 @@
#!/bin/sh
#
# Checkout submodules on their appropriate branches
#
git submodule foreach '\
git checkout `git config -f $toplevel/.gitmodules submodule.$name.branch` && \
git pull '

View File

@@ -1,77 +0,0 @@
#!/bin/sh
set -e -x
die() {
echo "$1" >&2
exit 1
}
CACHEKEY=1
export EPICS_HOST_ARCH=`perl src/tools/EpicsHostArch.pl`
[ -e configure/os/CONFIG_SITE.Common.linux-x86 ] || die "Wrong location: $PWD"
case "$CMPLR" in
clang)
echo "Host compiler is clang"
cat << EOF >> configure/os/CONFIG_SITE.Common.$EPICS_HOST_ARCH
GNU = NO
CMPLR_CLASS = clang
CC = clang
CCC = clang++
EOF
;;
*) echo "Host compiler is default";;
esac
if [ "$STATIC" = "YES" ]
then
echo "Build static libraries/executables"
cat << EOF >> configure/CONFIG_SITE
SHARED_LIBRARIES=NO
STATIC_BUILD=YES
EOF
fi
# requires wine and g++-mingw-w64-i686
if [ "$WINE" = "32" ]
then
echo "Cross mingw32"
sed -i -e '/CMPLR_PREFIX/d' configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw
cat << EOF >> configure/os/CONFIG_SITE.linux-x86.win32-x86-mingw
CMPLR_PREFIX=i686-w64-mingw32-
EOF
cat << EOF >> configure/CONFIG_SITE
CROSS_COMPILER_TARGET_ARCHS+=win32-x86-mingw
EOF
fi
# set RTEMS to eg. "4.9" or "4.10"
if [ -n "$RTEMS" ]
then
echo "Cross RTEMS${RTEMS} for pc386"
curl -L "https://github.com/mdavidsaver/rsb/releases/download/20171203-${RTEMS}/i386-rtems${RTEMS}-trusty-20171203-${RTEMS}.tar.bz2" \
| tar -C / -xmj
sed -i -e '/^RTEMS_VERSION/d' -e '/^RTEMS_BASE/d' configure/os/CONFIG_SITE.Common.RTEMS
cat << EOF >> configure/os/CONFIG_SITE.Common.RTEMS
RTEMS_VERSION=$RTEMS
RTEMS_BASE=$HOME/.rtems
EOF
cat << EOF >> configure/CONFIG_SITE
CROSS_COMPILER_TARGET_ARCHS += RTEMS-pc386-qemu
EOF
# find local qemu-system-i386
echo -n "Using QEMU: "
type qemu-system-i386 || echo "Missing qemu"
fi
make -j2 $EXTRA
if [ "$TEST" != "NO" ]
then
make -j2 tapfiles
make -s test-results
fi

3
.gitattributes vendored
View File

@@ -1,5 +1,6 @@
.ci/ export-ignore
.tools/ export-ignore
.github/ export-ignore
.appveyor/ export-ignore
.appveyor.yml export-ignore
.travis.yml export-ignore
README export-subst

180
.github/workflows/ci-scripts-build.yml vendored Normal file
View File

@@ -0,0 +1,180 @@
# .github/workflows/ci-scripts-build.yml for use with EPICS Base ci-scripts
# (see: https://github.com/epics-base/ci-scripts)
# This is YAML - indentation levels are crucial
# Workflow name, shared by all branches
name: Base
# Trigger on pushes and PRs to any branch
on:
push:
paths-ignore:
- 'documentation/*'
- 'startup/*'
- '.appveyor/*'
- '.tools/*'
- '.gitattributes'
- '**/*.html'
- '**/*.md'
pull_request:
paths-ignore:
- 'documentation/*'
- 'startup/*'
- '.appveyor/*'
- '.tools/*'
- '.gitattributes'
- '**/*.html'
- '**/*.md'
env:
SETUP_PATH: .ci-local:.ci
BASE: SELF
EPICS_TEST_IMPRECISE_TIMING: YES
jobs:
build-base:
name: ${{ matrix.name }}
runs-on: ${{ matrix.os }}
# Set environment variables from matrix parameters
env:
CMP: ${{ matrix.cmp }}
BCFG: ${{ matrix.configuration }}
WINE: ${{ matrix.wine }}
RTEMS: ${{ matrix.rtems }}
EXTRA: ${{ matrix.extra }}
strategy:
fail-fast: false
matrix:
# Job names also name artifacts, character limitations apply
include:
- os: ubuntu-20.04
cmp: gcc
configuration: default
wine: "64"
name: "Ub-20 gcc-9 + MinGW"
- os: ubuntu-20.04
cmp: gcc
configuration: static
wine: "64"
name: "Ub-20 gcc-9 + MinGW, static"
- os: ubuntu-20.04
cmp: gcc
configuration: static
extra: "CMD_CXXFLAGS=-std=c++11"
name: "Ub-20 gcc-9 C++11, static"
- os: ubuntu-16.04
cmp: clang
configuration: default
name: "Ub-16 clang-9"
- os: ubuntu-20.04
cmp: clang
configuration: default
extra: "CMD_CXXFLAGS=-std=c++11"
name: "Ub-20 clang-10 C++11"
- os: ubuntu-20.04
cmp: gcc
configuration: default
rtems: "4.10"
name: "Ub-20 gcc-9 + RT-4.10"
- os: ubuntu-20.04
cmp: gcc
configuration: default
rtems: "4.9"
name: "Ub-20 gcc-9 + RT-4.9"
- os: ubuntu-16.04
cmp: gcc-4.8
utoolchain: "4.8"
configuration: default
name: "Ub-16 gcc-4.8"
- os: ubuntu-16.04
cmp: gcc-4.9
utoolchain: "4.9"
configuration: default
name: "Ub-16 gcc-4.9"
- os: ubuntu-20.04
cmp: gcc-8
utoolchain: "8"
configuration: default
name: "Ub-20 gcc-8"
- os: ubuntu-20.04
cmp: gcc-9
utoolchain: "9"
configuration: default
name: "Ub-20 gcc-9"
- os: ubuntu-20.04
cmp: clang
configuration: default
name: "Ub-20 clang-10"
- os: macos-latest
cmp: clang
configuration: default
name: "MacOS clang-12"
- os: windows-2019
cmp: vs2019
configuration: default
name: "Win2019 MSC-19"
- os: windows-2019
cmp: vs2019
configuration: static
name: "Win2019 MSC-19, static"
- os: windows-2019
cmp: vs2019
configuration: debug
name: "Win2019 MSC-19, debug"
- os: windows-2019
cmp: gcc
configuration: default
name: "Win2019 mingw"
steps:
- uses: actions/checkout@v2
with:
submodules: true
- name: Automatic core dumper analysis
uses: mdavidsaver/ci-core-dumper@master
- name: "apt-get install"
run: |
sudo apt-get update
sudo apt-get -y install qemu-system-x86 g++-mingw-w64-x86-64 gdb
if: runner.os == 'Linux'
- name: "apt-get install ${{ matrix.cmp }}"
run: |
sudo apt-get update
sudo apt-get -y install software-properties-common
sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test
sudo apt-get update
sudo apt-get -y install g++-${{ matrix.utoolchain }}
if: matrix.utoolchain
- name: Prepare and compile dependencies
run: python .ci/cue.py prepare
- name: Build main module
run: python .ci/cue.py build
- name: Run main module tests
run: python .ci/cue.py -T 20M test
- name: Upload tapfiles Artifact
if: ${{ always() }}
uses: actions/upload-artifact@v2
with:
name: tapfiles ${{ matrix.name }}
path: '**/O.*/*.tap'
- name: Collect and show test results
if: ${{ always() }}
run: python .ci/cue.py -T 5M test-results

2
.gitignore vendored
View File

@@ -11,6 +11,8 @@
/modules/Makefile.local
O.*/
/QtC-*
/.vscode/
*.orig
*.log
.*.swp
.DS_Store

7
.gitmodules vendored
View File

@@ -22,3 +22,10 @@
path = modules/pva2pva
url = https://github.com/epics-base/pva2pva
branch = master
[submodule ".ci"]
path = .ci
url = https://github.com/epics-base/ci-scripts
branch = master
[submodule "modules/pcas"]
path = modules/pcas
url = https://github.com/epics-modules/pcas

102
.tools/adjustver.py Executable file
View File

@@ -0,0 +1,102 @@
#!/usr/bin/env python3
import logging
import sys
import re
from io import StringIO
_log = logging.getLogger(__name__)
def main(args):
logging.basicConfig(level=args.level)
if args.dev is True:
actions=[
('DEVELOPMENT_FLAG', '1'),
('DEV_SNAPSHOT', '-DEV'),
]
elif args.dev is False:
actions=[
('DEVELOPMENT_FLAG', '0'),
('DEV_SNAPSHOT', ''),
]
elif args.version:
M=re.match(r'R?(\d+).(\d+).(\d+)(?:.(\d+))?(-.*)?', args.version)
actions=[
('SITE_VERSION', None),
('SHORT_VERSION', None),
('MINOR_VERSION', M[2]),
('REVISION', M[2]),
('MODIFICATION', M[3]),
('MAINTENANCE_VERSION', M[3]),
('PATCH_LEVEL', M[4] or '0'),
('DEVELOPMENT_FLAG', '1' if (M[5] or '').upper().endswith('-DEV') else '0'),
('DEV_SNAPSHOT', M[5] or ''),
('MAJOR_VERSION', M[1]),
('VERSION', M[1]), # plain _VERSION must be last to resolve ambiguity
]
elif args.dry_run:
_log.debug('Print existing')
for fname in args.conf:
print('# ', fname)
with open(fname, 'r') as F:
sys.stdout.write(F.read())
return
else:
print('One of --version, --release, --dev, or --dry-run is required')
sys.exit(1)
for name, val in actions:
_log.debug('Pattern "%s" -> "%s"', name, val)
for fname in args.conf:
OUT=StringIO()
with open(fname, 'r') as F:
for line in F:
_log.debug('Line: %s', repr(line))
for name, val in actions:
M = re.match(r'(\s*[A-Z_]+' + name + r'\s*=[\t ]*)(\S*)(\s*)', line)
if M and val is None:
_log.debug('Ignore')
OUT.write(line)
break
elif M:
_log.debug(' Match %s -> %s', M.re.pattern, M.groups())
OUT.write(M[1]+val+M[3])
break
else:
_log.debug('No match')
OUT.write(line)
if args.dry_run:
print('# ', fname)
print(OUT.getvalue())
else:
with open(fname, 'w') as F:
F.write(OUT.getvalue())
def getargs():
from argparse import ArgumentParser
P = ArgumentParser()
P.add_argument('-n','--dry-run', action='store_true', default=False)
P.add_argument('-d','--debug', dest='level', action='store_const',
const=logging.DEBUG, default=logging.INFO)
P.add_argument('-V', '--version', help='A version in R1.2.3-xyz or 1.2.3 form')
P.add_argument('-D', '--dev', action='store_true', default=None)
P.add_argument('-R', '--release', dest='dev', action='store_false')
P.add_argument('conf', nargs='+',
help='A configure/CONFIG_*_VERSION file name')
return P
if __name__=='__main__':
main(getargs().parse_args())

View File

@@ -1,4 +1,4 @@
#!/bin/sh
#!/bin/bash
#
# Make tar for git repo w/ one level of sub modules.
#
@@ -9,14 +9,18 @@ die() {
exit 1
}
TOPREV="$1"
FINALTAR="$2"
PREFIX="$3"
maybedie() {
if [ "$DEVMODE" ]; then
echo "Warning: $1" >&2
else
echo "Error: $1" >&2
exit 1
fi
}
if ! [ "$TOPREV" ]
then
usage() {
cat <<EOF >&2
usage: $0 <rev> [<outfile> [<prefix>]]
usage: $0 [-v] [-s] <rev> [<outfile> [<prefix>]]
<rev> may be any git revision spec. (tag, branch, or commit id).
@@ -24,9 +28,33 @@ usage: $0 <rev> [<outfile> [<prefix>]]
If <outfile> is omitted, "base-<rev>.tar.gz" will be used.
If provided, <prefix> must end with "/". If <prefix> is omitted,
the default is "base-<rev>/".
Options:
-v Enable verbose prints
-d Enable permissive developer mode
EOF
exit 1
fi
}
export DEVMODE=
while getopts "vd" OPT
do
case "$OPT" in
v) set -x;;
d) DEVMODE=1;;
?) echo "Unknown option"
usage;;
esac
done
shift $(($OPTIND - 1))
TOPREV="$1"
FINALTAR="$2"
PREFIX="${3:-}"
[ "$TOPREV" ] || usage
case "$FINALTAR" in
"")
@@ -59,16 +87,13 @@ case "$PREFIX" in
esac
# Check for both <tag> and R<tag>
if [ "$TOPREV" = "HEAD" ]
then
true
elif ! [ `git tag -l $TOPREV` ]
if ! [ `git tag -l $TOPREV` ]
then
if [ `git tag -l R$TOPREV` ]
then
TOPREV="R$TOPREV"
else
die "No tags exist '$TOPREV' or 'R$TOPREV'"
maybedie "No tags exist '$TOPREV' or 'R$TOPREV'"
fi
fi
@@ -89,11 +114,17 @@ git archive --prefix=$PREFIX $TOPREV | tar -C "$TDIR"/tar -x
#
# sub-modules appear in tree as eg.:
# 160000 commit c3a6cfcf0dad4a4eeecf59b474710d06ff3eb68a modules/ca
git ls-tree -r $TOPREV | awk '/^[0-9]+ commit / {print $3, $4}' | \
git ls-tree -r $TOPREV | \
awk '/^[0-9]+ commit / && $4 != ".ci" {print $3, $4}' | \
while read HASH MODDIR
do
echo "Visiting $HASH $MODDIR"
git -C $MODDIR archive --prefix=${PREFIX}${MODDIR}/ $HASH | tar -C "$TDIR"/tar -x
if [ -e $MODDIR/.git ]
then
git -C $MODDIR archive --prefix=${PREFIX}${MODDIR}/ $HASH | tar -C "$TDIR"/tar -x
else
maybedie " Submodule not checked out."
fi
done
# make a list of files copied and filter out undesirables
@@ -105,13 +136,17 @@ sed -i -e 's|^\./||' "$TDIR"/list.1
# Exclude files
sed \
-e '/\/\.\?ci\//d' \
-e '/\/\.ci\//d' \
-e '/\/\.ci-local\//d' \
-e '/\/\.tools\//d' \
-e '/\/jenkins\//d' \
-e '/\/\.git/d' \
-e '/\/\.hgtags$/d' \
-e '/\/\.cproject$/d' \
-e '/\/\.project$/d' \
-e '/\/\.travis\.yml$/d' \
-e '/\/\.appveyor\.yml$/d' \
-e '/\/\.readthedocs\.yml$/d' \
"$TDIR"/list.1 > "$TDIR"/list.2
if ! diff -U 0 "$TDIR"/list.1 "$TDIR"/list.2
@@ -129,5 +164,5 @@ tar -t $TAROPT -f "$FINALTAR" > "$TDIR"/list.3
# make sure we haven't picked up anything extra
if ! diff -u "$TDIR"/list.2 "$TDIR"/list.3
then
echo "Oops! Tarfile diff against plan shown above"
die "Oops! Tarfile diff against plan shown above"
fi

View File

@@ -1,27 +0,0 @@
sudo: false
dist: trusty
language: c
compiler:
- gcc
addons:
apt:
packages:
- libreadline6-dev
- libncurses5-dev
- perl
- clang
- g++-mingw-w64-i686
- qemu-system-x86
script:
- .ci/travis-build.sh
env:
- CMPLR=gcc EXTRA=LINKER_USE_RPATH=ORIGIN
- CMPLR=clang
- CMPLR=gcc STATIC=YES
- CMPLR=clang STATIC=YES
- CMPLR=gcc EXTRA=CMD_CXXFLAGS=-std=c++11
- CMPLR=clang EXTRA=CMD_CXXFLAGS=-std=c++11
- WINE=32 TEST=NO STATIC=YES
- WINE=32 TEST=NO STATIC=NO
- RTEMS=4.10 TEST=YES
- RTEMS=4.9 TEST=YES

View File

@@ -23,3 +23,10 @@ DIRS += modules
modules_DEPEND_DIRS = src
include $(TOP)/configure/RULES_TOP
UNINSTALL_DIRS += $(INSTALL_LOCATION)/src
copysrc:
tar cf - --exclude-vcs --exclude-backups --exclude=O.* modules/*/src | tar xf - -C $(INSTALL_LOCATION)
tar:
tar cfjP epics_base-$(EPICS_VERSION_NUMBER).tar.bz2 $(INSTALL_LOCATION)

View File

@@ -58,12 +58,8 @@ include $(CONFIG)/CONFIG_BASE_VERSION
include $(CONFIG)/os/CONFIG.$(EPICS_HOST_ARCH).Common
-include $(CONFIG)/os/CONFIG_SITE.$(EPICS_HOST_ARCH).Common
# Parse configure/RELEASE
# except when building Base itself, where this file is empty,
# and would error in src/tools/ anyway.
ifndef BASE_TOP
# Parse configure/RELEASE to find all upstream modules
RELEASE_TOPS := $(shell $(CONVERTRELEASE) -T $(TOP) releaseTops)
endif
ifdef T_A

View File

@@ -3,8 +3,7 @@
# National Laboratory.
# Copyright (c) 2002 The Regents of the University of California, as
# Operator of Los Alamos National Laboratory.
# EPICS BASE Versions 3.13.7
# and higher are distributed subject to a Software License Agreement found
# EPICS Base is distributed subject to a Software License Agreement found
# in file LICENSE that is included with this distribution.
#*************************************************************************
@@ -32,9 +31,9 @@ PROF_CFLAGS_YES = -p
GPROF_CFLAGS_YES = -pg
CODE_CFLAGS = $(PROF_CFLAGS_$(PROFILE)) $(GPROF_CFLAGS_$(GPROF))
CODE_CFLAGS += $(ASAN_FLAGS_$(ENABLE_ASAN))
WARN_CFLAGS_YES = -Wall
WARN_CFLAGS_YES = -Wall -Werror-implicit-function-declaration
WARN_CFLAGS_NO = -w
OPT_CFLAGS_YES = -O3
OPT_CFLAGS_YES = -O3 -g
OPT_CFLAGS_NO = -g
PROF_CXXFLAGS_YES = -p
@@ -43,7 +42,7 @@ CODE_CXXFLAGS = $(PROF_CXXFLAGS_$(PROFILE)) $(GPROF_CXXFLAGS_$(GPROF))
CODE_CXXFLAGS += $(ASAN_FLAGS_$(ENABLE_ASAN))
WARN_CXXFLAGS_YES = -Wall
WARN_CXXFLAGS_NO = -w
OPT_CXXFLAGS_YES = -O3
OPT_CXXFLAGS_YES = -O3 -g
OPT_CXXFLAGS_NO = -g
CODE_LDFLAGS = $(PROF_CXXFLAGS_$(PROFILE)) $(GPROF_CXXFLAGS_$(GPROF))

View File

@@ -42,8 +42,6 @@ FIND_TOOL = $(firstword $(wildcard $(TOOLS)/$(1) $(EPICS_BASE)/src/tools/$(1)))
PODTOHTML = $(PERL) $(TOOLS)/podToHtml.pl
CONVERTRELEASE = $(PERL) $(call FIND_TOOL,convertRelease.pl)
FULLPATHNAME = $(PERL) $(TOOLS)/fullPathName.pl
TAPTOJUNIT = $(PERL) $(TOOLS)/tap-to-junit-xml.pl
PROVE = $(PERL) $(TOOLS)/epicsProve.pl
GENVERSIONHEADER = $(PERL) $(TOOLS)/genVersionHeader.pl $(QUIET_FLAG) $(QUESTION_FLAG)
MAKERPATH = $(PYTHON) $(TOOLS)/makeRPath.py
@@ -63,3 +61,18 @@ REPLACEVAR = $(PERL) $(TOOLS)/replaceVAR.pl
# tools for cleaning out unwanted files
CVSCLEAN = $(call FIND_TOOL,cvsclean.pl)
DEPCLEAN = $(call FIND_TOOL,depclean.pl)
#---------------------------------------------------------------
# Tools for testing
TAPS_FAILED_LOG = .taps-failed.log
TESTS_FAILED_LOG = .tests-failed.log
TESTS_FAILED_PATH = $(abspath $(TOP)/$(TESTS_FAILED_LOG))
TAPTOJUNIT = $(PERL) $(TOOLS)/tap-to-junit-xml.pl
PROVE = $(PERL) $(TOOLS)/epicsProve.pl --failures --color
PROVE.tap = $(PROVE) --ext .tap --exec "$(CAT)"
TESTFAILURES = $(PERL) $(TOOLS)/testFailures.pl
SHOWTESTFAILURES = $(TESTFAILURES) $(TESTS_FAILED_PATH) $(TAPS_FAILED_LOG)
PROVE_FAILURE = echo $(abspath .)>> $(TESTS_FAILED_PATH)
TAPFILE_FAILURE = echo $@>> $(TAPS_FAILED_LOG)

View File

@@ -48,7 +48,7 @@ EPICS_VERSION = 7
EPICS_REVISION = 0
# EPICS_MODIFICATION must be a number >=0 and <256
EPICS_MODIFICATION = 3
EPICS_MODIFICATION = 5
# EPICS_PATCH_LEVEL must be a number (win32 resource file requirement)
# Not included in the official EPICS version number if zero
@@ -56,16 +56,7 @@ EPICS_PATCH_LEVEL = 1
# Immediately after an official release the EPICS_PATCH_LEVEL is incremented
# and the -DEV suffix is added (similar to the Maven -SNAPSHOT versions)
EPICS_DEV_SNAPSHOT=
#EPICS_DEV_SNAPSHOT=-DEV
#EPICS_DEV_SNAPSHOT=-pre1
#EPICS_DEV_SNAPSHOT=-pre1-DEV
#EPICS_DEV_SNAPSHOT=-pre2
#EPICS_DEV_SNAPSHOT=-pre2-DEV
#EPICS_DEV_SNAPSHOT=-rc1
#EPICS_DEV_SNAPSHOT=-rc1-DEV
#EPICS_DEV_SNAPSHOT=-rc2
#EPICS_DEV_SNAPSHOT=-rc2-DEV
EPICS_DEV_SNAPSHOT=-DEV
# No changes should be needed below here

View File

@@ -2,11 +2,11 @@
EPICS_CA_MAJOR_VERSION = 4
EPICS_CA_MINOR_VERSION = 13
EPICS_CA_MAINTENANCE_VERSION = 5
EPICS_CA_MAINTENANCE_VERSION = 9
# Development flag, set to zero for release versions
EPICS_CA_DEVELOPMENT_FLAG = 0
EPICS_CA_DEVELOPMENT_FLAG = 1
# Immediately after a release the MAINTENANCE_VERSION
# will be incremented and the DEVELOPMENT_FLAG set to 1

View File

@@ -80,12 +80,12 @@ IOCS_APPL_TOP = $(shell $(FULLPATHNAME) $(INSTALL_LOCATION))
#-------------------------------------------------------
# Silencing the build - suppress messages during 'make -s'
NOP = :
ECHO = @$(if $(findstring s,$(MFLAGS)),$(NOP),echo)
QUIET_FLAG := $(if $(findstring s,$(MFLAGS)),-q,)
ECHO = @$(if $(filter -s,$(MFLAGS)),$(NOP),echo)
QUIET_FLAG := $(if $(filter -s,$(MFLAGS)),-q,)
#-------------------------------------------------------
# Convert 'make -q' flag into '-i' for genVersionHeader.pl
QUESTION_FLAG := $(if $(findstring q,$(MFLAGS)),-i,)
QUESTION_FLAG := $(if $(filter -q,$(MFLAGS)),-i,)
#-------------------------------------------------------
ifdef T_A
@@ -306,7 +306,7 @@ LDLIBS = $(POSIX_LDLIBS) $(ARCH_DEP_LDLIBS) $(DEBUG_LDLIBS) $(OP_SYS_LDLIBS)\
CPPFLAGS = $($(BUILD_CLASS)_CPPFLAGS) $(POSIX_CPPFLAGS) $(OPT_CPPFLAGS)\
$(DEBUG_CPPFLAGS) $(WARN_CPPFLAGS) $(BASE_CPPFLAGS) $(TARGET_CPPFLAGS)\
$(USR_CPPFLAGS) $(CMD_CPPFLAGS) $(ARCH_DEP_CPPFLAGS) $(OP_SYS_CPPFLAGS)\
$(OP_SYS_INCLUDE_CPPFLAGS) $(CODE_CPPFLAGS)
$(OP_SYS_INCLUDE_CPPFLAGS) $(CODE_CPPFLAGS) $(API_CPPFLAGS)
#--------------------------------------------------
# ar definition default

View File

@@ -24,3 +24,5 @@ MSI3_15 = $(EPICS_DATABASE_HOST_BIN)/msi$(HOSTEXE)
# Libraries needed to link a basic IOC
EPICS_BASE_IOC_LIBS = dbRecStd dbCore ca Com
HAS_registerAllRecordDeviceDrivers=YES

View File

@@ -1,12 +1,12 @@
# Version number for the database APIs and shared library
EPICS_DATABASE_MAJOR_VERSION = 3
EPICS_DATABASE_MINOR_VERSION = 17
EPICS_DATABASE_MAINTENANCE_VERSION = 5
EPICS_DATABASE_MINOR_VERSION = 19
EPICS_DATABASE_MAINTENANCE_VERSION = 1
# Development flag, set to zero for release versions
EPICS_DATABASE_DEVELOPMENT_FLAG = 0
EPICS_DATABASE_DEVELOPMENT_FLAG = 1
# Immediately after a release the MAINTENANCE_VERSION
# will be incremented and the DEVELOPMENT_FLAG set to 1

View File

@@ -3,9 +3,8 @@
# National Laboratory.
# Copyright (c) 2002 The Regents of the University of California, as
# Operator of Los Alamos National Laboratory.
# EPICS BASE Versions 3.13.7
# and higher are distributed subject to a Software License Agreement found
# in file LICENSE that is included with this distribution.
# EPICS BASE is distributed subject to a Software License Agreement found
# in file LICENSE that is included with this distribution.
#*************************************************************************
# Author: Andrew Johnson
# Date: 20 April 1995
@@ -54,8 +53,3 @@ EPICS_IOC_IGNORE_SERVERS=""
# EPICS_IOC_LOG_PORT Log server port number etc.
EPICS_IOC_LOG_PORT=7004
# Other services:
EPICS_CMD_PROTO_PORT=
EPICS_AR_PORT=7002

View File

@@ -1,12 +1,12 @@
# Version number for the libcom APIs and shared library
EPICS_LIBCOM_MAJOR_VERSION = 3
EPICS_LIBCOM_MINOR_VERSION = 17
EPICS_LIBCOM_MAINTENANCE_VERSION = 6
EPICS_LIBCOM_MINOR_VERSION = 19
EPICS_LIBCOM_MAINTENANCE_VERSION = 1
# Development flag, set to zero for release versions
EPICS_LIBCOM_DEVELOPMENT_FLAG = 0
EPICS_LIBCOM_DEVELOPMENT_FLAG = 1
# Immediately after a release the MAINTENANCE_VERSION
# will be incremented and the DEVELOPMENT_FLAG set to 1

View File

@@ -22,6 +22,7 @@
# darwin-x86 (Intel based Apple running OSX)
# freebsd-x86 (GNU compiler used for host builds)
# freebsd-x86_64 (GNU compiler used for host builds)
# linux-aarch64 (GNU compiler used for host builds)
# linux-arm (GNU compiler used for host builds)
# linux-ppc (GNU compiler used for host builds)
# linux-ppc64 (GNU compiler used for host builds)
@@ -51,7 +52,6 @@
# windows-x64-debug (MS Visual C++ compiler with debug option for host builds)
# EPICS_HOST_ARCH is a required environment variable
# Do not set EPICS_HOST_ARCH in this file.
# Use base/startup files to set EPICS_HOST_ARCH or
# provide EPICS_HOST_ARCH on the GNU make command line.
@@ -67,8 +67,7 @@
# linux-586 (linux-x86 host)
# linux-686 (linux-x86 host)
# linux-arm (linux-x86 or -x86_64 host)
# linux-arm_eb (linux-x86 host)
# linux-arm_el (linux-x86 host)
# linux-aarch64 (linux-x86_64 host)
# linux-athlon (linux-x86 host)
# linux-cris (Axis GNU crosscompiler on linux-x86 host)
# linux-cris_v10 (Axis GNU crosscompiler on linux-x86 host)
@@ -76,9 +75,6 @@
# linux-microblaze
# linux-xscale_be
# vxWorks-486
# vxWorks-68040
# vxWorks-68040lc
# vxWorks-68060
# vxWorks-pentium
# vxWorks-ppc32 (32-bit PowerPC CPUs with full FPU)
# vxWorks-ppc32sf (32-bit PowerPC CPUs without FPU)
@@ -161,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

@@ -196,12 +196,12 @@ endif
#---------------------------------------------------------------
# build dependancies, clean rule
inc: $(COMMON_INC) $(INSTALL_INC)
inc: $(COMMON_INC) $(INSTALL_INC) $(COMMON_DBDS) $(COMMON_DBDCATS) \
$(INSTALL_DBDS) $(INSTALL_DBD_INSTALLS)
build: $(COMMON_DBDS) $(COMMON_DBS) $(COMMON_DBDCATS) \
$(INSTALL_DBDS) $(INSTALL_DBS) \
build: $(COMMON_DBS) $(INSTALL_DBS) \
$(DBDDEPENDS_FILES) $(TARGETS) \
$(INSTALL_DB_INSTALLS) $(INSTALL_DBD_INSTALLS)
$(INSTALL_DB_INSTALLS)
clean: db_clean
@@ -436,7 +436,7 @@ $(COMMON_DIR)/%.html: %.dbd.pod
$(COMMON_DIR)/%.html: %.pod
@$(RM) $(notdir $@)
$(PODTOHTML) -o $(notdir $@) $<
$(PODTOHTML) -s -s -o $(notdir $@) $<
@$(MV) $(notdir $@) $@
$(COMMON_DIR)/%.html: %.pm

View File

@@ -32,12 +32,12 @@ vpath %.l $(USR_VPATH) $(ALL_SRC_DIRS)
include $(CONFIG)/CONFIG_ADDONS
#---------------------------------------------------------------
# Set PROD, TESTPROD, OBJS, and LIBRARY
SCRIPTS_HOST += $(PERL_SCRIPTS)
# PERL_SCRIPTS are installed into existing $(INSTALL_BIN) for Host systems
ifeq ($(findstring Host,$(VALID_BUILDS)),Host)
# Host targets can compile and run programs
ifneq (,$(findstring Host,$(VALID_BUILDS)))
LIBRARY += $(LIBRARY_HOST)
LOADABLE_LIBRARY += $(LOADABLE_LIBRARY_HOST)
OBJS += $(OBJS_HOST)
@@ -49,7 +49,21 @@ TESTSCRIPTS += $(TESTSCRIPTS_HOST)
TESTPROD += $(TESTPROD_HOST)
endif
ifeq ($(findstring Ioc,$(VALID_BUILDS)),Ioc)
# Command targets have a command line and support main()
ifneq (,$(findstring Command,$(VALID_BUILDS)))
LIBRARY += $(LIBRARY_CMD)
LOADABLE_LIBRARY += $(LOADABLE_LIBRARY_CMD)
OBJS += $(OBJS_CMD)
PROD += $(PROD_CMD)
SCRIPTS += $(SCRIPTS_CMD)
TARGETS += $(TARGETS_CMD)
TESTLIBRARY += $(TESTLIBRARY_CMD)
TESTSCRIPTS += $(TESTSCRIPTS_CMD)
TESTPROD += $(TESTPROD_CMD)
endif
# Ioc targets can run IOCs
ifneq (,$(findstring Ioc,$(VALID_BUILDS)))
LIBRARY += $(LIBRARY_IOC)
LOADABLE_LIBRARY += $(LOADABLE_LIBRARY_IOC)
OBJS += $(OBJS_IOC)
@@ -86,20 +100,40 @@ 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
#ifneq (,$(strip $(PROD) $(TESTPROD) $(LIBRARY) $(TESTLIBRARY) $(LOADABLE_LIBRARY) ))
ifneq (,$(strip $(PROD) $(TESTPROD) $(LIBRARY) $(TESTLIBRARY) \
$(LOADABLE_LIBRARY)))
include $(CONFIG)/RULES_TARGET
#endif
endif
#---------------------------------------------------------------
# Read dependency files
ifneq (inc,$(strip $(MAKECMDGOALS)))
ifneq (,$(strip $(HDEPENDS_FILES)))
$(filter-out $(wildcard *$(DEP)), $(HDEPENDS_FILES)): | $(COMMON_INC)
-include $(HDEPENDS_FILES)
endif
endif
#---------------------------------------------------------------
# Products and Object libraries
@@ -108,17 +142,17 @@ PRODTARGETS += $(PRODNAME) $(MUNCHNAME) $(CTDT_SRCS) $(CTDT_OBJS) $(NMS)
TESTPRODTARGETS += $(TESTPRODNAME) $(TESTMUNCHNAME)
#---------------------------------------------------------------
# Test specifications and test result files
# Test result files
#
ifneq (,$(strip $(TESTS)))
TARGETS += testspec
endif
# Enable testing if this host can run tests on the current target
ifneq (,$(findstring $(T_A),$(EPICS_HOST_ARCH) $(CROSS_COMPILER_RUNTEST_ARCHS)))
# Enable testing if this host can run tests for the current target
ifneq (,$(filter $(T_A), $(EPICS_HOST_ARCH) $(CROSS_COMPILER_RUNTEST_ARCHS)))
RUNTESTS_ENABLED = YES
TAPFILES += $(TESTSCRIPTS:.t=.tap)
JUNITFILES += $(TAPFILES:.tap=.xml)
TESTSCRIPTS.t = $(filter %.t, $(TESTSCRIPTS))
TAPFILES.t += $(TESTSCRIPTS.t:.t=.tap)
JUNITFILES.t += $(TESTSCRIPTS.t:.t=-results.xml)
TAPFILES += $(TAPFILES.t)
JUNITFILES += $(JUNITFILES.t)
endif
#---------------------------------------------------------------
@@ -147,12 +181,13 @@ build: inc
build: $(OBJSNAME) $(LIBTARGETS) $(PRODTARGETS) $(TESTPRODTARGETS) \
$(TARGETS) $(TESTSCRIPTS) $(INSTALL_LIB_INSTALLS)
inc: $(COMMON_INC) $(INSTALL_INC) $(INSTALL_CONFIGS)
inc: $(COMMON_INC) $(INSTALL_INC) $(INSTALL_CONFIGS) $(INSTALLS_CFG) \
$(INSTALL_HTMLS) $(INSTALLS_PERL_MODULES) $(INSTALL_SCRIPTS)
buildInstall: \
$(INSTALL_SCRIPTS) $(INSTALL_PROD) $(INSTALL_MUNCHS) \
$(INSTALL_PROD) $(INSTALL_MUNCHS) \
$(INSTALL_TCLLIBS) $(INSTALL_TCLINDEX) \
$(INSTALL_HTMLS) $(INSTALL_DOCS) \
$(INSTALL_DOCS) \
$(INSTALL_OBJS) \
$(INSTALL_TEMPLATE) \
$(INSTALL_BIN_INSTALLS)
@@ -173,9 +208,9 @@ ifdef RES
@$(RM) *$(RES)
endif
# Sort mkdir targets to remove duplicates & make parents first
$(DIRECTORY_TARGETS):
$(MKDIR) $(sort $@)
# Sort directories to remove duplicates & make parents first
$(sort $(DIRECTORY_TARGETS)):
$(MKDIR) $@
# Install LIB_INSTALLS libraries before linking executables
$(TESTPRODNAME) $(PRODNAME): | $(INSTALL_LIB_INSTALLS)
@@ -208,7 +243,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)
@@ -311,10 +346,6 @@ $(LOADABLE_SHRLIBNAME): $(LOADABLE_SHRLIB_PREFIX)%$(LOADABLE_SHRLIB_SUFFIX):
$(LINK.shrlib)
$(MT_DLL_COMMAND)
$(LIBNAME) $(SHRLIBNAME) $(LOADABLE_SHRLIBNAME): | $(INSTALL_LIB)
$(INSTALL_LIB):
@$(MKDIR) $@
#---------------------------------------------------------------
# C++ munching for VxWorks
@@ -354,23 +385,24 @@ $(MODNAME): %$(MODEXT): %$(EXE)
#---------------------------------------------------------------
# Automated testing
runtests: $(TESTSCRIPTS)
runtests: run-tap-tests
run-tap-tests: $(TESTSCRIPTS.t)
ifneq ($(TESTSCRIPTS.t),)
ifdef RUNTESTS_ENABLED
$(PERL) -MTest::Harness -e 'runtests @ARGV if @ARGV;' $^
$(ECHO) "$(PROVE) $^"
@$(PROVE) $^ || $(PROVE_FAILURE)
endif
endif
testspec: $(TESTSCRIPTS)
@$(RM) $@
@echo OS-class: $(OS_CLASS) > $@
@echo Target-arch: $(T_A) >> $@
$(if $^, @echo Tests: $^ >> $@)
$(if $(TESTFILES), @echo Files: $(TESTFILES) >> $@)
$(if $(TESTSPEC_$(OS_CLASS)), @echo "Harness: $(TESTSPEC_$(OS_CLASS))" >> $@)
tapfiles: $(TAPFILES)
junitfiles: $(JUNITFILES)
test-results: tapfiles
ifneq ($(TAPFILES),)
test-results: tap-results
tap-results: $(TAPFILES)
ifneq ($(strip $(TAPFILES)),)
ifdef RUNTESTS_ENABLED
$(PROVE) --failures --ext .tap --exec "$(CAT)" --color $(TAPFILES)
$(ECHO) "$(PROVE.tap) $^"
@$(PROVE.tap) $^ || $(PROVE_FAILURE)
endif
CURRENT_TAPFILES := $(wildcard $(TAPFILES))
@@ -378,23 +410,21 @@ CURRENT_JUNITFILES := $(wildcard $(JUNITFILES))
endif
clean-tests:
ifneq ($(CURRENT_TAPFILES),)
$(RM) $(CURRENT_TAPFILES)
ifneq ($(CURRENT_TAPFILES)$(TAPS_FAILED_LOG),)
$(RM) $(CURRENT_TAPFILES) $(TAPS_FAILED_LOG)
endif
ifneq ($(CURRENT_JUNITFILES),)
$(RM) $(CURRENT_JUNITFILES)
endif
tapfiles: $(TESTSCRIPTS) $(TAPFILES)
junitfiles: $(JUNITFILES)
# A .tap file is the output from running the associated test script
%.tap: %.t
$(TAPFILES.t): %.tap: %.t
ifdef RUNTESTS_ENABLED
$(PERL) $< -tap > $@
$(ECHO) "$(PERL) $< -tap > $@"
@$(PERL) $< -tap > $@ || $(TAPFILE_FAILURE)
endif
%.xml: %.tap
$(JUNITFILES.t): %-results.xml: %.tap
$(TAPTOJUNIT) --puretap --output $@ --input $< $*
# If there's a perl test script (.plt) available, use it
@@ -409,6 +439,23 @@ endif
$(PERL) $(TOOLS)/makeTestfile.pl $(T_A) $(EPICS_HOST_ARCH) $@ $<
#---------------------------------------------------------------
# Generate $(API_HEADER) files on request (%API.h)
ifdef API_HEADER
# Install them
INC += $(API_HEADER)
# Ensure we generate them early enough
INSTALL_API_HEADERS = $(addprefix $(INSTALL_INCLUDE)/,$(API_HEADER))
$(filter-out $(INSTALL_API_HEADERS), $(INSTALL_INC)) $(HDEPENDS_FILES): \
| $(INSTALL_API_HEADERS)
# How to make one
$(COMMON_DIR)/%API.h: $(TOOLS)/makeAPIheader.pl
@$(RM) $@
$(PERL) $(TOOLS)/makeAPIheader.pl -o $@ $(@:$(COMMON_DIR)/%API.h=%)
endif
# Generate header with version number from VCS
ifneq ($(GENVERSION),)
@@ -553,8 +600,8 @@ include $(CONFIG)/RULES_EXPAND
.PRECIOUS: $(COMMON_INC)
.PHONY: all host inc build install clean rebuild buildInstall build_clean
.PHONY: runtests tapfiles clean-tests test-results junitfiles
.PHONY: checkRelease warnRelease noCheckRelease FORCE
.PHONY: runtests run-tap-tests tapfiles junitfiles test-results tap-results
.PHONY: clean-tests checkRelease warnRelease noCheckRelease FORCE
include $(CONFIG)/RULES_COMMON

View File

@@ -4,7 +4,7 @@
# Copyright (c) 2002 The Regents of the University of California, as
# Operator of Los Alamos National Laboratory.
# EPICS BASE is distributed subject to a Software License Agreement found
# in the file LICENSE that is included with this distribution.
# in the file LICENSE that is included with this distribution.
#*************************************************************************
ARCHS += $(BUILD_ARCHS)
@@ -54,7 +54,7 @@ $(foreach dir, $(DIRS), \
define DEP_template2
$(1)$$(DIVIDER)$(2) : $$(foreach ddir, $$($(1)_DEPEND_DIRS), \
$$(addsuffix $$(DIVIDER)$(2),$$(ddir)))
$$(addsuffix $$(DIVIDER)$(2),$$(ddir))) | before-$(2)
endef
$(foreach action, $(ACTIONS), \
$(foreach dir, $(DIRS), \
@@ -79,18 +79,24 @@ $(foreach arch, $(ARCHS), \
dirPart = $(join $(dir $@), $(word 1, $(subst $(DIVIDER), ,$(notdir $@))))
actionArchPart = $(join $(word 2, $(subst $(DIVIDER), ,$(notdir $@))), \
$(addprefix $(DIVIDER),$(word 3, $(subst $(DIVIDER), ,$(notdir $@)))))
$(DIRS) $(dirActionTargets) $(dirArchTargets) $(dirActionArchTargets) :
$(addprefix $(DIVIDER),$(word 3, $(subst $(DIVIDER), ,$(notdir $@)))))
$(DIRS) $(dirActionTargets) $(dirArchTargets) $(dirActionArchTargets):
$(MAKE) -C $(dirPart) $(actionArchPart)
# before-action rules are run once prior to recursing through the
# list of subdirectories and running the action rule in each one.
# See DEP_template2 above for how that rule ordering is achieved.
beforeActions = $(addprefix before-,$(ACTIONS))
$(beforeActions):
$(ARCHS) $(ACTIONS) $(actionArchTargets) :%: \
$(foreach dir, $(DIRS), $(dir)$(DIVIDER)%)
.PHONY: $(DIRS) all host rebuild
.PHONY: $(ARCHS) $(ACTIONS)
.PHONY: $(dirActionTargets) $(dirArchTargets)
.PHONY: $(dirActionArchTargets)
.PHONY: $(actionArchTargets)
.PHONY : $(DIRS) all host rebuild
.PHONY : $(ARCHS) $(ACTIONS) $(beforeActions)
.PHONY : $(dirActionTargets) $(dirArchTargets)
.PHONY : $(dirActionArchTargets)
.PHONY : $(actionArchTargets)
include $(CONFIG)/RULES_COMMON

View File

@@ -12,28 +12,72 @@
vpath %@ $(USR_VPATH) $(ALL_SRC_DIRS)
#---------------------------------------------------------------
# Variable expansion
# Template variable expansion
# This feature allows you to instantiate simple template files at
# build-time, replacing macros spelled @NAME@ with values provided
# by the Makefile. The template filename must end with an @ sign,
# which is removed to create the expanded filename.
# Makefiles can use this variable expansion as follows:
#
# 1. Add the template filename (with the trailing @ sign) to either
# the EXPAND or EXPAND_COMMON variable, for example:
# EXPAND_COMMON += myVersion.h@
# Use EXPAND_COMMON for templates that don't depend on the
# target architecture (these will be generated in O.Common).
# 2. There are 2 ways of defining template macros. The simplest
# is to add a NAME=VALUE string to the EXPAND_VARS variable for
# the desired macros, e.g.:
# EXPAND_VARS += MY_MAJOR_VERSION=$(MY_MAJOR_VERSION)
# EXPAND_VARS += MY_MINOR_VERSION=$(MY_MINOR_VERSION)
# These values may not contain spaces, even if inside quotes.
# 3. A better way in the above case is to add the names of any
# Makefile variables that should be provided as macros to the
# variable EXPAND_ME, like this:
# EXPAND_ME += MY_MAJOR_VERSION
# EXPAND_ME += MY_MINOR_VERSION
# The values of these variables may contain spaces.
# 4. The macros TOP and ARCH will be set by the build system.
# TOP is the value of $(INSTALL_LOCATION) for this module.
# ARCH is the target architecture $(T_A), but is only set
# while expanding files in EXPAND
# 5. Add the expanded filename to some other variable that will
# cause it to be created and used, such as INC here:
# INC += myVersion.h
# Default settings
EXPAND_TOOL ?= $(PERL) $(TOOLS)/expandVars.pl
EXPANDFLAGS += -t $(INSTALL_LOCATION) -a $(T_A)
EXPANDFLAGS += $(addprefix -D ,$(EXPAND_VARS))
EXPANDARCH = -a $(T_A)
EXPANDFLAGS += -t $(INSTALL_LOCATION)
EXPANDFLAGS += $(addprefix -D ,$(EXPAND_VARS) $($@_EXPAND_VARS))
EXPANDFLAGS += $(foreach var, $(EXPAND_ME) $($@_EXPAND_ME), \
-D$(var)="$(strip $($(var)))")
# The names of files to be expanded must end with '@'
EXPANDED = $(EXPAND:%@=%)
EXPANDED_COM = $(EXPAND_COMMON:%@=%)
EXPANDED_COMMON = $(EXPANDED_COM:%=$(COMMON_DIR)/%)
$(EXPANDED): %: %@
$(ECHO) "Expanding $< to $@"
@$(RM) $@
@$(EXPAND_TOOL) $(EXPANDFLAGS) $($@_EXPANDFLAGS) $< $@
$(EXPAND_TOOL) $(EXPANDARCH) $(EXPANDFLAGS) $($@_EXPANDFLAGS) $< $@
$(EXPANDED_COM): %: %@
$(ECHO) "Expanding $< to $(COMMON_DIR)/$@"
@$(RM) $@
$(EXPAND_TOOL) $(EXPANDFLAGS) $($@_EXPANDFLAGS) $< $@
$(EXPANDED_COMMON): $(COMMON_DIR)/%: %
@$(MV) $< $@
clean: expand_clean
expand_clean:
@$(RM) $(EXPANDED)
@$(RM) $(EXPANDED) $(EXPANDED_COMMON)
.PRECIOUS: $(EXPANDED)
.PRECIOUS: $(EXPANDED) $(EXPANDED_COMMON)
.PHONY: expand_clean
#---------------------------------------------------------------
@@ -42,8 +86,10 @@ expand_clean:
ASSEMBLE_TOOL ?= $(PERL) $(TOOLS)/assembleSnippets.pl
define COMMON_ASSEMBLY_template
ifneq '$$($1_PATTERN)' ''
$1_SNIPPETS += $$(foreach dir, .. $$(SRC_DIRS), \
$$(wildcard $$(dir)/$$($1_PATTERN)))
endif
$(COMMON_DIR)/$1: $$($1_SNIPPETS)
$(ECHO) "Assembling common file $$@ from snippets"
@$(RM) $1
@@ -54,8 +100,10 @@ $(foreach asy, $(COMMON_ASSEMBLIES), \
$(eval $(call COMMON_ASSEMBLY_template,$(strip $(asy)))))
define ASSEMBLY_template
ifneq '$$($1_PATTERN)' ''
$1_SNIPPETS += $$(foreach dir, .. $$(SRC_DIRS), \
$$(wildcard $$(dir)/$$($1_PATTERN)))
endif
$1: $$($1_SNIPPETS)
$(ECHO) "Assembling file $$@ from snippets"
@$(RM) $$@
@@ -70,4 +118,3 @@ $1$(DEP):
endef
$(foreach asy, $(sort $(COMMON_ASSEMBLIES) $(ASSEMBLIES)), \
$(eval $(call ASSEMBLY_DEP_template,$(strip $(asy)))))

View File

@@ -23,7 +23,8 @@
# -include $(TOP)/../CONFIG_SITE.local
# Add checked-out submodules to DIRS
DIRS += $(subst /Makefile,,$(wildcard $(addsuffix /Makefile, $(SUBMODULES))))
LIVE_SUBMODULES = $(subst /Makefile,,$(wildcard $(addsuffix /Makefile, $(SUBMODULES))))
DIRS += $(LIVE_SUBMODULES)
include $(CONFIG)/RULES_DIRS
@@ -45,3 +46,10 @@ realclean:
$(RM) $(wildcard RELEASE.*.local)
.PHONY: RELEASE.host realclean
# Testing: Combine test failure logs from the live submodules
TESTS_FAILED_LOGS = $(wildcard $(addsuffix /$(TESTS_FAILED_LOG), \
$(LIVE_SUBMODULES)))
runtests test-results: % : | $(addsuffix $(DIVIDER)%, $(LIVE_SUBMODULES))
$(if $(TESTS_FAILED_LOGS), \
@$(CAT) $(TESTS_FAILED_LOGS)>> $(TESTS_FAILED_PATH))

View File

@@ -21,7 +21,6 @@ $(foreach target, $(PROD) $(TESTPROD) $(LIBRARY) $(TESTLIBRARY) $(LOADABLE_LIBRA
#-----------------------------------------------------------------------
# This define block requires GNU make 3.81
define PROD_template
ifeq ($$(strip $$($(1)_OBJS) $$($(1)_SRCS) $$(PRODUCT_OBJS)),)
$(1)_OBJS = $(1)$$(OBJ)
@@ -95,12 +94,20 @@ $(1)_DLL_DEPLIBS=$$(foreach lib, $$($(1)_DLL_LIBS), \
$$(LIB_PREFIX)$(1)$$(LIB_SUFFIX):$$($(1)_OBJSNAME) $$($(1)_RESS)
$$(LIB_PREFIX)$(1)$$(LIB_SUFFIX):$$($(1)_DEPLIBS)
ifneq ($$($(1)_API),)
$$(LIB_PREFIX)$(1)$$(LIB_SUFFIX): API_CPPFLAGS += -DBUILDING_$$($(1)_API)_API
endif
ifeq ($$(SHARED_LIBRARIES),YES)
ifdef SHRLIB_SUFFIX
$$(SHRLIB_PREFIX)$(1)$$(SHRLIB_SUFFIX):$$($(1)_OBJSNAME) $$($(1)_RESS)
$$(SHRLIB_PREFIX)$(1)$$(SHRLIB_SUFFIX):$$($(1)_DEPLIBS)
$$(SHRLIB_PREFIX)$(1)$$(SHRLIB_SUFFIX):$$($(1)_DLL_DEPLIBS)
ifneq ($$($(1)_API),)
$$(SHRLIB_PREFIX)$(1)$$(SHRLIB_SUFFIX): API_CPPFLAGS += -DBUILDING_$$($(1)_API)_API
endif
endif
endif
@@ -141,6 +148,11 @@ $(1)_DLL_DEPLIBS=$$(foreach lib, $$($(1)_DLL_LIBS),\
$$(LOADABLE_SHRLIB_PREFIX)$(1)$$(LOADABLE_SHRLIB_SUFFIX):$$($(1)_OBJSNAME) $$($(1)_RESS)
$$(LOADABLE_SHRLIB_PREFIX)$(1)$$(LOADABLE_SHRLIB_SUFFIX):$$($(1)_DEPLIBS)
$$(LOADABLE_SHRLIB_PREFIX)$(1)$$(LOADABLE_SHRLIB_SUFFIX):$$($(1)_DLL_DEPLIBS)
ifneq ($$($(1)_API),)
$$(LOADABLE_SHRLIB_PREFIX)$(1)$$(LOADABLE_SHRLIB_SUFFIX): \
API_CPPFLAGS += -DBUILDING_$$($(1)_API)_API
endif
endef
$(foreach target, $(LOADABLE_LIBRARY), \

View File

@@ -26,53 +26,54 @@ ifndef DISABLE_TOP_RULES
distclean: realclean cvsclean realuninstall
realuninstall: uninstallDirs
$(RMDIR) $(INSTALL_LOCATION_BIN)
$(RMDIR) $(INSTALL_LOCATION_LIB)
$(RMDIR) $(INSTALL_LOCATION_BIN) $(INSTALL_LOCATION_LIB)
UNINSTALL_DIRS += $(INSTALL_DB) $(INSTALL_DBD) $(INSTALL_DOC) $(INSTALL_HTML)
UNINSTALL_DIRS += $(INSTALL_INCLUDE) $(INSTALL_TEMPLATES) $(DIRECTORY_TARGETS)
ifneq ($(INSTALL_LOCATION),$(TOP))
UNINSTALL_DIRS += $(INSTALL_CONFIG)
endif
uninstallDirs:
uninstallDirs: | clean
$(RMDIR) $(UNINSTALL_DIRS)
uninstall: archuninstall uninstallDirs
# Remove the bin and lib directories if they have no sub-directories
#
EMPTY_INSTALL_DIRS = \
$(if $(wildcard $(INSTALL_LOCATION_BIN)/*),,$(INSTALL_LOCATION_BIN)) \
$(if $(wildcard $(INSTALL_LOCATION_LIB)/*),,$(INSTALL_LOCATION_LIB))
uninstall: archuninstall uninstallDirs | clean
$(RMDIR) $(EMPTY_INSTALL_DIRS)
archuninstall: $(addprefix uninstall$(DIVIDER),$(BUILD_ARCHS)) | cleandirs
archuninstall: $(addprefix uninstall$(DIVIDER),$(BUILD_ARCHS))
archPart = $(word 2, $(subst $(DIVIDER), ,$@))
uninstall$(DIVIDER)%:
$(RMDIR) $(INSTALL_LOCATION_BIN)/$(archPart)
$(RMDIR) $(INSTALL_LOCATION_LIB)/$(archPart)
uninstall$(DIVIDER)%: | clean
$(RMDIR) $(addsuffix /$(subst uninstall$(DIVIDER),,$@), \
$(INSTALL_LOCATION_BIN) $(INSTALL_LOCATION_LIB))
# Remove the bin and lib directories if they have no sub-directories
#
cleandirs:
@$(NOP)
ifeq ($(wildcard $(INSTALL_LOCATION_BIN)/*),)
$(RMDIR) $(INSTALL_LOCATION_BIN)
endif
ifeq ($(wildcard $(INSTALL_LOCATION_LIB)/*),)
$(RMDIR) $(INSTALL_LOCATION_LIB)
endif
# Only run this at the top of the parent
runtests test-results:
@$(SHOWTESTFAILURES)
else
#
# Using a disabled rule aborts
#
cleandirs distclean uninstall realuninstall archuninstall:
distclean uninstall realuninstall archuninstall:
$(error Target '$@' not available in a submodule)
endif # DISABLE_TOP_RULES
# Clean out old results
before-runtests before-test-results: rm-failure-file
rm-failure-file:
$(RM) $(TESTS_FAILED_PATH)
help:
@echo "Usage: gnumake [options] [target] ..."
@echo "Targets supported by all Makefiles:"
@echo " all - Same as install (default rule)"
@echo " inc - Installs header files"
@echo " inc - Installs header, dbd and html files"
@echo " build - Builds and installs all targets"
@echo " install - Builds and installs all targets"
@echo " buildInstall - Same as install (deprecated)"
@@ -106,7 +107,7 @@ endif
@echo "Object targets are supported by the O.<arch> level Makefile .e.g"
@echo " xxxRecord.o"
.PHONY: cleandirs distclean uninstall help
.PHONY: distclean uninstall rm-failure-file help
.PHONY: realuninstall archuninstall uninstallDirs
ifndef DISABLE_TOP_RULES

View File

@@ -3,8 +3,8 @@
# National Laboratory.
# Copyright (c) 2002 The Regents of the University of California, as
# Operator of Los Alamos National Laboratory.
# EPICS BASE Versions 3.13.7
# and higher are distributed subject to a Software License Agreement found
# SPDX-License-Identifier: EPICS
# EPICS Base is distributed subject to a Software License Agreement found
# in file LICENSE that is included with this distribution.
#*************************************************************************
# Makefile for base/src/sample

View File

@@ -0,0 +1,2 @@
# Include definitions common to linux pentium targets
include $(CONFIG)/os/CONFIG.Common.linux-x86_64

View File

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

View File

@@ -0,0 +1,2 @@
# Include definitions common to linux pentium targets
include $(CONFIG)/os/CONFIG.Common.linux-x86_64

View File

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

View File

@@ -76,7 +76,7 @@ CPPFLAGS += $($(BUILD_CLASS)_CPPFLAGS) $(POSIX_CPPFLAGS) $(OPT_CPPFLAGS)\
$(USR_CPPFLAGS) $(CMD_CPPFLAGS) $(ARCH_DEP_CPPFLAGS) $(OP_SYS_CPPFLAGS)\
$(OP_SYS_INCLUDE_CPPFLAGS) $(CODE_CPPFLAGS)
ECHO = @$(if $(findstring s,$(MFLAGS)),$(NOP),echo)
ECHO = @$(if $(filter -s,$(MFLAGS)),$(NOP),echo)
#--------------------------------------------------
# Although RTEMS uses gcc, it wants to use gcc its own way

View File

@@ -0,0 +1,7 @@
# Include definitions common to linux pentium targets
include $(CONFIG)/os/CONFIG.Common.linux-x86
ARCH_DEP_CFLAGS += -march=i686
# have no full C++11
STD_CXXFLAGS = -std=c++0x

View File

@@ -0,0 +1,5 @@
# Include definitions common to linux pentium targets
include $(CONFIG)/os/CONFIG.Common.linux-x86_64
# have no full C++11
STD_CXXFLAGS = -std=c++0x

View File

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

View File

@@ -0,0 +1,8 @@
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
VXWORKS_VERSION = 5.5.1
WIND_BASE = /afs/psi.ch/project/vxworks/Tornado2.2.1
#there is a problem with our ccppc and optimization
# -O0 works, -O and -O1 and higher are buggy
OPT_CFLAGS_YES = -O0
OPT_CXXFLAGS_YES = -O0

View File

@@ -8,7 +8,7 @@
#-------------------------------------------------------
# Unix valid build types
VALID_BUILDS = Host Ioc
VALID_BUILDS = 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,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=$(WIND_BASE)/lmapi-5.0/$(WIND_HOST_TYPE)/lib

View File

@@ -0,0 +1,3 @@
include $(CONFIG)/os/CONFIG.Common.vxWorks-ppc604_long
VXWORKS_VERSION = 6.9
export LD_LIBRARY_PATH=$(WIND_BASE)/lmapi-5.0/$(WIND_HOST_TYPE)/lib

View File

@@ -0,0 +1,14 @@
# CONFIG.Common.darwin-aarch64
#
# This file is maintained by the build community.
#
# Definitions for darwin-aarch64 target builds
# Sites may override these definitions in CONFIG_SITE.Common.darwin-aarch64
#-------------------------------------------------------
#
# To build universal binaries, configure ARCH_CLASS
# in the file CONFIG_SITE.Common.darwin-aarch64
# Include definitions common to all Darwin targets
include $(CONFIG)/os/CONFIG.darwinCommon.darwinCommon

View File

@@ -0,0 +1,25 @@
# 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 =

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,21 @@
# DeltaTau PowerPMAC with ELDK 5.3
# Include definitions common to all Linux targets
include $(CONFIG)/os/CONFIG.Common.linuxCommon
ARCH_CLASS = ppc
SDK = eldk
SDK_DIR = /opt/eldk-5.3
SDK_HOST_ARCH = $(GNU_HOST_ARCH)-$(SDK)-$(GNU_HOST_OS)
GNU_ARCH = ppc440e-linux
SDKTARGETSYSROOT=$(SDK_DIR)/powerpc-4xx/sysroots
GNU_DIR = $(SDKTARGETSYSROOT)/$(SDK_HOST_ARCH)/usr
GNU_BIN = $(GNU_DIR)/bin/$(GNU_ARCH)
GNU_TARGET_INCLUDE_DIR =
GNU_TARGET=powerpc-linux
ARCH_DEP_CPPFLAGS = -m32 -mcpu=440fp -mhard-float
ARCH_DEP_CPPFLAGS += --sysroot=$(SDKTARGETSYSROOT)/$(GNU_ARCH)
ARCH_DEP_LDFLAGS = --sysroot=$(SDKTARGETSYSROOT)/$(GNU_ARCH)
AS=$(GNU_BIN)/$(GNU_TARGET)-as

View File

@@ -0,0 +1,23 @@
# IOxOS IFC1211 with Freescale QorIQ 2.0 toolchain
# Include definitions common to all Linux targets
include $(CONFIG)/os/CONFIG.Common.linuxCommon
ARCH_CLASS = ppc
SDK = fslsdk
SDK_DIR = /opt/fsl-qoriq/2.0
SDK_HOST_ARCH = $(GNU_HOST_ARCH_64)-$(SDK)-$(GNU_HOST_OS)
SDK_TARGET = ppc64e6500-fsl-linux
GNU_TARGET = powerpc64-fsl-linux
SDKTARGETSYSROOT = $(SDK_DIR)/sysroots/$(SDK_TARGET)
GNU_DIR = $(SDK_DIR)/sysroots/$(SDK_HOST_ARCH)/usr
GNU_BIN = $(GNU_DIR)/bin/$(GNU_TARGET)
ARCH_DEP_CPPFLAGS = --sysroot=$(SDKTARGETSYSROOT)
ARCH_DEP_CFLAGS = -mcpu=e6500 -m64 -mhard-float
ARCH_DEP_LDFLAGS = --sysroot=$(SDKTARGETSYSROOT)
# warning -O2 and higher are broken!
#OPT_CFLAGS_YES = -O1
#OPT_CXXFLAGS_YES = -O1

View File

@@ -12,7 +12,7 @@ include $(CONFIG)/os/CONFIG.Common.linux-x86
ARCH_DEP_CFLAGS = -march=i386
ifeq ($(BUILD_CLASS),CROSS)
VALID_BUILDS = Ioc
VALID_BUILDS = Ioc Command
endif
# If your crosscompiler name has a GNU target prefix like <gnutarget>-gcc,

View File

@@ -10,7 +10,7 @@ include $(CONFIG)/os/CONFIG.Common.linux-x86
ARCH_DEP_CFLAGS = -march=i486
ifeq ($(BUILD_CLASS),CROSS)
VALID_BUILDS = Ioc
VALID_BUILDS = Ioc Command
endif
# If your crosscompiler name has a GNU target prefix like <gnutarget>-gcc,

View File

@@ -11,7 +11,7 @@ include $(CONFIG)/os/CONFIG.Common.linux-x86
ARCH_DEP_CFLAGS = -march=i586
ifeq ($(BUILD_CLASS),CROSS)
VALID_BUILDS = Ioc
VALID_BUILDS = Ioc Command
endif
# If your crosscompiler name has a GNU target prefix like <gnutarget>-gcc,

View File

@@ -11,7 +11,7 @@ include $(CONFIG)/os/CONFIG.Common.linux-x86
ARCH_DEP_CFLAGS = -march=i686
ifeq ($(BUILD_CLASS),CROSS)
VALID_BUILDS = Ioc
VALID_BUILDS = Ioc Command
endif
# If your crosscompiler name has a GNU target prefix like <gnutarget>-gcc,

View File

@@ -0,0 +1,11 @@
# CONFIG.Common.linux-aarch64
#
# Definitions for linux-arm target builds
# Override these settings in CONFIG_SITE.Common.linux-aarch64
#-------------------------------------------------------
# Include definitions common to all Linux targets
include $(CONFIG)/os/CONFIG.Common.linuxCommon
ARCH_CLASS = aarch64

View File

@@ -1,9 +0,0 @@
# CONFIG.Common.linux-arm_eb
#
# Definitions for linux-arm_eb (big endian) target builds
# Sites may override these definitions in CONFIG_SITE.Common.linux-arm_eb
#-------------------------------------------------------
# Include definitions common to all Linux-arm targets
include $(CONFIG)/os/CONFIG.Common.linux-arm

View File

@@ -1,9 +0,0 @@
# CONFIG.Common.linux-arm_el
#
# Definitions for linux-arm_el (little endian) target builds
# Sites may override these definitions in CONFIG_SITE.Common.linux-arm_el
#-------------------------------------------------------
# Include definitions common to all linux-arm targets
include $(CONFIG)/os/CONFIG.Common.linux-arm

View File

@@ -10,7 +10,7 @@ include $(CONFIG)/os/CONFIG.Common.linux-x86
ARCH_DEP_CFLAGS += -march=athlon-mp -mfpmath=sse
ifeq ($(BUILD_CLASS),CROSS)
VALID_BUILDS = Ioc
VALID_BUILDS = Ioc Command
endif
# If your crosscompiler name has a GNU target prefix like <gnutarget>-gcc,

View File

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

View File

@@ -15,7 +15,7 @@ include $(CONFIG)/os/CONFIG.Common.linuxCommon
ARCH_CLASS = microblaze
ifeq ($(BUILD_CLASS),CROSS)
VALID_BUILDS = Ioc
VALID_BUILDS = Ioc Command
GNU_TARGET = microblazeel-unknown-linux-gnu
CMPLR_PREFIX = $(addsuffix -,$(GNU_TARGET))
endif

View File

@@ -13,7 +13,7 @@ include $(CONFIG)/os/CONFIG.Common.linuxCommon
ARCH_CLASS = xscale
ifeq ($(BUILD_CLASS),CROSS)
VALID_BUILDS = Ioc
VALID_BUILDS = Ioc Command
GNU_TARGET = xscale_be
CMPLR_PREFIX = $(GNU_TARGET:%=%-)

View File

@@ -0,0 +1,19 @@
# Moxa DA-66x with SDK 4.2 and ARM7 processor
# Include definitions common to all Linux ARM targets
include $(CONFIG)/os/CONFIG.Common.linux-arm
GNU_DIR=/afs/psi.ch/project/embeddedlinux/moxa/arm-linux-4.4.2-v4
GNU_TARGET=arm
ARCH_DEP_LDFLAGS+=-Wl,-rpath-link,$(GNU_DIR)/arm-none-linux-gnueabi/lib
ARCH_DEP_LDFLAGS+=-Wl,-rpath-link,$(INSTALL_LIB)
COMMANDLINE_LIBRARY = READLINE_NCURSES
# suppress note "the mangling of 'va_list' has changed in GCC 4.4"
ARCH_DEP_CXXFLAGS += -Wno-psabi
ARCH_DEP_CFLAGS += -funwind-tables
# have no full C++11
STD_CXXFLAGS = -std=c++0x

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=/afs/psi.ch/project/embeddedlinux/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,18 @@
# National Instruments CompactRIO running LabView RT 19.5.1
# Include definitions common to all Linux targets
include $(CONFIG)/os/CONFIG.Common.linuxCommon
ARCH_CLASS = arm
GNU_TARGET = arm-linux-gnu
SYSROOT = /opt/LabVIEW-RT-19.5.1/arm/sysroots/armv7a-vfp-neon-nilrt-linux-gnueabi
ARCH_DEP_CPPFLAGS += -march=armv7-a -mthumb-interwork -mfloat-abi=softfp -mfpu=neon
ARCH_DEP_CPPFLAGS += --sysroot=$(SYSROOT)
ARCH_DEP_CPPFLAGS += -I$(SYSROOT)/usr/include/c++/4.7.2/arm-nilrt-linux-gnueabi/
ARCH_DEP_CPPFLAGS += -I$(SYSROOT)/usr/include/c++/4.7.2/
ARCH_DEP_LDFLAGS += --sysroot=$(SYSROOT)
COMMANDLINE_LIBRARY = READLINE_NCURSES

View File

@@ -0,0 +1,41 @@
# RaspberryPi with github.com/raspberrypi/tools toolchain
# Tested on:
# * Raspberry 3B+ Raspbian 9
# * Raspberry 2 Raspbian 7
# Include definitions common to all Linux targets
include $(CONFIG)/os/CONFIG.Common.linuxCommon
# Using readline:
# Due to missing/messed up libs in the toolchain, readline needs copies of
# libtinfo.so.5.9 and libreadline.so.6.2 from a Raspbian 7 rootfs
# /lib/arm-linux-gnueabihf/ to the toolchain, e.g.
# $(SDK_DIR)/gcc-linaro-arm-linux-gnueabihf-raspbian/arm-linux-gnueabihf/libc/lib/arm-linux-gnueabihf/
# and manually created links libtinfo.so.5 and libreadline.so.
# For gcc-linaro-arm-linux-gnueabihf-raspbian, an existing incompatible
# libtinfo.so.5 is in the way. Remove it.
# (Built with glibc 2.16 like installed on Raspbian 9 but toolchain uses glibc 2.13.)
# Also copy /usr/include/readline/ directory from some readline 6 installation
# to $(SDK_DIR)/gcc-linaro-arm-linux-gnueabihf-raspbian/arm-linux-gnueabihf/libc/usr/include/
ARCH_CLASS = arm
SDK_DIR = /opt/raspberrypi/arm-bcm2708
# Available SDK_TARGETs:
# gcc 4.8.3 for 32 bit hosts with GLIBC 2.3 or higher
SDK_TARGET = gcc-linaro-arm-linux-gnueabihf-raspbian
# gcc 4.8.3 for 64 bit hosts with GLIBC 2.14 or higher
# SDK_TARGET = gcc-linaro-arm-linux-gnueabihf-raspbian-x64
# gcc 4.7.1 for 64 bit hosts with GLIBC 2.8 or higher
# SDK_TARGET = arm-linux-gnueabihf
# gcc 4.7.1 for 32 bit hosts with GLIBC 2.4 or higher
# SDK_TARGET = arm-bcm2708hardfp-linux-gnueabi
# SDK_TARGET = arm-bcm2708-linux-gnueabi
GNU_DIR = $(SDK_DIR)/$(SDK_TARGET)
GNU_TARGET = $(if $(filter arm-bcm2708%,SDK_TARGET),$(SDK_TARGET),arm-linux-gnueabihf)

View File

@@ -14,6 +14,7 @@ ARCH_CLASS = ppc
# Architecture specific build flags
ARCH_DEP_CPPFLAGS = -DCPU=PPC32
ARCH_DEP_CPPFLAGS = -DCPU=PPC604
ARCH_DEP_CFLAGS = -mstrict-align
GNU_TARGET = powerpc-wrs-vxworks

View File

@@ -13,7 +13,7 @@ CMPLR_SUFFIX = ppc
ARCH_CLASS = ppc
# Architecture specific build flags
ARCH_DEP_CPPFLAGS = -DCPU=PPC603
ARCH_DEP_CPPFLAGS = -DCPU=PPC603
ARCH_DEP_CFLAGS = -mcpu=603 -mstrict-align
GNU_TARGET = powerpc-wrs-vxworks

View File

@@ -14,9 +14,12 @@ ARCH_CLASS = ppc
# Architecture specific build flags
ARCH_DEP_CPPFLAGS = -DCPU=PPC604
ARCH_DEP_CFLAGS_2 = -mcpu=604 -mstrict-align -mno-implicit-fp
ARCH_DEP_CFLAGS_3 = -mcpu=604 -mstrict-align -mno-implicit-fp
ARCH_DEP_CFLAGS_4 = -mcpu=604 -mstrict-align -fno-implicit-fp
ARCH_DEP_CFLAGS = $(ARCH_DEP_CFLAGS_$(VX_GNU_MAJOR_VERSION))
ARCH_DEP_CFLAGS = -mcpu=604 -mstrict-align
CODE_CFLAGS_2 = -mno-implicit-fp
CODE_CFLAGS_3 = -mno-implicit-fp
CODE_CFLAGS_4 = -fno-implicit-fp
CODE_CFLAGS += $(CODE_CFLAGS_$(VX_GNU_MAJOR_VERSION))
GNU_TARGET = powerpc-wrs-vxworks

View File

@@ -132,13 +132,6 @@ OPT_CXXFLAGS_YES = -O2
#--------------------------------------------------
# code flags
CODE_CFLAGS =
#
# For vxWorks versions before 6.3 we need this g++ compiler flag
CODE_CXXFLAGS_6.0 = -fno-implicit-templates
CODE_CXXFLAGS_6.1 = -fno-implicit-templates
CODE_CXXFLAGS_6.2 = -fno-implicit-templates
CODE_CXXFLAGS_6 = $(CODE_CXXFLAGS_$(VXWORKS_VERSION))
CODE_CXXFLAGS = $(CODE_CXXFLAGS_$(VXWORKS_MAJOR_VERSION))
#--------------------------------------------------
# no shared libs for vxWorks

View File

@@ -30,7 +30,7 @@ ARCH_DEP_LDFLAGS += -m32
# Compiler does not define __unix __unix__ unix
# Override for -DUNIX from CONFIG.Common.UnixCommon
OP_SYS_CPPFLAGS = -D_MINGW
OP_SYS_CPPFLAGS = -D_MINGW -D__USE_MINGW_ANSI_STDIO
EXE = .exe
RES = .coff

View File

@@ -0,0 +1,18 @@
# XILINX Zynq with Yocto 2.1 / Petalinux toolchain
# Include definitions common to all Linux targets
include $(CONFIG)/os/CONFIG.Common.linuxCommon
ARCH_CLASS = arm64
SDK = petalinux
SDK_DIR = /opt/petalinux-gfa/2017.2
SDK_HOST_ARCH = $(GNU_HOST_ARCH_64)-$(SDK)-$(GNU_HOST_OS)
SDK_TARGET = aarch64-xilinx-linux
GNU_TARGET = $(SDK_TARGET)
SDKTARGETSYSROOT = $(SDK_DIR)/sysroots/$(SDK_TARGET)
GNU_DIR = $(SDK_DIR)/sysroots/$(SDK_HOST_ARCH)/usr
GNU_BIN = $(GNU_DIR)/bin/$(GNU_TARGET)
ARCH_DEP_CPPFLAGS = --sysroot=$(SDKTARGETSYSROOT)
ARCH_DEP_LDFLAGS = --sysroot=$(SDKTARGETSYSROOT)

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,6 @@
# "cross compile" for older Linux version (32 bit)
# It was neccessary to install 32 bit compatibility libraries manually
#-------------------------------------------------------
include $(CONFIG)/os/CONFIG.RHEL7-x86_64.SL6-x86_64
TARGET_LDFLAGS = -B /usr/lib/x86_64-redhat-linux6E/lib

View File

@@ -0,0 +1,16 @@
# "cross compile" for older Linux version
# Use older compiler and older libraries
# Used packages:
# compat-gcc-44-c++-4.4.7
# compat-gcc-44-4.4.7
# compat-glibc-headers-2.12
# compat-glibc-2.12
#-------------------------------------------------------
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86
CC = $(GNU_BIN)/$(CMPLR_PREFIX)gcc44
CCC = $(GNU_BIN)/$(CMPLR_PREFIX)g++44
TARGET_CPPFLAGS = -isystem /usr/lib/x86_64-redhat-linux6E/include
TARGET_LDFLAGS = -B /usr/lib/x86_64-redhat-linux6E/lib64
LINK.cpp += --as-needed -lc -lm -lrt -lpthread -lreadline -ltinfo

View File

@@ -0,0 +1,8 @@
include $(CONFIG)/os/CONFIG.win32-x86.win32-x86
PATH_FILTER = $(subst /,/,$(1))
# Silence the tr1 namespace deprecation warnings
USR_CXXFLAGS_WIN32 += -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
MSVC_DIR = /opt/wine-msvc-2017/bin/x86/

View File

@@ -0,0 +1,8 @@
include $(CONFIG)/os/CONFIG.windows-x64.windows-x64
PATH_FILTER = $(subst /,/,$(1))
# Silence the tr1 namespace deprecation warnings
USR_CXXFLAGS_WIN32 += -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
MSVC_DIR = /opt/wine-msvc-2017/bin/x64/

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,8 @@
include $(CONFIG)/os/CONFIG.win32-x86.win32-x86
PATH_FILTER = $(subst /,/,$(1))
# Silence the tr1 namespace deprecation warnings
USR_CXXFLAGS_WIN32 += -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
MSVC_DIR = /opt/wine-msvc-2017/bin/x86/

View File

@@ -0,0 +1,8 @@
include $(CONFIG)/os/CONFIG.windows-x64.windows-x64
PATH_FILTER = $(subst /,/,$(1))
# Silence the tr1 namespace deprecation warnings
USR_CXXFLAGS_WIN32 += -D_SILENCE_TR1_NAMESPACE_DEPRECATION_WARNING
MSVC_DIR = /opt/wine-msvc-2017/bin/x64/

View File

@@ -0,0 +1,2 @@
#CONFIG.$(EPICS_HOST_ARCH).Common is required by build system
#Include definitions common to linux hosts

View File

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

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,2 @@
# Include common linux definitions
include $(CONFIG)/os/CONFIG.linux-x86.linux-x86

View File

@@ -11,6 +11,7 @@ RM = rm -f
MKDIR = mkdir -p
RMDIR = rm -rf
CAT = cat
TOUCH = touch
# Allow site overrides
-include $(CONFIG)/os/CONFIG_SITE.UnixCommon.Common

View File

@@ -0,0 +1,8 @@
# CONFIG.darwin-aarch64.Common
#
# Definitions for darwin-aarch64 host builds
# Sites may override these definitions in CONFIG_SITE.darwin-aarch64.Common
#-------------------------------------------------------
#Include definitions common to unix hosts
include $(CONFIG)/os/CONFIG.UnixCommon.Common

View File

@@ -0,0 +1,8 @@
# CONFIG.linux-aarch64.Common
#
# Definitions for linux-aarch64 host builds
# Sites may override these definitions in CONFIG_SITE.linux-aarch64.Common
#-------------------------------------------------------
#Include definitions common to unix hosts
include $(CONFIG)/os/CONFIG.UnixCommon.Common

View File

@@ -0,0 +1,8 @@
# CONFIG.linux-aarch64.linux-aarch64
#
# Definitions for native linux-aarch64 builds
# Override these definitions in CONFIG_SITE.linux-aarch64.linux-aarch64
#-------------------------------------------------------
# Include common gnu compiler definitions
include $(CONFIG)/CONFIG.gnuCommon

View File

@@ -4,7 +4,7 @@
# Override these settings in CONFIG_SITE.linux-x86.linux-arm
#-------------------------------------------------------
VALID_BUILDS = Ioc
VALID_BUILDS = Ioc Command
GNU_TARGET = arm-linux
# prefix of compiler tools

View File

@@ -1,9 +0,0 @@
# CONFIG.linux-x86.linux-arm_eb
#
# Definitions for linux-x86 host - linux-arm_eb (big endian) target builds
# Sites may override these definitions in CONFIG_SITE.linux-x86.linux-arm_eb
#-------------------------------------------------------
# Include definitions for linux-arm targets
include $(CONFIG)/os/CONFIG.linux-x86.linux-arm

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