cmake_minimum_required (VERSION 3.1) project (rpc VERSION 1.1.0) set (CMAKE_CXX_STANDARD 11) # RPC version info configure_file(version.h.in version.h) include_directories(${PROJECT_BINARY_DIR}) # Common compiler settings string(APPEND CMAKE_CXX_FLAGS_DEBUG " -DDEBUG -D_DEBUG") string(APPEND CMAKE_C_FLAGS_DEBUG " -DDEBUG -D_DEBUG") set (CMAKE_POSITION_INDEPENDENT_CODE ON) if (UNIX) set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -z noexecstack -z relro -z now") set (CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -z noexecstack -z relro -z now") #CMake issue #14983 set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie") #Secure library usage and secure compile flags add_definitions (-fstack-protector-strong -D_FORTIFY_SOURCE=2 -O2 -Wformat -Wformat-security) add_definitions (-fno-strict-overflow -fno-delete-null-pointer-checks -fwrapv -fpermissive) else (UNIX) add_definitions (/GS /sdl) set (CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /NXCompat /DynamicBase") add_definitions (/D UNICODE /D _UNICODE /D_NO_ASYNCRTIMP /D_ASYNCRT_EXPORT /D_NO_PPLXIMP /DWIN32 /DMBCS /D_USRDLL /DCPPREST_EXCLUDE_COMPRESSION /D_WINSOCK_DEPRECATED_NO_WARNINGS) add_compile_options ($<$:/O2>) add_compile_options (/MT$<$:d>) set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT") set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd") endif (UNIX) # Add MicroLMS directly to our build. This adds # the following targets: MicroLMS add_subdirectory(MicroLMS) # CppRestSDK find_package(cpprestsdk CONFIG REQUIRED) # ccu-poc add_executable (rpc info.h info.cpp args.h args.cpp usage.h usage.cpp port.h utils.h utils.cpp network.h network.cpp commands.h commands.cpp activation.h activation.cpp lms.h lms.cpp main.cpp ) target_include_directories(rpc PUBLIC "MicroLMS/heci" ) add_dependencies(rpc MicroLMS) if (UNIX) target_link_libraries (rpc PRIVATE MicroLMS cpprestsdk::cpprest cpprestsdk::cpprestsdk_zlib_internal cpprestsdk::cpprestsdk_boost_internal cpprestsdk::cpprestsdk_openssl_internal ) else (UNIX) target_link_libraries (rpc PRIVATE MicroLMS cpprestsdk::cpprest cpprestsdk::cpprestsdk_zlib_internal cpprestsdk::cpprestsdk_boost_internal cpprestsdk::cpprestsdk_brotli_internal DbgHelp.lib Iphlpapi.lib Setupapi.lib ws2_32.lib Psapi.lib Crypt32.lib Wintrust.lib Version.lib Wtsapi32.lib Gdiplus.lib Userenv.lib ) endif (UNIX)