On Fri, 11 Dec 2020 20:48:11 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
>
> John Neffenger has updated the pull request incrementally with one additional 
> commit since the last revision:
> 
>   Move fix to the ARM build file instead of the code

Marked as reviewed by jvos (Reviewer).

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

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

Reply via email to