diff --git a/CMakeLists.txt b/CMakeLists.txt
index c5537b8..546f726 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,7 +8,14 @@
 set (CMAKE_CXX_STANDARD_REQUIRED ON)
 set (CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/cmake ${CMAKE_MODULE_PATH})
 
-set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-rtti")
+set (
+    CMAKE_CXX_FLAGS
+    "${CMAKE_CXX_FLAGS} \
+    -Werror \
+    -Wtype-limits \
+    -Wnull-dereference \
+"
+)
 
 project (intel-ipmi-oem CXX)
 
@@ -22,7 +29,7 @@
 add_definitions (-Wno-psabi)
 
 if (NOT YOCTO) # headers that can't be built without yocto
-    include_directories (non-yocto)
+    include_directories (SYSTEM non-yocto)
 
     configure_file (CMakeLists.txt.in 3rdparty/CMakeLists.txt)
     execute_process (COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
@@ -31,30 +38,30 @@
                      WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/3rdparty)
 
     set (CMAKE_PREFIX_PATH ${CMAKE_BINARY_DIR}/prefix ${CMAKE_PREFIX_PATH})
-    include_directories (${CMAKE_BINARY_DIR}/prefix/include)
+    include_directories (SYSTEM ${CMAKE_BINARY_DIR}/prefix/include)
     link_directories (${CMAKE_BINARY_DIR}/prefix/lib)
 
-    include_directories (${CMAKE_BINARY_DIR}/sdbusplus-src)
+    include_directories (SYSTEM ${CMAKE_BINARY_DIR}/sdbusplus-src)
     link_directories (${CMAKE_BINARY_DIR}/sdbusplus-src/.libs)
-    include_directories (${CMAKE_BINARY_DIR}/phosphor-logging-src)
+    include_directories (SYSTEM ${CMAKE_BINARY_DIR}/phosphor-logging-src)
     link_directories (${CMAKE_BINARY_DIR}/phosphor-logging-src/.libs)
-    include_directories (${CMAKE_BINARY_DIR}/intel-dbus-interfaces-src)
+    include_directories (SYSTEM ${CMAKE_BINARY_DIR}/intel-dbus-interfaces-src)
     link_directories (${CMAKE_BINARY_DIR}/intel-dbus-interfaces-src/.libs)
-    include_directories (${CMAKE_BINARY_DIR}/phosphor-ipmi-host/include)
-    include_directories (${CMAKE_BINARY_DIR}/ipmid/user_channel)
-    include_directories (${CMAKE_BINARY_DIR}) # link_directories
-                                              # (${CMAKE_BINARY_DIR}/sdbusplus-
-                                              # src/.libs)
+    include_directories (SYSTEM ${CMAKE_BINARY_DIR}/phosphor-ipmi-host/include)
+    include_directories (SYSTEM ${CMAKE_BINARY_DIR}/ipmid/user_channel)
+    include_directories (SYSTEM ${CMAKE_BINARY_DIR}) # link_directories  (${CMAK
+                                                     # E_BINARY_DIR}/sdbusplus-
+                                                     # src/.libs)
 endif ()
 
 if (YOCTO)
     find_package (PkgConfig REQUIRED)
     pkg_check_modules (LOGGING phosphor-logging REQUIRED)
-    include_directories (${LOGGING_INCLUDE_DIRS})
+    include_directories (SYSTEM ${LOGGING_INCLUDE_DIRS})
     link_directories (${LOGGING_LIBRARY_DIRS})
 
     pkg_check_modules (LIBIPMID libipmid REQUIRED)
-    include_directories (${LIBIPMID_INCLUDE_DIRS})
+    include_directories (SYSTEM ${LIBIPMID_INCLUDE_DIRS})
     link_directories (${LIBIPMID_LIBRARY_DIRS})
 
 endif ()
@@ -73,13 +80,10 @@
     target_link_libraries (runSensorTests ${GTEST_BOTH_LIBRARIES}
                            ${CMAKE_THREAD_LIBS_INIT} sdbusplus -lsystemd)
 endif ()
-
-include_directories (${CMAKE_CURRENT_SOURCE_DIR}/include)
-
 #
 # import OpenSSL (crypto)
 find_package (OpenSSL REQUIRED)
-include_directories (${OPENSSL_INCLUDE_DIR})
+include_directories (SYSTEM ${OPENSSL_INCLUDE_DIR})
 
 add_library (zinteloemcmds
              SHARED src/oemcommands.cpp src/sensorcommands.cpp
diff --git a/CMakeLists.txt.in b/CMakeLists.txt.in
index 01570f8..9181ae5 100644
--- a/CMakeLists.txt.in
+++ b/CMakeLists.txt.in
@@ -9,8 +9,7 @@
 
 externalproject_add (
     intel-dbus-interfaces PREFIX ${CMAKE_BINARY_DIR}/intel-dbus-interfaces
-    GIT_REPOSITORY
-    https://github.com/openbmc/intel-dbus-interfaces GIT_TAG
+    GIT_REPOSITORY https://github.com/openbmc/intel-dbus-interfaces GIT_TAG
     b5f2dd444c5d3808d005452417e4ae2ea28624ff SOURCE_DIR
     ${CMAKE_BINARY_DIR}/intel-dbus-interfaces-src BINARY_DIR
     ${CMAKE_BINARY_DIR}/intel-dbus-interfaces-build CONFIGURE_COMMAND cd
@@ -29,8 +28,7 @@
 )
 
 externalproject_add (
-    host-ipmid PREFIX ${CMAKE_BINARY_DIR}/phosphor-host-ipmid
-    GIT_REPOSITORY
+    host-ipmid PREFIX ${CMAKE_BINARY_DIR}/phosphor-host-ipmid GIT_REPOSITORY
     https://github.com/openbmc/phosphor-host-ipmid SOURCE_DIR
     ${CMAKE_BINARY_DIR}/phosphor-ipmi-host-src BINARY_DIR
     ${CMAKE_BINARY_DIR}/phosphor-ipmi-host-build CONFIGURE_COMMAND cd
@@ -52,12 +50,11 @@
     "${CMAKE_BINARY_DIR}/prefix/include/phosphor-ipmi-host/" LOG_DOWNLOAD ON
 )
 
-externalproject_add (
-    gtest GIT_REPOSITORY "https://github.com/google/googletest.git" GIT_TAG
-    dfa853b63d17c787914b663b50c2095a0c5b706e CMAKE_ARGS
-    -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/googletest-build SOURCE_DIR
-    "${CMAKE_BINARY_DIR}/googletest-src" BINARY_DIR
-    "${CMAKE_BINARY_DIR}/googletest-build" CMAKE_ARGS
-    -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/prefix
-)
+externalproject_add (gtest GIT_REPOSITORY
+                     "https://github.com/google/googletest.git" GIT_TAG
+                     dfa853b63d17c787914b663b50c2095a0c5b706e CMAKE_ARGS
+                     -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/googletest-build
+                     SOURCE_DIR "${CMAKE_BINARY_DIR}/googletest-src" BINARY_DIR
+                     "${CMAKE_BINARY_DIR}/googletest-build" CMAKE_ARGS
+                     -DCMAKE_INSTALL_PREFIX=${CMAKE_BINARY_DIR}/prefix)
 
diff --git a/src/bmccontrolservices.cpp b/src/bmccontrolservices.cpp
index b446886..8386899 100644
--- a/src/bmccontrolservices.cpp
+++ b/src/bmccontrolservices.cpp
@@ -104,6 +104,7 @@
             return !std::get<bool>(it->second);
         }
     }
+    return false;
 }
 
 ipmi::RspType<> setBmcControlServices(boost::asio::yield_context yield,
diff --git a/src/manufacturingcommands.cpp b/src/manufacturingcommands.cpp
index ad38e79..082df1e 100644
--- a/src/manufacturingcommands.cpp
+++ b/src/manufacturingcommands.cpp
@@ -408,7 +408,7 @@
                                    ipmi_data_len_t data_len,
                                    ipmi_context_t context)
 {
-    uint8_t ret = 0;
+    int8_t ret = 0;
     ipmi_ret_t retCode = IPMI_CC_OK;
     SetSmSignalReq* pReq = static_cast<SetSmSignalReq*>(request);
     std::string ledName;
