+CONFIGURE_FILE ( zypp/APIConfig.h.in zypp/APIConfig.h )
+
+SET (CMAKE_CXX_STANDARD ${ZYPPCOMMON_CXX_STANDARD})
+include(CheckCCompilerFlag)
+include(CheckCXXCompilerFlag)
+CHECK_C_COMPILER_FLAG("-Werror=format-security" CC_FORMAT_SECURITY)
+CHECK_CXX_COMPILER_FLAG("-Werror=format-security" CXX_FORMAT_SECURITY)
+
+SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fno-strict-aliasing -fPIC -g -Wall -Wp,-D_GLIBCXX_ASSERTIONS" )
+SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fno-strict-aliasing -fPIC -g -Wall -Wp,-D_GLIBCXX_ASSERTIONS" )
+
+SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fvisibility-inlines-hidden -Woverloaded-virtual -Wnon-virtual-dtor" )
+
+set( CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS} -O3 -DZYPP_NDEBUG" )
+set( CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS} -O3 -DZYPP_NDEBUG" )
+
+IF(${CC_FORMAT_SECURITY})
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror=format-security")
+ENDIF(${CC_FORMAT_SECURITY})
+
+IF(${CXX_FORMAT_SECURITY})
+ SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror=format-security")
+ENDIF(${CXX_FORMAT_SECURITY})
+
+if ( NOT "${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+ #cli args ignored by clang, it still prints a noisy warning though
+ SET( CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -rdynamic -Wl,-as-needed" )
+ SET( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -rdynamic -Wl,-as-needed" )
+endif()