mirror of
				https://github.com/libsdl-org/SDL.git
				synced 2025-10-26 12:27:44 +00:00 
			
		
		
		
	cmake: cannot use CheckSymbolExists for _alloca
_alloca is an intrinsic function on MSVC, which means it has no address and is no symbol. Hence CheckSymbolExists will always fail finding it.
This commit is contained in:
		 Anonymous Maarten
					Anonymous Maarten
				
			
				
					committed by
					
						 Anonymous Maarten
						Anonymous Maarten
					
				
			
			
				
	
			
			
			 Anonymous Maarten
						Anonymous Maarten
					
				
			
						parent
						
							6677fad1c8
						
					
				
				
					commit
					40d8ec4be9
				
			| @@ -1005,7 +1005,14 @@ set(SDL_DISABLE_ALLOCA 0) | |||||||
| check_include_file("alloca.h" "HAVE_ALLOCA_H") | check_include_file("alloca.h" "HAVE_ALLOCA_H") | ||||||
| if(MSVC) | if(MSVC) | ||||||
|   check_include_file("malloc.h" "HAVE_MALLOC_H") |   check_include_file("malloc.h" "HAVE_MALLOC_H") | ||||||
|   check_symbol_exists("_alloca" "malloc.h" _ALLOCA_IN_MALLOC_H) |   # Cannot use CheckSymbolExists for _alloca: purely intrinsic functions have no address (C7552) | ||||||
|  |   if(NOT DEFINED _ALLOCA_IN_MALLOC_H) | ||||||
|  |     message(STATUS "Looking for _alloca in malloc.h") | ||||||
|  |     set(testsrc "${CMAKE_CURRENT_SOURCE_DIR}/test_malloc_alloca.c") | ||||||
|  |     file(WRITE "${testsrc}" "#include <malloc.h>\n\nint main(int argc, char *argv[]) { void *ptr = _alloca(argc * (int)argv[0][0]); return ptr != (void *)0; }") | ||||||
|  |     try_compile(_ALLOCA_IN_MALLOC_H "${CMAKE_CURRENT_BINARY_DIR}/alloca_in_malloc_h" SOURCES "${testsrc}") | ||||||
|  |     message(STATUS "Looking for _alloca in malloc.h - ${_ALLOCA_IN_MALLOC_H}") | ||||||
|  |   endif() | ||||||
|   if(NOT HAVE_ALLOCA_H AND NOT _ALLOCA_IN_MALLOC_H) |   if(NOT HAVE_ALLOCA_H AND NOT _ALLOCA_IN_MALLOC_H) | ||||||
|     set(SDL_DISABLE_ALLOCA 1) |     set(SDL_DISABLE_ALLOCA 1) | ||||||
|   endif() |   endif() | ||||||
|   | |||||||
| @@ -4,6 +4,7 @@ if(EMSCRIPTEN) | |||||||
|     set(HAVE_ALLOCA_H                                    "1"   CACHE INTERNAL "Have include alloca.h") |     set(HAVE_ALLOCA_H                                    "1"   CACHE INTERNAL "Have include alloca.h") | ||||||
|     set(HAVE_LIBM                                        "1"   CACHE INTERNAL "Have library m") |     set(HAVE_LIBM                                        "1"   CACHE INTERNAL "Have library m") | ||||||
|     set(HAVE_MALLOC                                      "1"   CACHE INTERNAL "Have include malloc.h") |     set(HAVE_MALLOC                                      "1"   CACHE INTERNAL "Have include malloc.h") | ||||||
|  |     set(HAVE_MALLOC_H                                    "1"   CACHE INTERNAL "Have include malloc.h") | ||||||
|     set(LIBC_HAS_ABS                                     "1"   CACHE INTERNAL "Have symbol abs") |     set(LIBC_HAS_ABS                                     "1"   CACHE INTERNAL "Have symbol abs") | ||||||
|     set(LIBC_HAS_ACOS                                    "1"   CACHE INTERNAL "Have symbol acos") |     set(LIBC_HAS_ACOS                                    "1"   CACHE INTERNAL "Have symbol acos") | ||||||
|     set(LIBC_HAS_ACOSF                                   "1"   CACHE INTERNAL "Have symbol acosf") |     set(LIBC_HAS_ACOSF                                   "1"   CACHE INTERNAL "Have symbol acosf") | ||||||
|   | |||||||
| @@ -21,6 +21,7 @@ if(MSVC) | |||||||
|       set(HAVE_DXGI_H                                      "1"   CACHE INTERNAL "Have include dxgi.h") |       set(HAVE_DXGI_H                                      "1"   CACHE INTERNAL "Have include dxgi.h") | ||||||
|       set(HAVE_LIBM                                        ""    CACHE INTERNAL "Have library m") |       set(HAVE_LIBM                                        ""    CACHE INTERNAL "Have library m") | ||||||
|       set(HAVE_MALLOC                                      "1"   CACHE INTERNAL "Have include malloc.h") |       set(HAVE_MALLOC                                      "1"   CACHE INTERNAL "Have include malloc.h") | ||||||
|  |       set(HAVE_MALLOC_H                                    "1"   CACHE INTERNAL "Have include malloc.h") | ||||||
|       set(HAVE_MMDEVICEAPI_H                               "1"   CACHE INTERNAL "Have include mmdeviceapi.h") |       set(HAVE_MMDEVICEAPI_H                               "1"   CACHE INTERNAL "Have include mmdeviceapi.h") | ||||||
|       set(HAVE_SENSORSAPI_H                                "1"   CACHE INTERNAL "Have include sensorsapi.h") |       set(HAVE_SENSORSAPI_H                                "1"   CACHE INTERNAL "Have include sensorsapi.h") | ||||||
|       set(HAVE_SHELLSCALINGAPI_H                           "1"   CACHE INTERNAL "Have include shellscalingapi.h") |       set(HAVE_SHELLSCALINGAPI_H                           "1"   CACHE INTERNAL "Have include shellscalingapi.h") | ||||||
| @@ -157,7 +158,7 @@ if(MSVC) | |||||||
|       set(LIBC_HAS__ULTOA                                  "1"   CACHE INTERNAL "Have symbol _ultoa") |       set(LIBC_HAS__ULTOA                                  "1"   CACHE INTERNAL "Have symbol _ultoa") | ||||||
|       set(LIBC_HAS__WCSDUP                                 "1"   CACHE INTERNAL "Have symbol _wcsdup") |       set(LIBC_HAS__WCSDUP                                 "1"   CACHE INTERNAL "Have symbol _wcsdup") | ||||||
|       set(LIBC_IS_GLIBC                                    ""    CACHE INTERNAL "Have symbol __GLIBC__") |       set(LIBC_IS_GLIBC                                    ""    CACHE INTERNAL "Have symbol __GLIBC__") | ||||||
|       set(_ALLOCA_IN_MALLOC_H                              ""    CACHE INTERNAL "Have symbol _alloca") |       set(_ALLOCA_IN_MALLOC_H                              "1"   CACHE INTERNAL "Have symbol _alloca") | ||||||
|  |  | ||||||
|       if(CHECK_CPU_ARCHITECTURE_X86) |       if(CHECK_CPU_ARCHITECTURE_X86) | ||||||
|         set(COMPILER_SUPPORTS_AVX                            "1"   CACHE INTERNAL "Test COMPILER_SUPPORTS_AVX") |         set(COMPILER_SUPPORTS_AVX                            "1"   CACHE INTERNAL "Test COMPILER_SUPPORTS_AVX") | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user