Integrated: 8256012: Fix build of Monocle for Linux

John Neffenger at
Fri Dec 11 22:00:54 UTC 2020

On Sat, 7 Nov 2020 23:13:48 GMT, John Neffenger < at> wrote:

> This pull request fixes the error when building embedded JavaFX for Linux.
> The error occurs because `MonocleGLFactory.c` does not define the macro `__USE_GNU` before including the header file `dlfcn.h`. The two lines in the conditional group "`#ifndef ANDROID`" below have no effect because the header file has already been included at that point, and the header contains include guards to ignore subsequent attempts.
> MonocleGLFactory.c
> ...
> #include <EGL/egl.h>
> #include "eglUtils.h"
> #include "../PrismES2Defs.h"
> #include "com_sun_prism_es2_MonocleGLContext.h"
> #ifndef ANDROID
> #define __USE_GNU
> #include <dlfcn.h>
> #endif
> ...
> The `-H` option of `gcc` prints the name of each header file used. Its output shows that `egl.h` ends up including `dlfcn.h` indirectly, but without the required macro definition.
> $ grep -e 'EGL/egl.h' -e 'eglUtils.h' -e 'dlfcn.h' headers.log
> . opt/vc/include/EGL/egl.h
> ...... usr/include/dlfcn.h
> ....... usr/include/arm-linux-gnueabihf/bits/dlfcn.h
> . monocle/eglUtils.h
> For the proposed fix, I referred to the page of the *Linux Programmer's Manual* at "`man dlsym`" which states, "The `_GNU_SOURCE` feature test macro must be defined in order to obtain the definitions of `RTLD_DEFAULT` and `RTLD_NEXT` from `<dlfcn.h>`." I also used information in the following two Stack Overflow conversations:
> * ['RTLD_NEXT' undeclared][1]
> * [_GNU_SOURCE and __USE_GNU][2]
> [1]:
> [2]:

This pull request has now been integrated.

Changeset: 97d655fc
Author:    John Neffenger <john at>
Committer: Johan Vos <jvos at>
Stats:     1 line in 1 file changed: 0 ins; 0 del; 1 mod

8256012: Fix build of Monocle for Linux

Reviewed-by: jvos



More information about the openjfx-dev mailing list