diff mbox

[FFmpeg-devel] configure: check SDL2 function with a header

Message ID 20171228144406.30114-1-komh@chollian.net
State Accepted
Commit d03c39b46b21c893d6549a532289b7fb9935b3fc
Headers show

Commit Message

KO Myung-Hun Dec. 28, 2017, 2:44 p.m. UTC
On OS/2, '_' is not prepended to a function name.
---
 configure | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Derek Buitenhuis Dec. 28, 2017, 4:06 p.m. UTC | #1
On 12/28/2017 2:44 PM, KO Myung-Hun wrote:
> On OS/2, '_' is not prepended to a function name.
> ---
>  configure | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)

It's not immediately clear to be how checking a header instead relates
to function name mangling (or lack thereof)?

- Derek
KO Myung-Hun Dec. 29, 2017, 6:36 a.m. UTC | #2
Hi/2.

Derek Buitenhuis wrote:
> On 12/28/2017 2:44 PM, KO Myung-Hun wrote:
>> On OS/2, '_' is not prepended to a function name.
>> ---
>>  configure | 4 ++--
>>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> It's not immediately clear to be how checking a header instead relates
> to function name mangling (or lack thereof)?

Sorry about that.

SDL2 uses SDLCALL to specify a calling convention. On OS/2, it's defined
to `_System' which is similar to `_cdecl' but does not prepend '_'.

After all, without a header, a function is used without `_System'. And
linker will try to `_func' but fail because the function is `func' not
`_func'.
Derek Buitenhuis Dec. 29, 2017, 7:49 p.m. UTC | #3
On 12/29/2017 6:36 AM, KO Myung-Hun wrote:
> Sorry about that.
> 
> SDL2 uses SDLCALL to specify a calling convention. On OS/2, it's defined
> to `_System' which is similar to `_cdecl' but does not prepend '_'.
> 
> After all, without a header, a function is used without `_System'. And
> linker will try to `_func' but fail because the function is `func' not
> `_func'.

Thanks for the explanation. Patch LGTM with this added to the commit message.

- Derek
KO Myung-Hun Jan. 1, 2018, 1:49 p.m. UTC | #4
Hi/2.

Derek Buitenhuis wrote:
> On 12/29/2017 6:36 AM, KO Myung-Hun wrote:
>> Sorry about that.
>>
>> SDL2 uses SDLCALL to specify a calling convention. On OS/2, it's defined
>> to `_System' which is similar to `_cdecl' but does not prepend '_'.
>>
>> After all, without a header, a function is used without `_System'. And
>> linker will try to `_func' but fail because the function is `func' not
>> `_func'.
> 
> Thanks for the explanation. Patch LGTM with this added to the commit message.
> 

Updated.
KO Myung-Hun Jan. 7, 2018, 3:07 a.m. UTC | #5
Ping ?

KO Myung-Hun wrote:
> Hi/2.
> 
> Derek Buitenhuis wrote:
>> On 12/29/2017 6:36 AM, KO Myung-Hun wrote:
>>> Sorry about that.
>>>
>>> SDL2 uses SDLCALL to specify a calling convention. On OS/2, it's defined
>>> to `_System' which is similar to `_cdecl' but does not prepend '_'.
>>>
>>> After all, without a header, a function is used without `_System'. And
>>> linker will try to `_func' but fail because the function is `func' not
>>> `_func'.
>>
>> Thanks for the explanation. Patch LGTM with this added to the commit message.
>>
> 
> Updated.
> 
> 
> 
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
James Almer Jan. 7, 2018, 3:12 a.m. UTC | #6
On 1/7/2018 12:07 AM, KO Myung-Hun wrote:
> Ping ?
> 
> KO Myung-Hun wrote:
>> Hi/2.
>>
>> Derek Buitenhuis wrote:
>>> On 12/29/2017 6:36 AM, KO Myung-Hun wrote:
>>>> Sorry about that.
>>>>
>>>> SDL2 uses SDLCALL to specify a calling convention. On OS/2, it's defined
>>>> to `_System' which is similar to `_cdecl' but does not prepend '_'.
>>>>
>>>> After all, without a header, a function is used without `_System'. And
>>>> linker will try to `_func' but fail because the function is `func' not
>>>> `_func'.
>>>
>>> Thanks for the explanation. Patch LGTM with this added to the commit message.
>>>
>>
>> Updated.

Pushed.
diff mbox

Patch

diff --git a/configure b/configure
index 70de780f82..f937ddf2be 100755
--- a/configure
+++ b/configure
@@ -6019,14 +6019,14 @@  fi
 if enabled sdl2; then
     SDL2_CONFIG="${cross_prefix}sdl2-config"
     if test_pkg_config sdl2 "sdl2 >= 2.0.1 sdl2 < 2.1.0" SDL_events.h SDL_PollEvent; then
-        check_func SDL_Init $sdl2_extralibs $sdl2_cflags ||
+        check_func_headers SDL.h SDL_Init $sdl2_extralibs $sdl2_cflags ||
             disable sdl2
     elif "${SDL2_CONFIG}" --version > /dev/null 2>&1; then
         sdl2_cflags=$("${SDL2_CONFIG}" --cflags)
         sdl2_extralibs=$("${SDL2_CONFIG}" --libs)
         check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) >= 0x020001" $sdl2_cflags &&
         check_cpp_condition SDL.h "(SDL_MAJOR_VERSION<<16 | SDL_MINOR_VERSION<<8 | SDL_PATCHLEVEL) < 0x020100" $sdl2_cflags &&
-        check_func SDL_Init $sdl2_extralibs $sdl2_cflags &&
+        check_func_headers SDL.h SDL_Init $sdl2_extralibs $sdl2_cflags &&
             enable sdl2
     fi
     if test $target_os = "mingw32"; then