mirror of
				https://github.com/VCMP-SqMod/SqMod.git
				synced 2025-11-04 00:07:19 +01:00 
			
		
		
		
	Update CMakeLists.txt
This commit is contained in:
		@@ -1,4 +1,4 @@
 | 
				
			|||||||
cmake_minimum_required(VERSION 3.0.2)
 | 
					cmake_minimum_required(VERSION 3.7)
 | 
				
			||||||
project(SqMod)
 | 
					project(SqMod)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# Tell CMake where to find our scripts
 | 
					# Tell CMake where to find our scripts
 | 
				
			||||||
@@ -17,17 +17,53 @@ include(CheckCXXCompilerFlag)
 | 
				
			|||||||
# C++ standard availability check
 | 
					# C++ standard availability check
 | 
				
			||||||
if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
 | 
					if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
 | 
				
			||||||
	check_cxx_compiler_flag(-std=c++20 HAVE_FLAG_STD_CXX20)
 | 
						check_cxx_compiler_flag(-std=c++20 HAVE_FLAG_STD_CXX20)
 | 
				
			||||||
	if(HAVE_FLAG_STD_CXX20)
 | 
						check_cxx_compiler_flag(-std=c++2a HAVE_FLAG_STD_CXX2A)
 | 
				
			||||||
 | 
						if(HAVE_FLAG_STD_CXX20 OR HAVE_FLAG_STD_CXX2A)
 | 
				
			||||||
		# We can use C++20
 | 
							# We can use C++20
 | 
				
			||||||
	    set(CPP_STD_NUMBER 20)
 | 
						    set(CPP_STD_NUMBER 20)
 | 
				
			||||||
 | 
						    # Specific flags
 | 
				
			||||||
 | 
						    if (HAVE_FLAG_STD_CXX2A AND NOT HAVE_FLAG_STD_CXX20)
 | 
				
			||||||
 | 
							    set(CPP_STD_COMPILER_FLAG "-std=c++20")
 | 
				
			||||||
 | 
						    else()
 | 
				
			||||||
 | 
							    set(CPP_STD_COMPILER_FLAG "-std=c++2a")
 | 
				
			||||||
 | 
						    endif()
 | 
				
			||||||
 | 
							# Need these workarounds for older CMake
 | 
				
			||||||
 | 
							if(${CMAKE_VERSION} VERSION_LESS "3.8.0")
 | 
				
			||||||
 | 
								if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 10.0)
 | 
				
			||||||
 | 
									set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++20")
 | 
				
			||||||
 | 
									set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++20")
 | 
				
			||||||
 | 
								elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0)
 | 
				
			||||||
 | 
									set(CMAKE_CXX20_STANDARD_COMPILE_OPTION "-std=c++2a")
 | 
				
			||||||
 | 
									set(CMAKE_CXX20_EXTENSION_COMPILE_OPTION "-std=gnu++2a")
 | 
				
			||||||
 | 
								endif()
 | 
				
			||||||
 | 
							endif()
 | 
				
			||||||
	else()
 | 
						else()
 | 
				
			||||||
		check_cxx_compiler_flag(-std=c++17 HAVE_FLAG_STD_CXX17)
 | 
							check_cxx_compiler_flag(-std=c++17 HAVE_FLAG_STD_CXX17)
 | 
				
			||||||
	    if(HAVE_FLAG_STD_CXX17)
 | 
							check_cxx_compiler_flag(-std=c++1z HAVE_FLAG_STD_CXX1Z)
 | 
				
			||||||
 | 
						    if(HAVE_FLAG_STD_CXX17 OR HAVE_FLAG_STD_CXX1Z)
 | 
				
			||||||
			# We can use C++17
 | 
								# We can use C++17
 | 
				
			||||||
			set(CPP_STD_NUMBER 17)
 | 
								set(CPP_STD_NUMBER 17)
 | 
				
			||||||
 | 
							    # Specific flags
 | 
				
			||||||
 | 
							    if (HAVE_FLAG_STD_CXX17 AND NOT HAVE_FLAG_STD_CXX1Z)
 | 
				
			||||||
 | 
								    set(CPP_STD_COMPILER_FLAG "-std=c++17")
 | 
				
			||||||
 | 
							    else()
 | 
				
			||||||
 | 
								    set(CPP_STD_COMPILER_FLAG "-std=c++1z")
 | 
				
			||||||
 | 
							    endif()
 | 
				
			||||||
 | 
								# Need these workarounds for older CMake
 | 
				
			||||||
 | 
								if(${CMAKE_VERSION} VERSION_LESS "3.8.0")
 | 
				
			||||||
 | 
									if (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0)
 | 
				
			||||||
 | 
										set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++17")
 | 
				
			||||||
 | 
										set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++17")
 | 
				
			||||||
 | 
									elseif (NOT CMAKE_CXX_COMPILER_VERSION VERSION_LESS 5.1)
 | 
				
			||||||
 | 
										set(CMAKE_CXX17_STANDARD_COMPILE_OPTION "-std=c++1z")
 | 
				
			||||||
 | 
										set(CMAKE_CXX17_EXTENSION_COMPILE_OPTION "-std=gnu++1z")
 | 
				
			||||||
 | 
									endif()
 | 
				
			||||||
 | 
								endif()
 | 
				
			||||||
	    else()
 | 
						    else()
 | 
				
			||||||
			# C++14 is mandatory
 | 
								# C++14 is mandatory
 | 
				
			||||||
			set(CPP_STD_NUMBER 14)
 | 
								set(CPP_STD_NUMBER 14)
 | 
				
			||||||
 | 
							    # Specific flags
 | 
				
			||||||
 | 
								set(CPP_STD_COMPILER_FLAG "-std=c++14")
 | 
				
			||||||
	    endif()
 | 
						    endif()
 | 
				
			||||||
	endif()
 | 
						endif()
 | 
				
			||||||
else()
 | 
					else()
 | 
				
			||||||
@@ -39,13 +75,13 @@ message(STATUS "SqMod: Using C++${CPP_STD_NUMBER} standard.")
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
# Default to the identified standard
 | 
					# Default to the identified standard
 | 
				
			||||||
if(CMAKE_VERSION VERSION_LESS "3.1")
 | 
					if(CMAKE_VERSION VERSION_LESS "3.1")
 | 
				
			||||||
	if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
 | 
						if(${CMAKE_CXX_COMPILER_ID} MATCHES "(GNU)+")
 | 
				
			||||||
		set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++${CPP_STD_NUMBER}")
 | 
							set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPP_STD_COMPILER_FLAG}")
 | 
				
			||||||
	endif()
 | 
						endif()
 | 
				
			||||||
else()
 | 
					else()
 | 
				
			||||||
	# Apparently the above does not work with cmake from on debian 8
 | 
						# Apparently the above does not work with cmake from on debian 8
 | 
				
			||||||
	if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
 | 
						if(${CMAKE_CXX_COMPILER_ID} MATCHES "(GNU)+")
 | 
				
			||||||
		set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++${CPP_STD_NUMBER}")
 | 
							set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${CPP_STD_COMPILER_FLAG}")
 | 
				
			||||||
	endif()
 | 
						endif()
 | 
				
			||||||
	# Try the standard method as well
 | 
						# Try the standard method as well
 | 
				
			||||||
	set(CMAKE_CXX_STANDARD ${CPP_STD_NUMBER})
 | 
						set(CMAKE_CXX_STANDARD ${CPP_STD_NUMBER})
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user