From 8acd0089c42c24bb7d37d8250e08867e0bd72a0f Mon Sep 17 00:00:00 2001
From: gcontini <1121667+gcontini@users.noreply.github.com>
Date: 周日, 01 12月 2019 13:44:00 +0800
Subject: [PATCH] fix centos

---
 src/library/locate/CMakeLists.txt             |    1 -
 src/library/os/openssl/signature_verifier.cpp |    4 ++++
 CMakeLists.txt                                |   16 +++++++++++-----
 src/library/os/CMakeLists.txt                 |   24 +++++++++++-------------
 4 files changed, 26 insertions(+), 19 deletions(-)

diff --git a/CMakeLists.txt b/CMakeLists.txt
index 882174e..acd00fb 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -52,17 +52,23 @@
 	add_definitions("/D _CRT_SECURE_NO_WARNINGS")
 else(MSVC)
     if(MINGW)
-        list(APPEND EXTERNAL_LIBS "-lcrypt32 -lws2_32 -liphlpapi")
+        list(APPEND EXTERNAL_LIBS "-lcrypt32 -lbcrypt -lws2_32 -liphlpapi")
         SET(CMAKE_EXE_LINKER_FLAGS "-static")
     endif(MINGW)
 endif(MSVC)
 
-if(UNIX) #this is true for all the linux systems but not for cross compiling "linux->windows"
-	#find a static version of openssl crypto library
-	SET ( OPENSSL_USE_STATIC_LIBS ON )
-	find_package(OpenSSL REQUIRED COMPONENTS Crypto)
+SET ( OPENSSL_USE_STATIC_LIBS ON )
+find_package(OpenSSL COMPONENTS Crypto)
+IF(OPENSSL_FOUND)
+	add_definitions(-DHAS_OPENSSL)
 	include_directories(${OPENSSL_INCLUDE_DIR})
 	MESSAGE(STATUS "Found openssl version ${OPENSSL_VERSION} ")
+ENDIF(OPENSSL_FOUND)
+
+if(UNIX) #this is true for all the linux systems but not for cross compiling "linux->windows"
+	IF(NOT OPENSSL_FOUND)
+		MESSAGE(SEND_ERROR "Openssl not found - required in Linux")
+	ENDIF(NOT OPENSSL_FOUND)
 	
     find_package(Threads)
 	if(THREADS_HAVE_PTHREAD_ARG)
diff --git a/src/library/locate/CMakeLists.txt b/src/library/locate/CMakeLists.txt
index 2c10950..6c19298 100644
--- a/src/library/locate/CMakeLists.txt
+++ b/src/library/locate/CMakeLists.txt
@@ -1,4 +1,3 @@
-
 ADD_LIBRARY(locators STATIC
     ApplicationFolder.cpp
     EnvironmentVarLocation.cpp
diff --git a/src/library/os/CMakeLists.txt b/src/library/os/CMakeLists.txt
index fc525b4..f2dc67b 100644
--- a/src/library/os/CMakeLists.txt
+++ b/src/library/os/CMakeLists.txt
@@ -1,20 +1,17 @@
-IF(UNIX)
+IF(UNIX OR OPENSSL_FOUND)
     ADD_LIBRARY(os STATIC
         openssl/signature_verifier.cpp
         os.c
         os-linux.c
         network_id.c)
-        
-	target_link_libraries(
-	     os
-	     base
-	     OpenSSL::Crypto 
-	     ${EXTERNAL_LIBS}
-	     ${CMAKE_DL_LIBS}
-	     ##ZLIB::ZLIB
-	)
-	
-ELSE(UNIX)
+
+	if (CMAKE_VERSION VERSION_GREATER 3.5)
+		target_link_libraries(os base OpenSSL::Crypto ${EXTERNAL_LIBS} ${CMAKE_DL_LIBS})
+	#patch for old cmake in Centos 7
+	ELSE(CMAKE_VERSION VERSION_GREATER 3.5)
+		target_link_libraries(os base ${OPENSSL_CRYPTO_LIBRARY} ${EXTERNAL_LIBS} ${CMAKE_DL_LIBS})
+	ENDIF(CMAKE_VERSION VERSION_GREATER 3.5)
+ELSE(UNIX OR OPENSSL_FOUND)
     ADD_LIBRARY(os STATIC
         windows/signature_verifier.cpp
         os.c
@@ -23,7 +20,8 @@
 	target_link_libraries(
 	     os
 	     base
+	     ${EXTERNAL_LIBS} 
 	)
-ENDIF(UNIX)
+ENDIF(UNIX OR OPENSSL_FOUND)
 
 install(TARGETS os ARCHIVE DESTINATION lib/${PROJECT_NAME}/${LCC_PROJECT_NAME})
diff --git a/src/library/os/openssl/signature_verifier.cpp b/src/library/os/openssl/signature_verifier.cpp
index 9c9f9fb..700210b 100644
--- a/src/library/os/openssl/signature_verifier.cpp
+++ b/src/library/os/openssl/signature_verifier.cpp
@@ -10,6 +10,10 @@
 #include <stdlib.h>
 #include <errno.h>
 
+#ifdef _WIN32
+#include <windows.h>
+#endif
+
 #include <public_key.h>
 
 #include "../signature_verifier.h"

--
Gitblit v1.9.1