lokinet/vendor/libtuntap-master/CMakeLists.txt
2018-06-23 05:18:31 -07:00

138 lines
3.7 KiB
CMake

# libtuntap CMakeLists.txt
# ========================
project(libtuntap)
cmake_minimum_required(VERSION 2.8)
# CMake global options
# --------------------
option(ENABLE_REGRESS "Enable the regression tests" OFF)
option(ENABLE_CXX "Enable the C++ wrapper library" OFF)
option(ENABLE_PYTHON "Enable the Python wrapper library" OFF)
if(ENABLE_PYTHON AND NOT ENABLE_CXX)
set(ENABLE_CXX ON)
message(WARNING "ENABLE_CXX also set to ON")
endif()
# CMake Configuration
# -------------------
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/lib)
set(CMAKE_INSTALL_PREFIX "/usr/local/")
set(${CMAKE_SYSTEM_NAME} True)
# Global CPP definitions
# ----------------------
add_definitions(-D${CMAKE_SYSTEM_NAME})
# Portable source files
# ---------------------
set(SOURCES_LIST
tuntap.c
tuntap_log.c
)
# OS families specific things
# ---------------------------
if(UNIX)
# Unix specific include directories
# ---------------------------------
include_directories(
"${CMAKE_CURRENT_SOURCE_DIR}"
/usr/include/
/usr/local/include
)
# Unix specific definitions
# -------------------------
add_definitions(-DUnix)
# Unix specific source files
# --------------------------
set(SOURCES_LIST ${SOURCES_LIST} tuntap-unix.c )
endif(UNIX)
if(Windows)
# Windows specific definitions
# ----------------------------
add_definitions(-DWindows)
# Windows specific source files
# -----------------------------
set(SOURCES_LIST ${SOURCES_LIST} tuntap-windows.c )
endif(Windows)
# OS specific things
# ------------------
if(UNIX)
if(Linux)
set(CMAKE_INSTALL_PREFIX "/usr/")
add_definitions(-D_GNU_SOURCE)
set(SOURCES_LIST ${SOURCES_LIST} tuntap-unix-linux.c)
elseif (OpenBSD)
set(SOURCES_LIST ${SOURCES_LIST} tuntap-unix-openbsd.c)
set(SOURCES_LIST ${SOURCES_LIST} tuntap-unix-bsd.c)
elseif (NetBSD)
set(SOURCES_LIST ${SOURCES_LIST} tuntap-unix-netbsd.c)
set(SOURCES_LIST ${SOURCES_LIST} tuntap-unix-bsd.c)
elseif (FreeBSD)
set(SOURCES_LIST ${SOURCES_LIST} tuntap-unix-freebsd.c)
set(SOURCES_LIST ${SOURCES_LIST} tuntap-unix-bsd.c)
elseif (Darwin)
set(SOURCES_LIST ${SOURCES_LIST} tuntap-unix-darwin.c)
set(SOURCES_LIST ${SOURCES_LIST} tuntap-unix-bsd.c)
elseif (DragonFly)
set(SOURCES_LIST ${SOURCES_LIST} tuntap-unix-freebsd.c)
set(SOURCES_LIST ${SOURCES_LIST} tuntap-unix-bsd.c)
else()
message(FATAL_ERROR "Your operating system is not supported yet")
endif()
endif(UNIX)
# Library definition
# ------------------
add_library(tuntap SHARED ${SOURCES_LIST} tuntap.h)
set_target_properties(tuntap PROPERTIES VERSION 2.1)
add_library(tuntap-static STATIC ${SOURCES_LIST})
set_target_properties(tuntap-static PROPERTIES OUTPUT_NAME "tuntap")
if(UNIX)
set_target_properties(tuntap-static PROPERTIES PREFIX "lib")
endif(UNIX)
if(Windows)
target_link_libraries(tuntap Ws2_32.lib)
target_link_libraries(tuntap-static Ws2_32.lib)
endif(Windows)
# C++ Binding definition
# ----------------------
if(ENABLE_CXX)
include(bindings/cpp/CMakeLists.txt)
endif(ENABLE_CXX)
# Python Binding definition
# -------------------------
if(ENABLE_PYTHON)
include(bindings/python/CMakeLists.txt)
endif (ENABLE_PYTHON)
# Install rules
# -------------
if(UNIX)
install(TARGETS tuntap DESTINATION lib)
install(TARGETS tuntap-static DESTINATION lib)
install(FILES tuntap.h DESTINATION include)
target_include_directories(tuntap INTERFACE ${CMAKE_CURRENT_SOURCE_DIR})
endif(UNIX)
include(CMakeLists.txt.local OPTIONAL)
# Tests rules
# -----------
if (ENABLE_REGRESS)
include(regress/CMakeLists.txt)
endif (ENABLE_REGRESS)