Remove hunter and submodules

And use external project instead.  This should make it easier to keep
our systems up to date with yocto.

Change-Id: Id2c9f3e474eebf2194eaf58b0c572f7a1421def6
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 02de756..869fc48 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,21 +1,13 @@
-cmake_minimum_required(VERSION 3.0 FATAL_ERROR)
+cmake_minimum_required(VERSION 3.5 FATAL_ERROR)
 
 cmake_policy(SET CMP0054 NEW)
 
 set(CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
-message(CMAKE_MODULE_PATH=${CMAKE_MODULE_PATH})
 
 option(BUILD_STATIC_LIBS "Built static libraries" ON)
 option(YOCTO_DEPENDENCIES "Use YOCTO depedencies system" OFF)
-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")
-
-project(bmc-webserver CXX C)
+project(bmc-webserver CXX)
 
 include(CTest)
 
@@ -70,6 +62,16 @@
   endif(NOT CMAKE_BUILD_TYPE MATCHES Debug)
 endif("${CMAKE_CXX_COMPILER_ID}" STREQUAL "GNU")
 
+if(NOT ${YOCTO_DEPENDENCIES}) # Download and unpack googletest at configure time
+  configure_file(CMakeLists.txt.in 3rdparty/CMakeLists.txt)
+  execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
+                  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3rdparty)
+  execute_process(COMMAND ${CMAKE_COMMAND} --build .
+                  WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3rdparty)
+
+  set(CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/prefix ${CMAKE_PREFIX_PATH})
+endif()
+
 # add_definitions(-DBOOST_ASIO_ENABLE_HANDLER_TRACKING)
 add_definitions(-DBOOST_ERROR_CODE_HEADER_ONLY)
 add_definitions(-DBOOST_SYSTEM_NO_DEPRECATED)
@@ -77,12 +79,11 @@
 add_definitions(-DBOOST_NO_RTTI)
 add_definitions(-DBOOST_NO_TYPEID)
 # set(Boost_USE_STATIC_LIBS ON)
-hunter_add_package(Boost)
-find_package(Boost)
+
+find_package(Boost 1.64 REQUIRED)
 include_directories(${Boost_INCLUDE_DIRS})
 
 # Openssl
-hunter_add_package(OpenSSL)
 find_package(OpenSSL REQUIRED)
 include_directories(${OPENSSL_INCLUDE_DIR})
 message("OPENSSL_INCLUDE_DIR ${OPENSSL_INCLUDE_DIR}")
@@ -99,16 +100,9 @@
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/crow/include)
 
 # Zlib
-hunter_add_package(ZLIB)
 find_package(ZLIB REQUIRED)
 include_directories(${ZLIB_INCLUDE_DIRS})
 
-# tinyxml2
-if(NOT ${YOCTO_DEPENDENCIES})
-  add_subdirectory(tinyxml2)
-else()
-  find_package(tinyxml2 REQUIRED)
-endif()
 # PAM
 option(WEBSERVER_ENABLE_PAM "enable pam authentication" ON)
 if("${WEBSERVER_ENABLE_PAM}")
@@ -117,26 +111,15 @@
   add_definitions("-DWEBSERVER_DISABLE_PAM")
 endif()
 
-# Boost-dbus
-set(BOOST_DBUS_BUILD_UT ${BMCWEB_BUILD_UT})
-if(NOT ${YOCTO_DEPENDENCIES})
-  add_subdirectory(boost-dbus)
-else()
-  find_package(boost-dbus REQUIRED)
-endif()
-set(WEBSERVER_MAIN src/webserver_main.cpp)
+add_definitions("-Wno-attributes")
 
-# 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)
-endif()
+# Boost-dbus
+find_package(boost-dbus REQUIRED)
+
+# tinyxml2
+find_package(tinyxml2 REQUIRED)
+
+set(WEBSERVER_MAIN src/webserver_main.cpp)
 
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/include)
 include_directories(${CMAKE_CURRENT_SOURCE_DIR}/redfish-core/include)
@@ -153,7 +136,6 @@
 # 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
@@ -178,11 +160,13 @@
                               TRUE) # googletest
   enable_testing()
 
-  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)
+
+  find_package(GTest REQUIRED)
+  find_package(GMock REQUIRED)
+  target_link_libraries(webtest ${GTEST_LIBRARIES})
+  target_link_libraries(webtest ${GMOCK_LIBRARIES})
+
   target_link_libraries(webtest pthread)
   target_link_libraries(webtest boost-dbus)
   target_link_libraries(webtest ${OPENSSL_LIBRARIES})