RFR: 8256012: Fix build of Monocle for Linux

John Neffenger github.com+1413266+jgneff at openjdk.java.net
Sat Nov 7 23:17:58 UTC 2020


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]: https://stackoverflow.com/q/1777397
[2]: https://stackoverflow.com/q/7296963

-------------

Commit messages:
 - 8256012: Fix build of Monocle for Linux

Changes: https://git.openjdk.java.net/jfx/pull/350/files
 Webrev: https://webrevs.openjdk.java.net/?repo=jfx&pr=350&range=00
  Issue: https://bugs.openjdk.java.net/browse/JDK-8256012
  Stats: 9 lines in 1 file changed: 3 ins; 6 del; 0 mod
  Patch: https://git.openjdk.java.net/jfx/pull/350.diff
  Fetch: git fetch https://git.openjdk.java.net/jfx pull/350/head:pull/350

PR: https://git.openjdk.java.net/jfx/pull/350


More information about the openjfx-dev mailing list