| 
									
										
										
										
											2024-05-15 20:41:21 +02:00
										 |  |  | if(NOT DEFINED COVERAGE)
 | 
					
						
							|  |  |  | 	set(COVERAGE OFF)
 | 
					
						
							|  |  |  | endif()
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-04-28 09:32:50 +02:00
										 |  |  | if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)")
 | 
					
						
							|  |  |  | 	add_compile_options( | 
					
						
							|  |  |  | 		-pedantic
 | 
					
						
							|  |  |  | 		-Wall
 | 
					
						
							|  |  |  | 		-Wcast-align
 | 
					
						
							|  |  |  | 		-Wcast-qual
 | 
					
						
							|  |  |  | 		-Wconversion
 | 
					
						
							|  |  |  | 		-Wctor-dtor-privacy
 | 
					
						
							|  |  |  | 		-Wdisabled-optimization
 | 
					
						
							|  |  |  | 		-Werror
 | 
					
						
							|  |  |  | 		-Wextra
 | 
					
						
							|  |  |  | 		-Wformat=2
 | 
					
						
							|  |  |  | 		-Winit-self
 | 
					
						
							|  |  |  | 		-Wmissing-include-dirs
 | 
					
						
							|  |  |  | 		-Wnon-virtual-dtor
 | 
					
						
							|  |  |  | 		-Wold-style-cast
 | 
					
						
							|  |  |  | 		-Woverloaded-virtual
 | 
					
						
							|  |  |  | 		-Wparentheses
 | 
					
						
							|  |  |  | 		-Wredundant-decls
 | 
					
						
							|  |  |  | 		-Wshadow
 | 
					
						
							| 
									
										
										
										
											2022-02-25 09:23:51 +01:00
										 |  |  | 		-Wsign-conversion
 | 
					
						
							| 
									
										
										
										
											2020-04-28 09:32:50 +02:00
										 |  |  | 		-Wsign-promo
 | 
					
						
							|  |  |  | 		-Wstrict-aliasing
 | 
					
						
							|  |  |  | 		-Wundef
 | 
					
						
							|  |  |  | 	)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if(${COVERAGE})
 | 
					
						
							|  |  |  | 		set(CMAKE_CXX_FLAGS "-fprofile-arcs -ftest-coverage")
 | 
					
						
							|  |  |  | 	endif()
 | 
					
						
							|  |  |  | endif()
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-09 10:00:38 +01:00
										 |  |  | if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
 | 
					
						
							| 
									
										
										
										
											2024-05-16 10:23:05 +02:00
										 |  |  | 	if((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9) AND(NOT ${COVERAGE}))
 | 
					
						
							| 
									
										
										
										
											2020-04-28 09:32:50 +02:00
										 |  |  | 		add_compile_options(-g -Og)
 | 
					
						
							| 
									
										
										
										
											2024-02-01 21:37:45 +01:00
										 |  |  | 	else() # GCC 4.8
 | 
					
						
							|  |  |  | 		add_compile_options( | 
					
						
							|  |  |  | 			-g
 | 
					
						
							|  |  |  | 			-O0 # GCC 4.8 doesn't support -Og
 | 
					
						
							|  |  |  | 			-Wno-shadow  # allow the same name for a function parameter and a member functions
 | 
					
						
							|  |  |  | 			-Wp,-w  # Disable preprocessing warnings (see below)
 | 
					
						
							|  |  |  | 		)
 | 
					
						
							|  |  |  | 		# GCC 4.8 doesn't support __has_include, so we need to help him
 | 
					
						
							|  |  |  | 		add_definitions( | 
					
						
							|  |  |  | 			-DARDUINOJSON_ENABLE_STD_STRING=1
 | 
					
						
							|  |  |  | 			-DARDUINOJSON_ENABLE_STD_STREAM=1
 | 
					
						
							|  |  |  | 		)
 | 
					
						
							| 
									
										
										
										
											2020-04-28 09:32:50 +02:00
										 |  |  | 	endif()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	add_compile_options( | 
					
						
							|  |  |  | 		-Wstrict-null-sentinel
 | 
					
						
							|  |  |  | 		-Wno-vla # Allow VLA in tests
 | 
					
						
							|  |  |  | 	)
 | 
					
						
							|  |  |  | 	add_definitions(-DHAS_VARIABLE_LENGTH_ARRAY)
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.5)
 | 
					
						
							|  |  |  | 		add_compile_options(-Wlogical-op) # the flag exists in 4.4 but is buggy
 | 
					
						
							|  |  |  | 	endif()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.6)
 | 
					
						
							|  |  |  | 		add_compile_options(-Wnoexcept)
 | 
					
						
							|  |  |  | 	endif()
 | 
					
						
							|  |  |  | endif()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if(CMAKE_CXX_COMPILER_ID MATCHES "Clang")
 | 
					
						
							|  |  |  | 	add_compile_options( | 
					
						
							|  |  |  | 		-Wc++11-compat
 | 
					
						
							|  |  |  | 		-Wdeprecated-register
 | 
					
						
							|  |  |  | 		-Wno-vla-extension # Allow VLA in tests
 | 
					
						
							|  |  |  | 	)
 | 
					
						
							|  |  |  | 	add_definitions( | 
					
						
							|  |  |  | 		-DHAS_VARIABLE_LENGTH_ARRAY
 | 
					
						
							|  |  |  | 		-DSUBSCRIPT_CONFLICTS_WITH_BUILTIN_OPERATOR
 | 
					
						
							|  |  |  | 	)
 | 
					
						
							|  |  |  | endif()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
 | 
					
						
							| 
									
										
										
										
											2023-11-06 13:24:32 +01:00
										 |  |  | 	add_compile_options(-stdlib=libc++)
 | 
					
						
							|  |  |  | 	link_libraries(c++ m)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-09 10:00:38 +01:00
										 |  |  | 	if((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.0) AND(NOT ${COVERAGE}))
 | 
					
						
							| 
									
										
										
										
											2020-04-28 09:32:50 +02:00
										 |  |  | 		add_compile_options(-g -Og)
 | 
					
						
							|  |  |  | 	else()
 | 
					
						
							|  |  |  | 		add_compile_options(-g -O0)
 | 
					
						
							|  |  |  | 	endif()
 | 
					
						
							|  |  |  | endif()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if(CMAKE_CXX_COMPILER_ID STREQUAL "AppleClang")
 | 
					
						
							| 
									
										
										
										
											2023-02-09 10:00:38 +01:00
										 |  |  | 	if((CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 9.0) AND(NOT ${COVERAGE}))
 | 
					
						
							| 
									
										
										
										
											2020-04-28 09:32:50 +02:00
										 |  |  | 		add_compile_options(-g -Og)
 | 
					
						
							|  |  |  | 	else()
 | 
					
						
							|  |  |  | 		add_compile_options(-g -O0)
 | 
					
						
							|  |  |  | 	endif()
 | 
					
						
							|  |  |  | endif()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | if(MSVC)
 | 
					
						
							|  |  |  | 	add_definitions(-D_CRT_SECURE_NO_WARNINGS)
 | 
					
						
							|  |  |  | 	add_compile_options( | 
					
						
							|  |  |  | 		/W4 # Set warning level
 | 
					
						
							|  |  |  | 		/WX # Treats all compiler warnings as errors.
 | 
					
						
							| 
									
										
										
										
											2023-02-09 19:04:23 +01:00
										 |  |  | 		/Zc:__cplusplus # Enable updated __cplusplus macro
 | 
					
						
							| 
									
										
										
										
											2020-04-28 09:32:50 +02:00
										 |  |  | 	)
 | 
					
						
							|  |  |  | endif()
 | 
					
						
							| 
									
										
										
										
											2022-02-25 10:28:22 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | if(MINGW)
 | 
					
						
							| 
									
										
										
										
											2023-02-09 10:00:38 +01:00
										 |  |  | 	# Static link on MinGW to avoid linking with the wrong DLLs when multiple
 | 
					
						
							| 
									
										
										
										
											2022-02-25 10:28:22 +01:00
										 |  |  | 	# versions are installed.
 | 
					
						
							|  |  |  | 	add_link_options(-static)
 | 
					
						
							|  |  |  | endif()
 |