mirror of
				https://github.com/thunderbrewhq/thunderbrew
				synced 2025-10-31 08:16:03 +03:00 
			
		
		
		
	 706c8903a1
			
		
	
	
		706c8903a1
		
			
		
	
	
	
	
		
			
			* chore(build): add vendored SDL 3.0.0 library * chore(build): add vendored glew-cmake-2.2.0 library * feat(console): in the presence of -opengl launch flag, change GxApi to OpenGl * feat(gx): add uncompleted CGxDeviceGLSDL targeting Windows and Linux * chore(build): change SDL3 linkage from shared (bad) to to static (good)
		
			
				
	
	
		
			129 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| macro(SDL_DetectCompiler)
 | |
|   set(USE_CLANG FALSE)
 | |
|   set(USE_GCC FALSE)
 | |
|   set(USE_INTELCC FALSE)
 | |
|   set(USE_QCC FALSE)
 | |
|   if(CMAKE_C_COMPILER_ID MATCHES "Clang|IntelLLVM")
 | |
|     set(USE_CLANG TRUE)
 | |
|     # Visual Studio 2019 v16.2 added support for Clang/LLVM.
 | |
|     # Check if a Visual Studio project is being generated with the Clang toolset.
 | |
|     if(MSVC)
 | |
|       set(MSVC_CLANG TRUE)
 | |
|     endif()
 | |
|   elseif(CMAKE_COMPILER_IS_GNUCC)
 | |
|     set(USE_GCC TRUE)
 | |
|   elseif(CMAKE_C_COMPILER_ID MATCHES "^Intel$")
 | |
|     set(USE_INTELCC TRUE)
 | |
|   elseif(CMAKE_C_COMPILER_ID MATCHES "QCC")
 | |
|     set(USE_QCC TRUE)
 | |
|   endif()
 | |
| endmacro()
 | |
| 
 | |
| function(SDL_AddCommonCompilerFlags TARGET)
 | |
|   option(SDL_WERROR "Enable -Werror" OFF)
 | |
| 
 | |
|   if(USE_GCC OR USE_CLANG OR USE_INTELCC OR USE_QCC)
 | |
|     if(MINGW)
 | |
|       # See if GCC's -gdwarf-4 is supported
 | |
|       # See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=101377 for why this is needed on Windows
 | |
|       cmake_push_check_state()
 | |
|       check_c_compiler_flag("-gdwarf-4" HAVE_GDWARF_4)
 | |
|       if(HAVE_GDWARF_4)
 | |
|         target_compile_options(${TARGET} PRIVATE "-gdwarf-4")
 | |
|       endif()
 | |
|       cmake_pop_check_state()
 | |
|     endif()
 | |
| 
 | |
|     # Check for -Wall first, so later things can override pieces of it.
 | |
|     # Note: clang-cl treats -Wall as -Weverything (which is very loud),
 | |
|     #       /W3 as -Wall, and /W4 as -Wall -Wextra.  So: /W3 is enough.
 | |
|     check_c_compiler_flag(-Wall HAVE_GCC_WALL)
 | |
|     if(MSVC_CLANG)
 | |
|       target_compile_options(${TARGET} PRIVATE "/W3")
 | |
|     elseif(HAVE_GCC_WALL)
 | |
|       target_compile_options(${TARGET} PRIVATE "-Wall")
 | |
|       if(HAIKU)
 | |
|         target_compile_options(${TARGET} PRIVATE "-Wno-multichar")
 | |
|       endif()
 | |
|     endif()
 | |
| 
 | |
|     check_c_compiler_flag(-Wundef HAVE_GCC_WUNDEF)
 | |
|     if(HAVE_GCC_WUNDEF)
 | |
|       target_compile_options(${TARGET} PRIVATE "$<$<COMPILE_LANGUAGE:C,CXX>:-Wundef>")
 | |
|     endif()
 | |
| 
 | |
|     check_c_compiler_flag(-fno-strict-aliasing HAVE_GCC_NO_STRICT_ALIASING)
 | |
|     if(HAVE_GCC_NO_STRICT_ALIASING)
 | |
|       target_compile_options(${TARGET} PRIVATE "$<$<COMPILE_LANGUAGE:C,CXX>:-fno-strict-aliasing>")
 | |
|     endif()
 | |
| 
 | |
|     check_c_compiler_flag(-Wdocumentation HAVE_GCC_WDOCUMENTATION)
 | |
|     if(HAVE_GCC_WDOCUMENTATION)
 | |
|       if(SDL_WERROR)
 | |
|         check_c_compiler_flag(-Werror=documentation HAVE_GCC_WERROR_DOCUMENTATION)
 | |
|         if(HAVE_GCC_WERROR_DOCUMENTATION)
 | |
|           target_compile_options(${TARGET} PRIVATE "$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=documentation>")
 | |
|         endif()
 | |
|       endif()
 | |
|       target_compile_options(${TARGET} PRIVATE "$<$<COMPILE_LANGUAGE:C,CXX>:-Wdocumentation>")
 | |
|     endif()
 | |
| 
 | |
|     check_c_compiler_flag(-Wdocumentation-unknown-command HAVE_GCC_WDOCUMENTATION_UNKNOWN_COMMAND)
 | |
|     if(HAVE_GCC_WDOCUMENTATION_UNKNOWN_COMMAND)
 | |
|       if(SDL_WERROR)
 | |
|         check_c_compiler_flag(-Werror=documentation-unknown-command HAVE_GCC_WERROR_DOCUMENTATION_UNKNOWN_COMMAND)
 | |
|         if(HAVE_GCC_WERROR_DOCUMENTATION_UNKNOWN_COMMAND)
 | |
|           target_compile_options(${TARGET} PRIVATE "$<$<COMPILE_LANGUAGE:C,CXX>:-Werror=documentation-unknown-command>")
 | |
|         endif()
 | |
|       endif()
 | |
|       target_compile_options(${TARGET} PRIVATE "$<$<COMPILE_LANGUAGE:C,CXX>:-Wdocumentation-unknown-command>")
 | |
|     endif()
 | |
| 
 | |
|     check_c_compiler_flag(-fcomment-block-commands=threadsafety HAVE_GCC_COMMENT_BLOCK_COMMANDS)
 | |
|     if(HAVE_GCC_COMMENT_BLOCK_COMMANDS)
 | |
|       target_compile_options(${TARGET} PRIVATE "$<$<COMPILE_LANGUAGE:C,CXX>:-fcomment-block-commands=threadsafety>")
 | |
|     else()
 | |
|       check_c_compiler_flag(/clang:-fcomment-block-commands=threadsafety HAVE_CLANG_COMMENT_BLOCK_COMMANDS)
 | |
|       if(HAVE_CLANG_COMMENT_BLOCK_COMMANDS)
 | |
|         target_compile_options(${TARGET} PRIVATE "$<$<COMPILE_LANGUAGE:C,CXX>:/clang:-fcomment-block-commands=threadsafety>")
 | |
|       endif()
 | |
|     endif()
 | |
| 
 | |
|     check_c_compiler_flag(-Wshadow HAVE_GCC_WSHADOW)
 | |
|     if(HAVE_GCC_WSHADOW)
 | |
|       target_compile_options(${TARGET} PRIVATE "$<$<COMPILE_LANGUAGE:C,CXX>:-Wshadow>")
 | |
|     endif()
 | |
| 
 | |
|     check_c_compiler_flag(-Wunused-local-typedefs HAVE_GCC_WUNUSED_LOCAL_TYPEDEFS)
 | |
|     if(HAVE_GCC_WUNUSED_LOCAL_TYPEDEFS)
 | |
|       target_compile_options(${TARGET} PRIVATE "$<$<COMPILE_LANGUAGE:C,CXX>:-Wno-unused-local-typedefs>")
 | |
|     endif()
 | |
|   endif()
 | |
| 
 | |
|   if(SDL_WERROR)
 | |
|     if(MSVC)
 | |
|       check_c_compiler_flag(/WX HAVE_WX)
 | |
|       if(HAVE_WX)
 | |
|         target_compile_options(${TARGET} PRIVATE "/WX")
 | |
|       endif()
 | |
|     elseif(USE_GCC OR USE_CLANG OR USE_INTELCC OR USE_QNX)
 | |
|       check_c_compiler_flag(-Werror HAVE_WERROR)
 | |
|       if(HAVE_WERROR)
 | |
|         target_compile_options(${TARGET} PRIVATE "$<$<COMPILE_LANGUAGE:C,CXX>:-Werror>")
 | |
|       endif()
 | |
|     endif()
 | |
|   endif()
 | |
| 
 | |
|   if(USE_CLANG)
 | |
|     check_c_compiler_flag("-fcolor-diagnostics" COMPILER_SUPPORTS_FCOLOR_DIAGNOSTICS)
 | |
|     if(COMPILER_SUPPORTS_FCOLOR_DIAGNOSTICS)
 | |
|       target_compile_options(${TARGET} PRIVATE "$<$<COMPILE_LANGUAGE:C,CXX>:-fcolor-diagnostics>")
 | |
|     endif()
 | |
|   else()
 | |
|     check_c_compiler_flag("-fdiagnostics-color=always" COMPILER_SUPPORTS_FDIAGNOSTICS_COLOR_ALWAYS)
 | |
|     if(COMPILER_SUPPORTS_FDIAGNOSTICS_COLOR_ALWAYS)
 | |
|       target_compile_options(${TARGET} PRIVATE "$<$<COMPILE_LANGUAGE:C,CXX>:-fdiagnostics-color=always>")
 | |
|     endif()
 | |
|   endif()
 | |
| endfunction()
 |