Wrap Cmake file on 80 characters

And enable LTO only for non debug builds

Change-Id: I3e5ea6fa88e5da3e9f8ab33a3e56355258025b9d
Signed-off-by: Ed Tanous <ed.tanous@intel.com>
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 3416c6e..aebd2e2 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 2.8.10 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
 
 cmake_policy(SET CMP0054 NEW)
 
@@ -10,14 +10,14 @@
 option(HUNTER_ENABLED "Enable hunter package pulling" OFF)
 
 include("cmake/HunterGate.cmake")
-HunterGate(
-    URL "https://github.com/ruslo/hunter/archive/v0.18.64.tar.gz"
-    SHA1 "baf9c8cc4f65306f0e442b5419967b4c4c04589a"
-)
+HunterGate(URL
+           "https://github.com/ruslo/hunter/archive/v0.18.64.tar.gz"
+           SHA1
+           "baf9c8cc4f65306f0e442b5419967b4c4c04589a")
 
 project(bmc-webserver CXX C)
 
-include( CTest )
+include(CTest)
 
 set(CMAKE_CXX_STANDARD 14)
 set(CMAKE_CXX_STANDARD_REQUIRED ON)
@@ -33,88 +33,108 @@
 option(BMCWEB_BUILD_UT "Enable Unit test" ON)
 
 # security flags
-SET(SECURITY_FLAGS " -fstack-protector-strong -fPIE -fPIC -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security")
-SET(CMAKE_CXX_FLAGS_RELEASE  "${CMAKE_CXX_FLAGS_RELEASE} ${SECURITY_FLAGS}" )
-SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO  "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${SECURITY_FLAGS}" )
-SET(CMAKE_CXX_FLAGS_MINSIZEREL  "${CMAKE_C_FLAGS_MINSIZEREL} ${SECURITY_FLAGS}" )
+SET(
+  SECURITY_FLAGS
+  "\
+    -fstack-protector-strong \
+    -fPIE \
+    -fPIC \
+    -D_FORTIFY_SOURCE=2 \
+    -Wformat \
+    -Wformat-security"
+  )
+SET(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} ${SECURITY_FLAGS}")
+SET(CMAKE_CXX_FLAGS_RELWITHDEBINFO
+    "${CMAKE_CXX_FLAGS_RELWITHDEBINFO} ${SECURITY_FLAGS}")
+SET(CMAKE_C_FLAGS_MINSIZEREL "${CMAKE_C_FLAGS_MINSIZEREL} ${SECURITY_FLAGS}")
 
-if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
-    # Enable link time optimization
-    # This is a temporary workaround because INTERPROCEDURAL_OPTIMIZATION isn't available until cmake 3.9.
-    # gcc-ar and gcc-ranlib are wrappers around ar and ranlib which add the lto plugin to the command line.
+# Enable link time optimization This is a temporary workaround because
+# INTERPROCEDURAL_OPTIMIZATION isn't available until cmake 3.9. gcc-ar and gcc-
+# ranlib are wrappers around ar and ranlib which add the lto plugin to the
+# command line.
+if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+  if(NOT CMAKE_BUILD_TYPE MATCHES DEBUG)
     STRING(REGEX REPLACE "ar$" "gcc-ar" CMAKE_AR ${CMAKE_AR})
     STRING(REGEX REPLACE "ranlib$" "gcc-ranlib" CMAKE_RANLIB ${CMAKE_RANLIB})
     SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -flto -fno-fat-lto-objects")
 
-    # Reduce the binary size by removing unnecessary dynamic symbol table entries
-    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility=hidden -fvisibility-inlines-hidden -Wl,--exclude-libs,ALL")
-endif ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
+    # Reduce the binary size by removing unnecessary dynamic symbol table
+    # entries
+    SET(
+      CMAKE_CXX_FLAGS
+      "${CMAKE_CXX_FLAGS} \
+        -fvisibility=hidden \
+        -fvisibility-inlines-hidden \
+        -Wl,--exclude-libs,ALL"
+      )
+  endif(NOT CMAKE_BUILD_TYPE MATCHES DEBUG)
+endif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
 
-#add_definitions(-DBOOST_ASIO_ENABLE_HANDLER_TRACKING)
+# add_definitions(-DBOOST_ASIO_ENABLE_HANDLER_TRACKING)
 add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY)
 add_definitions(-DBOOST_SYSTEM_NO_DEPRECATED)
 add_definitions(-DBOOST_ALL_NO_LIB)
 add_definitions(-DBOOST_NO_RTTI)
 add_definitions(-DBOOST_NO_TYPEID)
-#set(Boost_USE_STATIC_LIBS ON)
+# set(Boost_USE_STATIC_LIBS ON)
 hunter_add_package(Boost)
 find_package(Boost)
-include_directories(${Boost_INCLUDE_DIRS}) 
+include_directories(${Boost_INCLUDE_DIRS})
 
-#Openssl
+# Openssl
 hunter_add_package(OpenSSL)
 find_package(OpenSSL REQUIRED)
 include_directories(${OPENSSL_INCLUDE_DIR})
 message("OPENSSL_INCLUDE_DIR ${OPENSSL_INCLUDE_DIR}")
 
-# Crow
-#add_definitions(-DCROW_DISABLE_LOGGING)
+# Crow add_definitions(-DCROW_DISABLE_LOGGING)
 add_definitions(-DCROW_ENABLE_SSL)
-include_directories( ${CMAKE_CURRENT_SOURCE_DIR}/crow/include)
+include_directories(${CMAKE_CURRENT_SOURCE_DIR}/crow/include)
 
-#Zlib
+# Zlib
 hunter_add_package(ZLIB)
 find_package(ZLIB REQUIRED)
 include_directories(${ZLIB_INCLUDE_DIRS})
 
-#tinyxml2
+# tinyxml2
 if(NOT ${YOCTO_DEPENDENCIES})
-    add_subdirectory(tinyxml2)
+  add_subdirectory(tinyxml2)
 else()
-    find_package(tinyxml2 REQUIRED)
+  find_package(tinyxml2 REQUIRED)
 endif()
 # PAM
 option(WEBSERVER_ENABLE_PAM "enable pam authentication" ON)
-if ("${WEBSERVER_ENABLE_PAM}")
-    find_package(PAM REQUIRED)
+if("${WEBSERVER_ENABLE_PAM}")
+  find_package(PAM REQUIRED)
 else()
-    add_definitions("-DWEBSERVER_DISABLE_PAM")
+  add_definitions("-DWEBSERVER_DISABLE_PAM")
 endif()
 
-
 # Boost-dbus
 set(BOOST_DBUS_BUILD_UT ${BMCWEB_BUILD_UT})
 if(NOT ${YOCTO_DEPENDENCIES})
-    add_subdirectory(boost-dbus)
+  add_subdirectory(boost-dbus)
 else()
-    find_package(boost-dbus REQUIRED)
+  find_package(boost-dbus REQUIRED)
 endif()
 set(WEBSERVER_MAIN src/webserver_main.cpp)
 
-# the webassets file has a non-ideal beahvior, where it loads binary data into a std::string
-# due to the way crow is constructed.  This causes GCC warnings.  Filter them out.
+# the webassets file has a non-ideal beahvior, where it loads binary data into a
+# std::string due to the way crow is constructed.  This causes GCC warnings.
+# Filter them out.
 if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
-    if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9)
-        set_source_files_properties(${CMAKE_BINARY_DIR}/generated/webassets.cpp PROPERTIES COMPILE_FLAGS -Wno-narrowing)
-    endif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9)
+  if(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9)
+    set_source_files_properties(${CMAKE_BINARY_DIR}/generated/webassets.cpp
+                                PROPERTIES
+                                COMPILE_FLAGS
+                                -Wno-narrowing)
+  endif(CMAKE_CXX_COMPILER_VERSION VERSION_GREATER 4.9)
 endif()
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/redfish-core/include)
 
-set(SRC_FILES
-    ${GENERATED_SRC_FILES}
-)
+set(SRC_FILES ${GENERATED_SRC_FILES})
 
 file(COPY src/test_resources DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
 
@@ -122,44 +142,45 @@
 
 # Unit Tests
 if(${BMCWEB_BUILD_UT})
-    set(UT_FILES
-        redfish-core/ut/privileges_test.cpp
-        src/crow_test.cpp
-        src/gtest_main.cpp
-        src/token_authorization_middleware_test.cpp
-        src/security_headers_middleware_test.cpp
-        src/webassets_test.cpp
-        src/crow_getroutes_test.cpp
-        src/ast_jpeg_decoder_test.cpp
-        src/kvm_websocket_test.cpp
-        src/msan_test.cpp
-        src/ci_map_tests.cpp
-        src/ast_video_puller_test.cpp
-        ${CMAKE_BINARY_DIR}/generated/blns.hpp
-    )
-    # big list of naughty strings
-    add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/generated/blns.hpp
-        COMMAND xxd -i ${CMAKE_CURRENT_SOURCE_DIR}/src/test_resources/blns ${CMAKE_BINARY_DIR}/generated/blns.hpp)
-    
-    set_source_files_properties(${CMAKE_BINARY_DIR}/generated/blns.hpp
-        PROPERTIES GENERATED TRUE)
-    # googletest
-    enable_testing()
+  set(UT_FILES
+      redfish-core/ut/privileges_test.cpp
+      src/crow_test.cpp
+      src/gtest_main.cpp
+      src/token_authorization_middleware_test.cpp
+      src/security_headers_middleware_test.cpp
+      src/webassets_test.cpp
+      src/crow_getroutes_test.cpp
+      src/ast_jpeg_decoder_test.cpp
+      src/kvm_websocket_test.cpp
+      src/msan_test.cpp
+      src/ci_map_tests.cpp
+      src/ast_video_puller_test.cpp
+      ${CMAKE_BINARY_DIR}/generated/blns.hpp) # big list of naughty strings
+  add_custom_command(OUTPUT ${CMAKE_BINARY_DIR}/generated/blns.hpp
+                     COMMAND
+                       xxd -i
+                       ${CMAKE_CURRENT_SOURCE_DIR}/src/test_resources/blns
+                       ${CMAKE_BINARY_DIR}/generated/blns.hpp)
 
-    hunter_add_package(GTest)
-    find_package(GTest REQUIRED)
-    #find_package(GMock CONFIG REQUIRED)
+  set_source_files_properties(${CMAKE_BINARY_DIR}/generated/blns.hpp
+                              PROPERTIES
+                              GENERATED
+                              TRUE) # googletest
+  enable_testing()
 
-    add_executable(webtest ${SRC_FILES} ${UT_FILES})
-    target_link_libraries(webtest gmock gtest)
-    target_link_libraries(webtest pthread)
-    target_link_libraries(webtest boost-dbus)
-    target_link_libraries(webtest ${OPENSSL_LIBRARIES})
-    target_link_libraries(webtest ${ZLIB_LIBRARIES})
-    target_link_libraries(webtest pam)
-    target_link_libraries(webtest tinyxml2)
-    target_link_libraries(webtest -lstdc++fs)
-    add_test(webtest webtest "--gtest_output=xml:webtest.xml")
+  hunter_add_package(GTest)
+  find_package(GTest REQUIRED) # find_package(GMock CONFIG REQUIRED)
+
+  add_executable(webtest ${SRC_FILES} ${UT_FILES})
+  target_link_libraries(webtest gmock gtest)
+  target_link_libraries(webtest pthread)
+  target_link_libraries(webtest boost-dbus)
+  target_link_libraries(webtest ${OPENSSL_LIBRARIES})
+  target_link_libraries(webtest ${ZLIB_LIBRARIES})
+  target_link_libraries(webtest pam)
+  target_link_libraries(webtest tinyxml2)
+  target_link_libraries(webtest -lstdc++fs)
+  add_test(webtest webtest "--gtest_output=xml:webtest.xml")
 
 endif(${BMCWEB_BUILD_UT})
 
@@ -180,14 +201,16 @@
 add_executable(getvideo src/getvideo_main.cpp)
 target_link_libraries(getvideo pthread)
 
-# Visual Studio Code helper
-# this needs to be at the end to make sure all includes are handled correctly
+# Visual Studio Code helper this needs to be at the end to make sure all
+# includes are handled correctly
 include(CMakeExtraGeneratorDetermineCompilerMacrosAndIncludeDirs)
-get_property(C_INCLUDE_DIRS DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR} PROPERTY INCLUDE_DIRECTORIES)
+get_property(C_INCLUDE_DIRS
+             DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
+             PROPERTY INCLUDE_DIRECTORIES)
 
-execute_process(
-    COMMAND python3 ${CMAKE_CURRENT_SOURCE_DIR}/scripts/prime_vscode_compile_db.py 
-    ${C_INCLUDE_DIRS} 
-    ${CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS} 
-    ${CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS}
-)
+execute_process(COMMAND
+                  python3
+                  ${CMAKE_CURRENT_SOURCE_DIR}/scripts/prime_vscode_compile_db.py
+                  ${C_INCLUDE_DIRS}
+                  ${CMAKE_EXTRA_GENERATOR_C_SYSTEM_INCLUDE_DIRS}
+                  ${CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_INCLUDE_DIRS})