Back to home page

Enduro/X

 
 

    


0001 # endurox
0002 
0003 ## Build (including atmi/ubf tests) status
0004 
0005 | OS   |      Status      | OS       |      Status   |OS       |      Status   |
0006 |----------|:-------------:|----------|:-------------:|----------|:-------------:|
0007 | AIX 7.1 |  [![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-aix7_1)](http://www.silodev.com:9090/jenkins/job/endurox-aix7_1/) |Centos 6|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-centos6)](http://www.silodev.com:9090/jenkins/job/endurox-centos6/)|FreeBSD 11|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-freebsd11)](http://www.silodev.com:9090/jenkins/job/endurox-freebsd11/)|
0008 |Oracle Linux 7|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-ol7)](http://www.silodev.com:9090/jenkins/job/endurox-ol7/)|OSX 11.4|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-osx11_4)](http://www.silodev.com:9090/jenkins/job/endurox-osx11_4/)|raspbian8-arv7l|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-raspbian8-arv7l)](http://www.silodev.com:9090/jenkins/job/endurox-raspbian8-arv7l/)|
0009 |SLES 12|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-sles12)](http://www.silodev.com:9090/jenkins/job/endurox-sles12/)|SLES 15|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-sles15)](http://www.silodev.com:9090/jenkins/job/endurox-sles15/)|Solaris 10|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-solaris10-sparc)](http://www.silodev.com:9090/jenkins/job/endurox-solaris10-sparc/)|
0010 |Solaris 11| [![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-solaris11_x86)](http://www.silodev.com:9090/jenkins/job/endurox-solaris11_x86/)|Ubuntu 14.04| [![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-ubuntu14)](http://www.silodev.com:9090/jenkins/job/endurox-ubuntu14/)|Ubuntu 16.04| [![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-ubuntu16)](http://www.silodev.com:9090/jenkins/job/endurox-ubuntu16/)|
0011 |Ubuntu 18.04|[![Build Status](http://www.silodev.com:9090/jenkins/buildStatus/icon?job=endurox-ubuntu18)](http://www.silodev.com:9090/jenkins/job/endurox-ubuntu18/)|
0012 
0013 ## Overview
0014 
0015 Enduro/X is Open Source Middleware Platform for Distributed Transaction 
0016 Processing
0017 
0018 It is modern, micro-services based middleware for writing distributed, open
0019 systems (program consists of several executables) based applications. Thus 
0020 by using Enduro/X programmers do not have to worry about threads and concurrency 
0021 anymore, the load balacing and multi-CPU loading is done by Enduro/X middleware by it self,
0022 administrator only have to determine how many copies of particular services should
0023 be started. Of-course Enduro/X supports multi-threaded applications too, but now
0024 system architects have a choice either to design multi-threaded executables or
0025 just configure number of executables to start.
0026 
0027 For local inter-process-communication (IPC) Enduro/X uses kernel memory based Posix
0028 queues to avoid overhead of the TCP/IP protocol which is used in other middlewares
0029 or REST based micro-service architectures. Thus this approach greatly increases
0030 application speed, as kernel queues is basically a matter of block memory
0031 copy from one process to another (by contrast of 7 layers of TCP/IP stack and
0032 streaming nature of the sockets vs block copy). 
0033 
0034 Enduro/X provides SOA architecture for C/C++ applications and allows to cluster 
0035 application in fault tolerant way over multiple physical servers. 
0036 Enduro/X provides Oracle(R) Tuxedo(R) FML/FML32 library emulation, 
0037 including boolean expressions. Other Tuxedo specific APIs are supported, 
0038 such as tpforward() and work with distributed transactions (tpbegin(), 
0039 tpcommit(), etc.).
0040 
0041 Platform provides X/Open XATMI and XA interfaces/APIs for C/C++ applications. Enduro/X can 
0042 be considered as replacement for Oracle(R) Tuxedo(R), Jboss Blacktie (Narayan), 
0043 Hitachi OpenTP1 and other XATMI middlewares.
0044 
0045 Dual licensed under Affero General Public License Version 3 for use in Open
0046 Source project or Commercial license Acquired from Mavimax Ltd 
0047 (https://www.mavimax.com),
0048 
0049 EnduroX have bindings for:
0050 - Golang (client & server)
0051 - PHP (client)
0052 - Perl (client & server)
0053 - Python (client & server)
0054 - Node.js (client)
0055 
0056 Enduro/X provides following features:
0057 
0058 * Standards based APIs - SCA, The Open Group XATMI
0059 Communication types - Synchronous, Asynchronous, Conversational, Publish/subscribe
0060 * Typed buffers
0061   * UBF (Unified Buffer Format) which provides emulation of Tuxedo's FML/FML32 
0062         format. UBF if high performance binary protocol buffer format. Buffer is 
0063         indexed by binary search on fixed data types.
0064   * STRING buffer format.
0065   * CARRAY (byte array) buffer format.
0066   * JSON buffer format, automatic conversion between JSON and UBF available.
0067   * VIEW buffer (starting from version 5.0+). This offer C structure sending
0068         between processes in cross platform way. Also this allows to map UBF 
0069         fields to VIEW fields, thus helping developer quicker to develop applications, 
0070         by combining UBF and VIEW buffers.
0071 * Transaction Management - Global Transactions - Two-phase commit protocol - X/Open XA
0072 * Clustering - on peer-to-peer basis
0073 * Event broker (also called publish and subscribe messaging)
0074 * Security - Cluster link encryption with GNU PGP framework
0075 * System process monitoring and self healing (pings and restarts)
0076 * SOA Service cache. XATMI services can be cached to LMDB database. Resulting 
0077         that next call to service from any local client receives results 
0078         directly from cache (mainly from direct memory read).
0079 * Dynamic re-configuration
0080 * Custom server polling extensions
0081 * XATMI sub-system is able to work with out main application server daemon (ndrxd)
0082 * Main application server daemon (ndrxd) can be restarted (if crashed). 
0083         When started back it enters in learning mode for some period of time, 
0084         in which in gathers information about system, what services are running, 
0085         etc. After learning =-period, it starts to do normal operations
0086 * tpforward() call
0087 * ATMI server threads may become clients, and can do tpcall()
0088 * Extensive logging & debugging. Enduro/X logging can be configured per binary 
0089         with different log levels. As ATMI servers can be started outside of 
0090         appserver, it is possible to debug them from programming IDE or with 
0091         tools like valgrind.
0092 * For quality assurance project uses automated unit-testing and integration-testing
0093 * Built in ATMI service profiling.
0094 * Environment variables can be updated for XATMI server processes with 
0095         out full application reboot.
0096 * Generic client process monitor (cpm). Subsystem allows to start/stop/monitor 
0097         client executables. At client process crashes, cpm will start it back.
0098 * Starting with version 5.2 Enduro/X provides configuration data encryption feature, 
0099         so that software which is built on top of Enduro/X may comply with 
0100         Payment Card Industry Data Security Standard (PCI/DSS).
0101 
0102 ![Alt text](doc/Endurox-product.jpg?raw=true "Enduro/x overview")
0103 
0104 # Load balancing
0105 
0106 ![Alt text](doc/endurox-load-balance.jpg?raw=true "Enduro/x service load 
0107 balancer")
0108 
0109 Supported operating system: GNU/Linux, starting from 2.6.12 kernel 
0110 (needed for POSIX Queues). Starting with Enduro/X Version 3.1.2 IBM AIX (6.1 and 
0111 7.1), 
0112 Oracle Solaris 11, MAC OS X (experimental) and Cygwin (experimental) 
0113 support is added. Supported compilers: gcc, LLVM clang, IBM xlC.
0114 
0115 - Build and installation guides are located at: www.endurox.org/dokuwiki
0116 
0117 - Support forum: http://www.endurox.org/projects/endurox/boards
0118 
0119 - Binary builds (RPMs & DEBs) for various platforms are here: 
0120 http://www.endurox.org/projects/endurox/files
0121 
0122 - Documentation available here: http://www.endurox.org/dokuwiki/doku.php
0123 
0124 - Source corss reference: http://www.silodev.com/lxr/source
0125 
0126 PS, feel free to contact me at madars@mavimax.com. I will gladly help you
0127  to get EnduroX running ;)
0128 
0129 # Call/message forwarding
0130 
0131 ## Instead of doing calls to each server separately...
0132 
0133 ![Alt text](doc/exforward_tpcall.png?raw=true "Classical service orchestration")
0134 
0135 This is typciall way for example if doing micro-services with HTTP/REST. 
0136 You need to do the calls to each service separately. And that is extra 
0137 overhead to system (multiple returns) and the caller must orchestrate the all 
0138 calls.
0139 
0140 ## ...Enduro/X offers much effective way - tpforward() where request is 
0141 passed around the system
0142 
0143 ![Alt text](doc/exforward_forward.png?raw=true "Enhanced service 
0144 orchestration by forwarding the call")
0145 
0146 In this case the destination service orchestrates the system, it is up to 
0147 service to choose the next service which will continue the call processing. 
0148 The caller is not aware of final service which will do the reply back 
0149 (tpreturn()).
0150 
0151 Note that service after doing "tpforward()" becomes idle and can consume next 
0152 call.
0153 
0154 # High availability and self healing
0155 
0156 Enduro/X is capable of detecting stalled/hanged XATMI servers and gracefully 
0157 can reboot them. The ping times are configurable on per server basis. In case 
0158 if main daemon dies, it is possible to configure special XATMI server named 
0159 "tprecover" which monitors "ndrxd" and vice versa, ndrxd can monitor tprecover. 
0160 Thus if any of these services are not cleanly shut down, then system will 
0161 heal it self, and boot service/daemons back.
0162 
0163 The ndrxd learning mode is some period of time (configurable) in which ndrxd 
0164 will request all the system for active servers and their services, 
0165 to get back the view of the system and be in control. Note that system is able 
0166 to work even with out ndrxd, but at that time no server healing 
0167 and management will be done.
0168 
0169 ![Alt text](doc/server_monitoring_and_recovery.png?raw=true "Enduro/X high 
0170 availability facility")
0171 
0172 # Real time system patching
0173 
0174 It is possible to patch the Enduro/X system (update stateless XATMI servers) 
0175 without service interruption. This is achieved by following scheme:
0176 
0177 ![Alt text](doc/rt-patching.png?raw=true "Enduro/X real time patching")
0178 
0179 # Performance
0180 
0181 Due to fact that Enduro/X uses memory based queues, performance numbers are 
0182 quite high:
0183 
0184 ## ATMI client calls server in async way (tpacall(), no reply from server)
0185 
0186 ![Alt text](doc/benchmark/04_tpacall.png?raw=true "Local tpcall() performance")
0187 
0188 
0189 ## Local one client calls server, and gets back response:
0190 
0191 ![Alt text](doc/benchmark/01_tpcall.png?raw=true "Local tpcall() performance")
0192 
0193 ## Multiple clients calls multiple servers
0194 
0195 ![Alt text](doc/benchmark/03_tpcall_threads.png?raw=true "Multiprocessing 
0196 tpcall() performance")
0197 
0198 ## Single client calls single server via network (two app servers bridged)
0199 
0200 ![Alt text](doc/benchmark/02_tpcall_network.png?raw=true "Network tpcall() 
0201 performance")
0202 
0203 ## Persistent storage (message enqueue to disk via tpenqueue())
0204 The number here are lower because messages are being saved to disk. 
0205 Also internally XA transaction is used, which also requires logging to stable 
0206 storage.
0207 
0208 ![Alt text](doc/benchmark/05_persistent_storage.png?raw=true "Network 
0209 tpenqueue() performance")
0210 
0211 
0212 ## Tpcall cache benchmark
0213 This benchmark shows the performance of cached XATMI service calls.
0214 
0215 ![Alt text](doc/benchmark/06_tpcache.png?raw=true "tpcall() cache performance")
0216 
0217 # Releases
0218 
0219 - Version 2.5.1 released on 18/05/2016. Support for transactional 
0220 persistent message queues. Provides APIs: tpenqueue(), tpdequeue() and 
0221 command line management tools. See doc/persistent_message_queues_overview.adoc, 
0222 doc/manpage/tmqueue.adoc, doc/manpage/xadmin.adoc, doc/manpage/q.config.adoc. 
0223 Use cases can be seen under atmitests/test028_tmq
0224 
0225 - Version 3.1.2 released on 25/06/2016. Added support for other Unix systems. 
0226 Currently production grade support is provided for following operating systems: 
0227 GNU/Linux, FreeBSD, IBM AIX and Oracle Solaris. MAC OS X and Cygwin versions 
0228 are 
0229 considered as experimental. FreeBSD installation guides are located at 
0230 doc/freebsd_notes.adoc, AIX install guide: doc/aix_notes.adoc, 
0231 Solaris install guide: doc/solaris_notes.adoc and OS X guide: 
0232 doc/osx_notes.adoc. Also with this version lot of core processing bug fixes are 
0233 made.
0234 
0235 - Version 3.2.1 released on 06/07/2016. Major UBF optimization. Now for each 
0236 data type memory offset is maintained. For fixed data types (short, long, char, 
0237 float, double) binary search is performend when field is read from buffer.
0238 
0239 - Version 3.2.2 released on 15/07/2016. Bugfixes for UBF binary search. Added 
0240 UBF benchmarking scripts and documents.
0241 
0242 - Version 3.3.1 released on 05/09/2016. Implemented common configuration engine 
0243 (can use ini files in alternative to environment variables, debug config and 
0244 persistent queue config).
0245 
0246 - Version 3.3.2 released on 01/10/2016. Works on TP logger, user accessible 
0247 logging framework. Set of tplog\* functions.
0248 
0249 - Version 3.3.5 released on 10/01/2017. Fixes for RPM build and install on 
0250 Red-hat enterprise linux platform.
0251 
0252 - Version 3.3.6 released on 12/01/2017. Fixes for integration mode, changes in 
0253 tpcontinue().
0254 
0255 - Version 3.4.1 released on 13/01/2017. New ATMI server flag for developer - 
0256 reloadonchange - if cksum change changed on binary issue sreload.
0257 
0258 - Version 3.4.2 released on 20/01/2017. Network protocol framing moved from 2 
0259 bytes to 4 bytes.
0260 
0261 - Version 3.4.3 released on 26/01/2017. Memory leak fixes for tmsrv and tmqueue 
0262 servers.
0263 
0264 - Version 3.4.4 released on 26/01/2017. Works on documentation. Fixes on 
0265 PScript.
0266 
0267 - Version 3.4.5 released on 14/02/2017. Fixes in generators.
0268 
0269 - Version 3.5.1 released on 03/03/2017. Updates on tpreturn() - more correct 
0270 processing as in Tuxedo, free up return buffer + free up auto buffer.
0271 
0272 - Version 3.5.2 released on 24/03/2017. Bug #105 fix. Abort transaction if it 
0273 was in "preparing" stage, and tmsrv loaded it from logfile. Meaning that caller 
0274 alaready do not wait for tpcommit() anymore and got inconclusive results, thus 
0275 better to abort. 
0276 
0277 - Version 3.5.3 released on 26/03/2017. Fixes for Solaris, Sun Studio (SUNPRO) 
0278 compiler
0279 
0280 - Version 3.5.4 released on 01/03/2017. Fixed bug #108 - possible CPM crash
0281 
0282 - Version 3.5.5 released on 23/03/2017. Works Feature #113 - mqd_t use as file 
0283 descriptor - for quick poll operations.
0284 
0285 - Version 3.5.6 released on 02/04/2017. Fixed issues with possible deadlock for 
0286 poll mode on bridge service calls. Fixed issuw with 25 day uptime problem for 
0287 bridges on 32bit platfroms - the messages becomes expired on target server. 
0288 Issues: #112, #145, #140, #139, #113
0289 
0290 - Version 3.5.7 release on 23/04/2017. Fixed Bug #148 (Bdelall corrupts ubf 
0291 buffer)
0292 Bug #110 (tpbridge does not report connection status to ndrxd after ndrxd is 
0293 restarted for recovery)
0294 
0295 - Version 3.5.9 released on 22/06/2017. Bug fix #160 - retry xa_start with 
0296 xa_close/xa_open. New env variable NDRX_XA_FLAGS, tag "RECON".
0297 
0298 - Version 4.0.1 released on 29/06/2017. Multi-threaded bridge implementation. 
0299 tpnotify(), tpbroadcast(), tpsetunsol(), tpchkunsol() API implementation.
0300 
0301 - Version 4.0.2 released on 19/07/2017. Fixed ndrxd core dump issue Bug #174.
0302 
0303 - Version 4.0.3 released on 26/07/2017. Fixes of #176 #178. NDRX_DUMP, UBF_DUMP 
0304 fixes.
0305 
0306 - Version 4.0.4 released on 29/07/2017. Feature #162 - added evt_mib.h
0307 
0308 - Version 4.0.5 released on 01/08/2017. Feature #180 - refactoring code towards 
0309 ISO/IEC 9899:201x standard.
0310 
0311 - Version 5.0.1 released on 21/08/2017. Feature #96 - Typed View support, Bug 
0312 #182 - fix in bridge protocol.
0313 
0314 - Version 5.0.2 released on 22/08/2017. Bug #183
0315 
0316 - Version 5.0.3 released on 22/08/2017. Bug #186
0317 
0318 - Version 5.0.4 released on 22/08/2017. Bug #186
0319 
0320 - Version 5.0.5 released on 27/08/2017. Bug #184, Bug #191, Bug #190, Bug #192, 
0321 Bug #193
0322 
0323 - Version 5.0.6 released on 28/08/2017. Bug #195
0324 
0325 - Version 5.0.7 released on 01/09/2017. Feature #161 - tmsrv database pings & 
0326 automatic reconnecting in case of network failures.
0327 
0328 - Version 5.0.8 released on 17/09/2017. Works on dynamic view access. #99, #206, 
0329 #207, #210
0330 
0331 - Version 5.0.9 released on 27/09/2017. (development) Works on #224
0332 
0333 - Version 5.0.10 released on 13/10/2017. (stable) Feature #232, Feature #231, 
0334 -O2 optimization by default
0335 
0336 - Version 5.1.1  released on 13/10/2017. (development) Feature #127, Bug #229, 
0337 Feature #230, Bug #234, Feature #244, Bug #243, Feature #248, Bug #240, Bug #238 
0338 
0339 - basically big message size support (over the 64K)
0340 
0341 - Version 5.1.2  released on 18/10/2017. (stable) Bug #250
0342 
0343 - Version 5.2.1  released on 18/12/2017. (development) Major work on support for PCI/DSS mandatory
0344 configuration encryption. Introduction of plugin architecture (currently used for
0345 crypto key providers). Implemented tpconvert() ATMI call. Now @global section for ini files are 
0346 read twice. Thus ini file can reference to previosly defined env/global variable. 
0347 Fixes: #261 Bug, #118 Feature, #237 Feature, #236 Bug, #245 Feature, #258
0348 Support, #259 Support, #255 Bug, #254 Bug.
0349 
0350 - Version 5.2.2 released on 21/12/2017. (stable) First stable version of Enduor/X 5.2. Rolled
0351 
0352 - Version 5.2.4 released on 22/12/2017. (stable) Fixed Bug #268.
0353 
0354 - Version 5.2.6 released on 02/01/2018. (stable) Happy New Year! Fixed Bug #269.
0355 
0356 - Version 5.2.8 released on 26/01/2018. (stable) Fixed Bug #274 - too many open files,
0357 when threaded logger using for multi-contexting (like go runtime)
0358 
0359 - Version 5.2.10 released on 27/01/2018. (stable) Feature #275 - allow to mask
0360 
0361 - Version 5.2.12 released on 27/01/2018. (stable) Feature #275 - fixes for server un-init (not critical)
0362 
0363 - Version 5.2.14 released on 03/02/2018. (stable) Feature #278 - new fields for compiled connection id
0364 
0365 - Version 5.2.15 released on 08/02/2018. (development) Feature #282 - new UBF api Baddfast()
0366 
0367 - Version 5.2.16 released on 09/02/2018. (stable) Feature #282 - new UBF api Baddfast(), finished
0368 documentation and added unit tests.
0369 
0370 - Version 5.3.2 released on 25/03/2018 (stable) Fixes on Feature #272, Bug #291, Feature #287, Bug #290, Support #279
0371 
0372 - Version 5.3.4 released on 26/03/2018 (stable) Feature #294, Bug #293
0373 
0374 - Version 5.3.5 released on 28/03/2018 (Development) Working progress on Feature #295
0375 
0376 - Version 5.3.6 released on 01/04/2018 (stable) Finished works on Feature #295
0377 
0378 - Version 5.3.8 released on 06/04/2018 (stable) Implemented Feature #299 - new flag TPNOABORT
0379 
0380 - Version 5.3.9 released on 09/04/2018 (development) Fixed Bug #300
0381 
0382 - Version 5.3.10 released on 10/04/2018 (stable) Fixed Support #301
0383 
0384 - Version 5.3.12 released on 12/04/2018 (stable) Support #302 - added last 8 chars of hostname to logfile
0385 
0386 - Version 5.3.14 released on 21/04/2018 (stable) Bug #306
0387 
0388 - Version 5.3.15 released on 23/04/2018 (development) Feature #307
0389 
0390 - Version 5.3.16 released on 16/05/2018 (stable) Bug #317
0391 
0392 - Version 5.3.17 released on 18/05/2018 (development) Feature #320 - cmdline tag for server in xml config
0393 
0394 - Version 5.3.18 released on 27/06/2018 (stable) Bug #325
0395 
0396 - Version 5.3.20 released on 10/10/2018 (stable) Backport Bug #321 fix to 5.3
0397 
0398 - Version 6.0.1 released on 18/11/2018 (development) Latvia's 100th anniversary. 
0399 Major work on System V queue support, works for Java support, lots of bugs fixed.
0400 Support #252, Feature #281, Feature #307, Support #310, Support #326, 
0401 Bug #330, Feature #331, Feature #333, Feature #334, Bug #338, 
0402 Bug #339, Bug #341, Bug #347, Support #350, Bug #351, Support #352, Bug #353
0403 
0404 - Version 6.0.2 released on 02/12/2018 (stable) Bug #355 and other stability issues fixed
0405 released with 6.0.1.
0406 
0407 - Version 6.0.3 released on 16/12/2018 (development) Bug #364, Bug #360. 
0408 Added new command "ps" for xadmin, so that unit tests have unified access to 
0409 processing listings across all supported OSes.
0410 
0411 - Version 6.0.5 released on 24/12/2018 (development) Feature #366
0412 
0413 - Version 6.0.6 released on 08/01/2019 (stable) Marking stable release
0414 
0415 - Version 6.0.8 released on 11/01/2019 (stable) Feature #372
0416 
0417 - Version 6.0.10 released on 13/01/2019 (stable) Support #373, Bug #374
0418 
0419 - Version 6.0.12 released on 16/01/2019 (stable) Bug #375, Bug #376
0420 
0421 - Version 6.0.13 released on 18/01/2019 (development) Feature #181
0422 
0423 - Version 6.0.14 released on 30/01/2019 (stable) Marking stable version
0424 
0425 - Version 6.0.15 released on 01/01/2019 (development) Feature #380 
0426 
0427 - Version 6.0.17 released on 02/01/2019 (development) Feature #382, Feature #367, Support #303, Feature #271
0428 
0429 - Version 6.0.19 released on 15/03/2019 (development) Bug #394, Feature #393
0430 
0431 - Version 6.0.21 released on 19/03/2019 (development) Feature #397
0432 
0433 - Version 6.0.23 released on 19/03/2019 (development) Additional work for Feature #397
0434 
0435 - Version 6.0.25 released on 22/03/2019 (development) Feature #396
0436 
0437 
0438 # Build configurations
0439 
0440 ## Configure make with: 
0441 
0442 $ cmake -DCMAKE_INSTALL_PREFIX:PATH=`pwd`/dist .
0443 
0444 ### Flags:
0445 
0446 - To enable System V message queue, pass '-DDEFINE_SYSVQ=ON' to cmake (applies
0447 to Linux only). Default on AIX and Solaris.
0448 
0449 - To enable poll() use instead of epoll() in Linux use '-DDEFINE_FORCEPOLL=ON'
0450 (applies to Linux only).
0451 
0452 - To force use emulated message queue, add '-DDEFINE_FORCEEMQ=ON' (applies to 
0453 Linux only). Default on Macos.
0454 
0455 - To disable GPG_ME, pass additional flag to cmake '-DDEFINE_DISABLEGPGME=ON'
0456 
0457 - To disable documentation building add '-DDEFINE_DISABLEDOC=ON'
0458 
0459 - To disable platform script building use '-DDEFINE_DISABLEPSCRIPT=ON'
0460 
0461 - To do release build, use '-DDEFINE_RELEASEBUILD=ON'
0462 
0463 - To log the memory allocation to user log add '-DNDRX_MEMORY_DEBUG=1' 
0464 
0465 - To trace of the Object-API use '-DNDRX_OAPI_DEBUG=1' 
0466 
0467 - To trace of the Semaphore handling use '-DNDRX_SEM_DEBUG=1' 
0468 
0469 - To enable test047 with Oracle PRO*C database access use '-DENABLE_TEST47=ON'
0470 Note that *proc* must be in path and ORACLE_HOME must be set. Also Oracle DB 
0471 libraries must be present in LD_LIBRARY_PATH (or equivalent environment for 
0472 target OS).
0473 
0474 - To force memory alignment usage, use '-DDEFINE_ALIGNMENT_FORCE=1', by default
0475 on for SPARC cpus.
0476 
0477 - To enable address sanitizer for GCC/Clang on supported hardware platforms,
0478 use '-DDEFINE_SANITIZE=1'