mirror of
https://github.com/oxen-io/lokinet.git
synced 2024-10-31 09:20:21 +00:00
138 lines
3.7 KiB
CMake
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)
|
|
|