sr: Show IPv6 address used as SRv6 Encaps source
[vpp.git] / src / CMakeLists.txt
index e2937c9..6fc243c 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.10)
 
-set(CMAKE_C_COMPILER_NAMES clang-10 clang-9 gcc-9 cc)
+set(CMAKE_C_COMPILER_NAMES clang-11 clang-10 clang-9 gcc-10 gcc-9 cc)
 
 project(vpp C)
 
 include(CheckCCompilerFlag)
+include(CheckIPOSupported)
 include(cmake/misc.cmake)
 include(cmake/cpu.cmake)
 include(cmake/ccache.cmake)
@@ -105,19 +106,29 @@ string(REPLACE ";" " " BUILD_TYPES "${BUILD_TYPES}")
 set_property(CACHE CMAKE_BUILD_TYPE PROPERTY
             HELPSTRING "Build type - valid options are: ${BUILD_TYPES}")
 
+##############################################################################
+# link time optimizations
+##############################################################################
+if (CMAKE_BUILD_TYPE_UC STREQUAL "RELEASE")
+  check_ipo_supported(RESULT _result)
+  if (_result)
+    option(VPP_USE_LTO "Link time optimization of release binaries" ON)
+  endif()
+endif()
+
 ##############################################################################
 # sanitizers
 ##############################################################################
 
 option(VPP_ENABLE_SANITIZE_ADDR "Enable Address Sanitizer" OFF)
-set(VPP_SANITIZE_ADDR_ARGS
+set(VPP_SANITIZE_ADDR_OPTIONS
   "unmap_shadow_on_exit=1:disable_coredump=0:abort_on_error=1:detect_leaks=0"
   CACHE
   STRING "Address sanitizer arguments"
 )
 
 if (VPP_ENABLE_SANITIZE_ADDR)
-  set(CMAKE_C_FLAGS "-fsanitize=address --param asan-stack=0 -DCLIB_SANITIZE_ADDR ${CMAKE_C_FLAGS}")
+  set(CMAKE_C_FLAGS "-fsanitize=address -DCLIB_SANITIZE_ADDR ${CMAKE_C_FLAGS}")
   set(CMAKE_EXE_LINKER_FLAGS "-fsanitize=address ${CMAKE_EXE_LINKER_FLAGS}")
   set(CMAKE_SHARED_LINKER_FLAGS "-fsanitize=address ${CMAKE_SHARED_LINKER_FLAGS}")
 endif (VPP_ENABLE_SANITIZE_ADDR)