Is it possible for an nginx module to define custom compilation switches
that add external libs / preprocessor macros ? Is there some example of
a
module that does it ?
Specifically, what I’m trying to do is measure time accurately in my
module
for benchmarking purposes. Since I use Linux, I was planning to use
clock_gettime(CLOCK_MONOTONIC) for that. This function is
Linux-specific,
and so I would like to make it optional at compilation time:
if nginx is compile with --with-clock-gettime (or something like
that) I
will use clock_gettime and link against the required library (librt)
otherwise, I will fall back to using gettimeofday or drop the feature
altogether
On Wed, Dec 03, 2014 at 10:47:01AM -0500, erankor2 wrote:
Hi all,
Is it possible for an nginx module to define custom compilation switches
that add external libs / preprocessor macros ? Is there some example of a
module that does it ?
No.
Specifically, what I’m trying to do is measure time accurately in my module
for benchmarking purposes. Since I use Linux, I was planning to use
clock_gettime(CLOCK_MONOTONIC) for that. This function is Linux-specific,
and so I would like to make it optional at compilation time:
if nginx is compile with --with-clock-gettime (or something like that) I
will use clock_gettime and link against the required library (librt)
otherwise, I will fall back to using gettimeofday or drop the feature
altogether
It may be better to just detect if the function is available on
a system in your module config script, much like it’s done for
many other functions in auto/unix script.
Note well that clock_gettime() isn’t Linux-specific, it’s in POSIX:
Need for librt is Linux-specific though. It can be easily tested
as well, and there are couple of feature tests in auto/unix which
do such tests for other functions.
Thank you Maxim, your suggestion will definitely work for me.
Are you familiar with any simple “non-core” module that does it ? I will
need to test for the existence of this function or the need to
explicitly
add librt, and update CORE_LIBS accordingly + define some preprocessor
macro
that I can later #ifdef on in my code.
I googled this up:
but don’t really understand what is going on there
On Wed, Dec 03, 2014 at 11:28:28AM -0500, erankor2 wrote:
Thank you Maxim, your suggestion will definitely work for me.
Are you familiar with any simple “non-core” module that does it ? I will
need to test for the existence of this function or the need to explicitly
add librt, and update CORE_LIBS accordingly + define some preprocessor macro
that I can later #ifdef on in my code.
The code as in feature tests in auto/unix is more or less the same
you’ll need in your module config file, e.g.: