192 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			192 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			CMake
		
	
	
	
	
	
| cmake_minimum_required (VERSION 3.4)
 | |
| 
 | |
| ###########################################################
 | |
| # Set project options
 | |
| #
 | |
| 
 | |
| # set the project name
 | |
| project(MicroLMS)
 | |
| 
 | |
| set (CMAKE_CXX_STANDARD 11)
 | |
| 
 | |
| set (CMAKE_POSITION_INDEPENDENT_CODE ON)
 | |
| 
 | |
| # set to ON to build library, OFF to build executable
 | |
| set (BUILD_LIBRARY ON)
 | |
| 
 | |
| include_directories(
 | |
|     ${PROJECT_BINARY_DIR} 
 | |
|     MicroLMS 
 | |
|     core
 | |
|     heci)
 | |
| 
 | |
| ###########################################################
 | |
| # Compiler / linker options
 | |
| #
 | |
| 
 | |
| if (UNIX)
 | |
| #
 | |
| # Linux Compiler and Linker Options
 | |
|     
 | |
| # Find threads [unix it pthreads]
 | |
| set(CMAKE_THREAD_PREFER_PTHREAD TRUE)
 | |
| set(THREADS_PREFER_PTHREAD_FLAG TRUE)
 | |
| find_package(Threads REQUIRED)
 | |
| 
 | |
| if (${BUILD_LIBRARY})
 | |
| add_definitions(-D BUILD_LIBRARY)
 | |
| endif (${BUILD_LIBRARY})
 | |
| 
 | |
| if (${NO_SELECT})
 | |
| add_definitions(-D NO_SELECT)
 | |
| endif (${NO_SELECT})
 | |
| 
 | |
| add_definitions( -D_POSIX )
 | |
| 
 | |
| else (UNIX)
 | |
| # Windows Compiler and Linker Options
 | |
| if (${BUILD_LIBRARY})
 | |
| add_definitions(/D BUILD_LIBRARY)
 | |
| endif (${BUILD_LIBRARY})
 | |
| 
 | |
| add_definitions (/GS /GL /W3 /Gy /Zc:wchar_t /Zi  /Zc:inline /fp:precise /WX- /Zc:forScope /Gd /Oi /FC /EHsc /nologo )
 | |
| add_definitions (/D WIN32 /D WIN64 /D NDEBUG /D _CONSOLE /D MICROSTACK_NO_STDAFX /D WINSOCK2 /D MICROSTACK_NOTLS /D _UNICODE /D UNICODE)
 | |
| add_definitions (/errorReport:prompt /diagnostics:column)
 | |
| 
 | |
| add_compile_options ($<$<CONFIG:Release>:/O1>)
 | |
| add_compile_options (/MT$<$<CONFIG:Debug>:d>)
 | |
| set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} /MT /Gm-")
 | |
| set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} /MTd /Gm /Od /D _DEBUG /D MEMORY_CHECK /D __STDC__  /D _CRT_SECURE_NO_WARNINGS /D ILibWebServer_SESSION_TRACKING /Gd /MDd")
 | |
| 
 | |
| set (CMAKE_EXE_LINKER_FLAGS 
 | |
|     "${CMAKE_EXE_LINKER_FLAGS} 
 | |
|     /MANIFEST 
 | |
|     /LTCG:incremental 
 | |
|     /NXCOMPAT
 | |
|     /DynamicBase
 | |
|     /MACHINE:X64 
 | |
|     /OPT:REF 
 | |
|     /INCREMENTAL:NO
 | |
|     /SUBSYSTEM:CONSOLE 
 | |
|     /MANIFESTUAC:\"level='asInvoker' uiAccess='false'\" 
 | |
|     /OPT:ICF 
 | |
|     /ERRORREPORT:PROMPT 
 | |
|     /NOLOGO 
 | |
|     /TLBID:1"
 | |
| )
 | |
| endif (UNIX)
 | |
| 
 | |
| ###########################################################
 | |
| # Create the binary
 | |
| #
 | |
| 
 | |
| if (UNIX)
 | |
| #
 | |
| # Linux Library and Executable Build
 | |
| #
 | |
| 
 | |
| if (BUILD_LIBRARY)
 | |
| # Create a library
 | |
| add_library (
 | |
|     MicroLMS
 | |
|     STATIC
 | |
|     MicroLMS/main.c 
 | |
|     core/utils.c
 | |
|     heci/HECILinux.c
 | |
|     heci/LMEConnection.c
 | |
|     heci/PTHICommand.c
 | |
|     microstack/ILibAsyncServerSocket.c 
 | |
|     microstack/ILibAsyncSocket.c 
 | |
|     microstack/ILibLMS.c 
 | |
|     microstack/ILibParsers.c 
 | |
|     )
 | |
| 
 | |
| target_link_libraries (
 | |
|     MicroLMS )
 | |
| 
 | |
| else (BUILD_LIBRARY)
 | |
| # Create an executable
 | |
| add_executable (
 | |
|     MicroLMS
 | |
|     MicroLMS/main.c 
 | |
|     core/utils.c
 | |
|     heci/HECILinux.c
 | |
|     heci/LMEConnection.c
 | |
|     heci/PTHICommand.c
 | |
|     microstack/ILibAsyncServerSocket.c 
 | |
|     microstack/ILibAsyncSocket.c 
 | |
|     microstack/ILibLMS.c 
 | |
|     microstack/ILibParsers.c 
 | |
|     )
 | |
| 
 | |
| target_link_libraries (
 | |
|     MicroLMS 
 | |
|     PRIVATE
 | |
|     pthread
 | |
|     )
 | |
| 
 | |
| endif (BUILD_LIBRARY)
 | |
| 
 | |
| 
 | |
| else (UNIX)
 | |
| #
 | |
| # Windows Library and Executable Build
 | |
| #
 | |
| 
 | |
| if (BUILD_LIBRARY)
 | |
| # Create a library
 | |
| add_library (
 | |
|     MicroLMS
 | |
|     STATIC
 | |
|     MicroLMS/main.c 
 | |
|     MicroLMS/stdafx.cpp 
 | |
|     core/utils.c
 | |
|     heci/HECIWin.c
 | |
|     heci/LMEConnection.c
 | |
|     heci/PTHICommand.c
 | |
|     microstack/ILibAsyncServerSocket.c 
 | |
|     microstack/ILibAsyncSocket.c 
 | |
|     microstack/ILibLMS.c 
 | |
|     microstack/ILibParsers.c 
 | |
|     )
 | |
| 
 | |
| target_link_libraries (
 | |
|     MicroLMS )
 | |
| 
 | |
| else (BUILD_LIBRARY)
 | |
| # Create an executable
 | |
| add_executable (
 | |
|     MicroLMS
 | |
|     MicroLMS/main.c 
 | |
|     MicroLMS/stdafx.cpp 
 | |
|     core/utils.c
 | |
|     heci/HECIWin.c
 | |
|     heci/LMEConnection.c
 | |
|     heci/PTHICommand.c
 | |
|     microstack/ILibAsyncServerSocket.c 
 | |
|     microstack/ILibAsyncSocket.c 
 | |
|     microstack/ILibLMS.c 
 | |
|     microstack/ILibParsers.c 
 | |
|     )
 | |
| 
 | |
| target_link_libraries (
 | |
|     MicroLMS 
 | |
|     PRIVATE 
 | |
|     DbgHelp.lib
 | |
|     Iphlpapi.lib
 | |
|     Setupapi.lib
 | |
|     ws2_32.lib
 | |
|     Psapi.lib
 | |
|     Crypt32.lib
 | |
|     Wintrust.lib
 | |
|     Version.lib
 | |
|     Wtsapi32.lib
 | |
|     Gdiplus.lib
 | |
|     Userenv.lib
 | |
| )
 | |
| 
 | |
| endif (BUILD_LIBRARY)
 | |
| 
 | |
| endif (UNIX)
 | |
| 
 |