浏览代码

cmake: lib cleanup and use cmake package_find

* use OPENSSL_ROOT_DIR
* add special .configure handling for osx
* move readline, curses to cedar

Signed-off-by: Andy Walsh <[email protected]>
Andy Walsh 7 年之前
父节点
当前提交
0bbf08fea7
共有 6 个文件被更改,包括 19 次插入19 次删除
  1. 1 0
      .travis.yml
  2. 1 1
      CMakeLists.txt
  3. 8 0
      configure
  4. 0 2
      src/CMakeLists.txt
  5. 5 0
      src/Cedar/CMakeLists.txt
  6. 4 16
      src/Mayaqua/CMakeLists.txt

+ 1 - 0
.travis.yml

@@ -48,6 +48,7 @@ before_install:
   - bash .ci/build-openssl.sh > build-deps.log 2>&1 || (cat build-deps.log && exit 1)
 
 script:
+  - export OPENSSL_ROOT_DIR=${OPENSSL_INSTALL_DIR}
   - export LD_LIBRARY_PATH="${HOME}/opt/lib:${LD_LIBRARY_PATH:-}"
   - export CFLAGS="-I${HOME}/opt/include"
   - export LDFLAGS="-L${HOME}/opt/lib"

+ 1 - 1
CMakeLists.txt

@@ -1,4 +1,4 @@
-cmake_minimum_required(VERSION 3.0)
+cmake_minimum_required(VERSION 3.4.3)
 
 project(SoftEtherVPN LANGUAGES C)
 

+ 8 - 0
configure

@@ -25,6 +25,14 @@ if [ ! -z ${CMAKE_INSTALL_PREFIX+x} ]; then
 	CMAKE_FLAGS="-DCMAKE_INSTALL_PREFIX=${CMAKE_INSTALL_PREFIX}"
 fi
 
+if [ -z ${OPENSSL_ROOT_DIR} ]; then
+	unameOut="$(uname -s)"
+	if [ "$unameOut" = "Darwin" ]; then
+		echo "Environment variable OPENSSL_ROOT_DIR not set, using default Homebrew path: /usr/local/opt/openssl/"
+		export OPENSSL_ROOT_DIR="/usr/local/opt/openssl/"
+	fi
+fi
+
 (cd tmp && cmake ${CMAKE_FLAGS} .. || exit 1)
 
 

+ 0 - 2
src/CMakeLists.txt

@@ -63,8 +63,6 @@ if(UNIX)
 
   if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
     add_definitions(-DUNIX_MACOS -DBRIDGE_PCAP)
-    include_directories(SYSTEM /usr/local/opt/openssl/include)
-    link_directories(SYSTEM /usr/local/opt/openssl/lib)
   endif()
 endif()
 

+ 5 - 0
src/Cedar/CMakeLists.txt

@@ -10,6 +10,11 @@ set_target_properties(cedar
   RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/tmp/Cedar"
 )
 
+find_library(LIB_READLINE readline)
+find_package(Curses REQUIRED)
+
+target_link_libraries(cedar ${LIB_READLINE} ${CURSES_LIBRARIES})
+
 if(${CMAKE_SYSTEM_NAME} STREQUAL "Darwin")
   target_link_libraries(cedar pcap)
 endif()

+ 4 - 16
src/Mayaqua/CMakeLists.txt

@@ -12,26 +12,14 @@ set_target_properties(mayaqua
   RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/tmp/Mayaqua"
 )
 
-find_package(Threads)
-find_library(LIB_READLINE readline)
-find_library(LIB_NCURSES ncurses)
-find_library(LIB_Z z)
+find_package(OpenSSL REQUIRED)
+find_package(Threads REQUIRED)
+find_package(ZLIB REQUIRED)
 
 # In some cases libiconv is not included in libc
 find_library(LIB_ICONV iconv)
 
-# This is required in order to link to the correct OpenSSL library
-find_library(LIB_SSL
-  NAMES ssl
-  HINTS "/usr/local/opt/openssl/lib"
-)
-
-find_library(LIB_CRYPTO
-  NAMES crypto
-  HINTS "/usr/local/opt/openssl/lib"
-)
-
-target_link_libraries(mayaqua ${CMAKE_THREAD_LIBS_INIT} ${LIB_SSL} ${LIB_CRYPTO} ${LIB_READLINE} ${LIB_NCURSES} ${LIB_Z})
+target_link_libraries(mayaqua OpenSSL::SSL OpenSSL::Crypto Threads::Threads ZLIB::ZLIB)
 
 if(LIB_ICONV)
   target_link_libraries(mayaqua ${LIB_ICONV})