146 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			146 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| cmake_minimum_required (VERSION 3.1)
 | |
| 
 | |
| project (rpc VERSION 1.3.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 ($<$<CONFIG:Release>:/O2>)
 | |
|   add_compile_options (/MT$<$<CONFIG:Debug>: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)
 | |
| 
 | |
| # GoogleTest
 | |
| # Download and unpack googletest at configure time
 | |
| configure_file(googletest.cmake.in googletest-download/CMakeLists.txt)
 | |
| execute_process(COMMAND ${CMAKE_COMMAND} -G "${CMAKE_GENERATOR}" .
 | |
|   RESULT_VARIABLE result
 | |
|   WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )
 | |
| if(result)
 | |
|   message(FATAL_ERROR "CMake step for googletest failed: ${result}")
 | |
| endif()
 | |
| execute_process(COMMAND ${CMAKE_COMMAND} --build .
 | |
|   RESULT_VARIABLE result
 | |
|   WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/googletest-download )
 | |
| if(result)
 | |
|   message(FATAL_ERROR "Build step for googletest failed: ${result}")
 | |
| endif()
 | |
| 
 | |
| # Prevent overriding the parent project's compiler/linker
 | |
| # settings on Windows
 | |
| set(gtest_force_shared_crt ON CACHE BOOL "" FORCE)
 | |
| 
 | |
| # Add googletest directly to our build. This defines
 | |
| # the gtest and gtest_main targets.
 | |
| add_subdirectory(${CMAKE_CURRENT_BINARY_DIR}/googletest-src
 | |
|                  ${CMAKE_CURRENT_BINARY_DIR}/googletest-build
 | |
|                  EXCLUDE_FROM_ALL)
 | |
| 
 | |
| # add the test executable
 | |
| add_executable(rpctest
 | |
|   test.cpp
 | |
|   utils.cpp
 | |
| )
 | |
| 
 | |
| target_link_libraries(rpctest
 | |
|   gtest_main
 | |
|   cpprestsdk::cpprest
 | |
|   cpprestsdk::cpprestsdk_zlib_internal
 | |
|   cpprestsdk::cpprestsdk_boost_internal
 | |
|   cpprestsdk::cpprestsdk_openssl_internal
 | |
| )
 | |
| 
 | |
| # 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
 | |
|   heartbeat.h
 | |
|   heartbeat.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)
 |