Enable use of other build types than Debug and Release, and properly default to Release.
This commit is contained in:
		
							parent
							
								
									72fa35da10
								
							
						
					
					
						commit
						b72dc8c0cf
					
				| @ -99,24 +99,6 @@ add_library(osrm_extract $<TARGET_OBJECTS:EXTRACTOR> $<TARGET_OBJECTS:UTIL>) | |||||||
| add_library(osrm_contract $<TARGET_OBJECTS:CONTRACTOR> $<TARGET_OBJECTS:UTIL>) | add_library(osrm_contract $<TARGET_OBJECTS:CONTRACTOR> $<TARGET_OBJECTS:UTIL>) | ||||||
| add_library(osrm_store $<TARGET_OBJECTS:STORAGE> $<TARGET_OBJECTS:UTIL>) | add_library(osrm_store $<TARGET_OBJECTS:STORAGE> $<TARGET_OBJECTS:UTIL>) | ||||||
| 
 | 
 | ||||||
| # Check the release mode |  | ||||||
| if(NOT CMAKE_BUILD_TYPE MATCHES Debug) |  | ||||||
|   set(CMAKE_BUILD_TYPE Release) |  | ||||||
| endif() |  | ||||||
| if(CMAKE_BUILD_TYPE MATCHES Debug) |  | ||||||
|   message(STATUS "Configuring OSRM in debug mode") |  | ||||||
|   set(ENABLE_ASSERTIONS ON) |  | ||||||
|   if(NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC") |  | ||||||
| 
 |  | ||||||
|   set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-inline -fno-omit-frame-pointer") |  | ||||||
| 
 |  | ||||||
|   if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") |  | ||||||
|     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Og -ggdb") |  | ||||||
|   endif() |  | ||||||
| 
 |  | ||||||
|   endif() |  | ||||||
| endif() |  | ||||||
| 
 |  | ||||||
| if(ENABLE_GOLD_LINKER) | if(ENABLE_GOLD_LINKER) | ||||||
|     execute_process(COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version ERROR_QUIET OUTPUT_VARIABLE LD_VERSION) |     execute_process(COMMAND ${CMAKE_C_COMPILER} -fuse-ld=gold -Wl,--version ERROR_QUIET OUTPUT_VARIABLE LD_VERSION) | ||||||
|     if("${LD_VERSION}" MATCHES "GNU gold") |     if("${LD_VERSION}" MATCHES "GNU gold") | ||||||
| @ -136,8 +118,45 @@ if(ENABLE_GOLD_LINKER) | |||||||
|     endif() |     endif() | ||||||
| endif() | endif() | ||||||
| 
 | 
 | ||||||
| if(CMAKE_BUILD_TYPE MATCHES Release) | # Explicitly set the build type to Release if no other type is specified | ||||||
|  | # on the command line.  Without this, cmake defaults to an unoptimized, | ||||||
|  | # non-debug build, which almost nobody wants. | ||||||
|  | if(NOT CMAKE_BUILD_TYPE) | ||||||
|  |   message(STATUS "No build type specified, defaulting to Release") | ||||||
|  |   set(CMAKE_BUILD_TYPE Release) | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
|  | if(CMAKE_BUILD_TYPE MATCHES Debug) | ||||||
|  |   message(STATUS "Configuring OSRM in debug mode") | ||||||
|  | elseif(CMAKE_BUILD_TYPE MATCHES Release) | ||||||
|   message(STATUS "Configuring OSRM in release mode") |   message(STATUS "Configuring OSRM in release mode") | ||||||
|  | elseif(CMAKE_BUILD_TYPE MATCHES RelWithDebInfo) | ||||||
|  |   message(STATUS "Configuring OSRM in release mode with debug flags") | ||||||
|  | elseif(CMAKE_BUILD_TYPE MATCHES MinRelSize) | ||||||
|  |   message(STATUS "Configuring OSRM in release mode with minimized size") | ||||||
|  | else() | ||||||
|  |   message(STATUS "Unrecognized build type - will use cmake defaults") | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
|  | # Additional logic for the different build types | ||||||
|  | if(CMAKE_BUILD_TYPE MATCHES Debug OR CMAKE_BUILD_TYPE MATCHES RelWithDebInfo) | ||||||
|  |   message(STATUS "Configuring debug mode flags") | ||||||
|  |   set(ENABLE_ASSERTIONS ON) | ||||||
|  |   if(NOT ${CMAKE_CXX_COMPILER_ID} STREQUAL "MSVC") | ||||||
|  |     set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-inline -fno-omit-frame-pointer") | ||||||
|  |     if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU") | ||||||
|  |       if (CMAKE_BUILD_TYPE MATCHES Debug) | ||||||
|  |         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Og -ggdb") | ||||||
|  |       else() | ||||||
|  |         # Don't override the -O parameter for RelWithDebInfo, we want an optimized build | ||||||
|  |         set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -ggdb") | ||||||
|  |       endif() | ||||||
|  |     endif() | ||||||
|  |   endif() | ||||||
|  | endif() | ||||||
|  | 
 | ||||||
|  | if(CMAKE_BUILD_TYPE MATCHES Release OR CMAKE_BUILD_TYPE MATCHES MinRelSize OR CMAKE_BUILD_TYPE MATCHES RelWithDebInfo) | ||||||
|  |   message(STATUS "Configuring release mode optimizations") | ||||||
|   # Check if LTO is available |   # Check if LTO is available | ||||||
|   check_cxx_compiler_flag("-flto" LTO_AVAILABLE) |   check_cxx_compiler_flag("-flto" LTO_AVAILABLE) | ||||||
|   if(ENABLE_LTO AND LTO_AVAILABLE) |   if(ENABLE_LTO AND LTO_AVAILABLE) | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user