On Sat, 7 Nov 2020 23:13:48 GMT, John Neffenger <github.com+1413266+jgn...@openjdk.org> 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]: https://stackoverflow.com/q/1777397 > [2]: https://stackoverflow.com/q/7296963 This pull request has now been integrated. Changeset: 97d655fc Author: John Neffenger <j...@status6.com> Committer: Johan Vos <j...@openjdk.org> URL: https://git.openjdk.java.net/jfx/commit/97d655fc Stats: 1 line in 1 file changed: 0 ins; 0 del; 1 mod 8256012: Fix build of Monocle for Linux Reviewed-by: jvos ------------- PR: https://git.openjdk.java.net/jfx/pull/350