From 01ec7b5a742a1825e8e06ee8c76e5ba71933bca9 Mon Sep 17 00:00:00 2001 From: kakwa Date: Sun, 29 Jan 2017 16:31:03 +0100 Subject: [PATCH] adding code in cmake for static compilation --- CMakeLists.txt | 11 +++++++++++ cmake/Findargp.cmake | 6 +++++- cmake/Findlibcivetweb.cmake | 8 ++++++-- docs/install.rst | 4 ++++ 4 files changed, 26 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 07813f3..0e62cdb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -8,6 +8,17 @@ set(VERSION 0.1.4) option(DEBUG "compile with debug symbol" OFF) option(BUNDLE_CIVETWEB "bundle civetweb with uts-server" OFF) +option(STATIC "static linked binary" OFF) + +IF(STATIC) + set(CMAKE_FIND_LIBRARY_SUFFIXES ".a") + set(BUILD_SHARED_LIBRARIES OFF) + set(CMAKE_EXE_LINKER_FLAGS "-static") + set(OPENSSL_USE_STATIC_LIBS ON) + set(ARGP_USE_STATIC_LIBS ON) + set(CIVETWEB_USE_STATIC_LIBS ON) +ENDIF(STATIC) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99 -D_DEFAULT_SOURCE -D_XOPEN_SOURCE=700") if(DEBUG) diff --git a/cmake/Findargp.cmake b/cmake/Findargp.cmake index 6ed4ad1..9add3c2 100644 --- a/cmake/Findargp.cmake +++ b/cmake/Findargp.cmake @@ -34,7 +34,11 @@ if (ARGP_IN_LIBC) elseif (NOT ARGP_IN_LIBC) unset(ARGP_IN_LIBC CACHE) - find_library(ARGP_LIB "argp") + if(ARGP_USE_STATIC_LIBS) + find_library(ARGP_LIB "libargp.a") + else(ARGP_USE_STATIC_LIBS) + find_library(ARGP_LIB "argp") + endif(ARGP_USE_STATIC_LIBS) find_path(ARGP_INCLUDE_DIR argp.h PATH_SUFFIXES include) mark_as_advanced(ARGP_LIB) if (ARGP_LIB) diff --git a/cmake/Findlibcivetweb.cmake b/cmake/Findlibcivetweb.cmake index 6c5e4f9..b4fa5ba 100755 --- a/cmake/Findlibcivetweb.cmake +++ b/cmake/Findlibcivetweb.cmake @@ -2,6 +2,10 @@ if (NOT LIBCIVETWEB_LIBRARIES) find_path(LIBCIVETWEB_INCLUDE_DIR civetweb.h ${_LIBCIVETWEB_PATHS} PATH_SUFFIXES include include/civetweb/) endif () -if (NOT LIBCIVETWEB_LIBRARIES) - find_library(LIBCIVETWEB_LIBRARIES NAMES civetweb ${_LIBCIVETWEB_PATHS} PATH_SUFFIXES lib) +if (NOT LIBCIVETWE[DB_LIBRARIES) + if(LIBCIVETWEB_USE_STATIC_LIBS) + find_library(LIBCIVETWEB_LIBRARIES NAMES libcivetweb.a ${_LIBCIVETWEB_PATHS} PATH_SUFFIXES lib) + else(LIBCIVETWEB_USE_STATIC_LIBS) + find_library(LIBCIVETWEB_LIBRARIES NAMES civetweb ${_LIBCIVETWEB_PATHS} PATH_SUFFIXES lib) + endif(LIBCIVETWEB_USE_STATIC_LIBS) endif () diff --git a/docs/install.rst b/docs/install.rst index d1d2588..be2650b 100644 --- a/docs/install.rst +++ b/docs/install.rst @@ -36,3 +36,7 @@ uts-server is compiled using cmake: # Compile with debug flags $ cmake . -DDEBUG=ON $ make + + # Compile statically + $ cmake . -DSTATIC=ON + $ make