wener
7 years ago
1 changed files with 217 additions and 0 deletions
Split View
Diff Options
-
217CMakeLists.txt
@ -0,0 +1,217 @@ |
|||
cmake_minimum_required(VERSION 3.6) |
|||
|
|||
set(PROJECT_NAME shadowsocks_libev) |
|||
set(RELEASE_DATE 2017-2-17) |
|||
project(${PROJECT_NAME}) |
|||
|
|||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c11") |
|||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -c") |
|||
|
|||
set(CMAKE_ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) |
|||
set(CMAKE_LIBRARY_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/lib) |
|||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin) |
|||
#set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake") |
|||
#set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") |
|||
|
|||
if (NOT CMAKE_BUILD_TYPE) |
|||
set(CMAKE_BUILD_TYPE Debug) |
|||
endif () |
|||
# Detect linux |
|||
if (UNIX AND NOT APPLE) |
|||
set(LINUX TRUE) |
|||
endif () |
|||
|
|||
|
|||
# for config.h |
|||
include_directories(.) |
|||
add_definitions(-DHAVE_CONFIG_H) |
|||
|
|||
set(SNI_SOURCE |
|||
src/http.c |
|||
src/tls.c |
|||
src/rule.c |
|||
) |
|||
|
|||
set(CRYPTO_SOURCE |
|||
src/crypto.c |
|||
src/aead.c |
|||
src/stream.c |
|||
src/base64.c |
|||
) |
|||
|
|||
set(PLUGIN_SOURCE |
|||
src/plugin.c |
|||
) |
|||
|
|||
set(SS_LOCAL_SOURCE |
|||
src/utils.c |
|||
src/jconf.c |
|||
src/json.c |
|||
src/netutils.c |
|||
src/udprelay.c |
|||
src/cache.c |
|||
src/acl.c |
|||
src/local.c |
|||
${CRYPTO_SOURCE} |
|||
${PLUGIN_SOURCE} |
|||
${SNI_SOURCE} |
|||
) |
|||
|
|||
set(SS_TUNNEL_SOURCE |
|||
src/utils.c |
|||
src/jconf.c |
|||
src/json.c |
|||
src/netutils.c |
|||
src/udprelay.c |
|||
src/cache.c |
|||
src/tunnel.c |
|||
${CRYPTO_SOURCE} |
|||
${PLUGIN_SOURCE} |
|||
) |
|||
|
|||
set(SS_SERVER_SOURCE |
|||
src/utils.c |
|||
src/jconf.c |
|||
src/json.c |
|||
src/netutils.c |
|||
src/udprelay.c |
|||
src/cache.c |
|||
src/acl.c |
|||
src/resolv.c |
|||
src/server.c |
|||
${CRYPTO_SOURCE} |
|||
${PLUGIN_SOURCE} |
|||
${SNI_SOURCE} |
|||
) |
|||
|
|||
set(SS_MANAGER_SOURCE |
|||
src/utils.c |
|||
src/jconf.c |
|||
src/json.c |
|||
src/netutils.c |
|||
src/manager.c |
|||
) |
|||
|
|||
set(SS_REDIR_SOURCE |
|||
src/utils.c |
|||
src/jconf.c |
|||
src/json.c |
|||
src/netutils.c |
|||
src/udprelay.c |
|||
src/cache.c |
|||
src/redir.c |
|||
${CRYPTO_SOURCE} |
|||
${PLUGIN_SOURCE} |
|||
${SNI_SOURCE} |
|||
) |
|||
|
|||
# We don't care about shared |
|||
set(ENABLE_SHARED OFF) |
|||
set(ENABLE_SHARED_EXECUTABLES OFF) |
|||
set(ENABLE_STATIC ON) |
|||
set(ENABLE_STATIC_EXECUTABLES ON) |
|||
#set(CMAKE_MACOSX_RPATH TRUE) |
|||
|
|||
# We need libcork,libipset headers |
|||
include_directories(libcork/include) |
|||
include_directories(libipset/include) |
|||
|
|||
# Things we need to build libcork,libipset |
|||
#link_directories(libcork/src) |
|||
#link_directories(libipset/src) |
|||
|
|||
#add_subdirectory(libcork EXCLUDE_FROM_ALL) |
|||
# So libipset can find cork |
|||
#set( ENV{PKG_CONFIG_PATH} "$ENV{PKG_CONFIG_PATH}:libcork/src" ) |
|||
#add_subdirectory(libipset EXCLUDE_FROM_ALL) |
|||
|
|||
add_library( |
|||
libcork STATIC |
|||
libcork/src/libcork/cli/commands.c |
|||
libcork/src/libcork/core/allocator.c |
|||
libcork/src/libcork/core/error.c |
|||
libcork/src/libcork/core/gc.c |
|||
libcork/src/libcork/core/hash.c |
|||
libcork/src/libcork/core/ip-address.c |
|||
libcork/src/libcork/core/mempool.c |
|||
libcork/src/libcork/core/timestamp.c |
|||
libcork/src/libcork/core/u128.c |
|||
libcork/src/libcork/core/version.c |
|||
libcork/src/libcork/ds/array.c |
|||
libcork/src/libcork/ds/bitset.c |
|||
libcork/src/libcork/ds/buffer.c |
|||
libcork/src/libcork/ds/dllist.c |
|||
libcork/src/libcork/ds/file-stream.c |
|||
libcork/src/libcork/ds/hash-table.c |
|||
libcork/src/libcork/ds/managed-buffer.c |
|||
libcork/src/libcork/ds/ring-buffer.c |
|||
libcork/src/libcork/ds/slice.c |
|||
libcork/src/libcork/posix/directory-walker.c |
|||
libcork/src/libcork/posix/env.c |
|||
libcork/src/libcork/posix/exec.c |
|||
libcork/src/libcork/posix/files.c |
|||
libcork/src/libcork/posix/process.c |
|||
libcork/src/libcork/posix/subprocess.c |
|||
libcork/src/libcork/pthreads/thread.c |
|||
) |
|||
|
|||
target_compile_definitions(libcork PUBLIC -DCORK_API=CORK_LOCAL) |
|||
|
|||
|
|||
set(LIBIPSET_SRC |
|||
libipset/src/libipset/general.c |
|||
libipset/src/libipset/bdd/assignments.c |
|||
libipset/src/libipset/bdd/basics.c |
|||
libipset/src/libipset/bdd/bdd-iterator.c |
|||
libipset/src/libipset/bdd/expanded.c |
|||
libipset/src/libipset/bdd/reachable.c |
|||
libipset/src/libipset/bdd/read.c |
|||
libipset/src/libipset/bdd/write.c |
|||
libipset/src/libipset/map/allocation.c |
|||
libipset/src/libipset/map/inspection.c |
|||
libipset/src/libipset/map/ipv4_map.c |
|||
libipset/src/libipset/map/ipv6_map.c |
|||
libipset/src/libipset/map/storage.c |
|||
libipset/src/libipset/set/allocation.c |
|||
libipset/src/libipset/set/inspection.c |
|||
libipset/src/libipset/set/ipv4_set.c |
|||
libipset/src/libipset/set/ipv6_set.c |
|||
libipset/src/libipset/set/iterator.c |
|||
libipset/src/libipset/set/storage.c |
|||
) |
|||
|
|||
add_library(libipset STATIC ${LIBIPSET_SRC}) |
|||
set_target_properties(libipset PROPERTIES |
|||
OUTPUT_NAME ipset |
|||
VERSION 1.1.0 |
|||
SOVERSION 1) |
|||
target_link_libraries(libipset libcork) |
|||
|
|||
# Add our targets |
|||
add_executable(ss-server ${SS_SERVER_SOURCE}) |
|||
add_executable(ss-tunnel ${SS_TUNNEL_SOURCE}) |
|||
add_executable(ss-manager ${SS_MANAGER_SOURCE}) |
|||
add_executable(ss-local ${SS_LOCAL_SOURCE}) |
|||
|
|||
target_compile_definitions(ss-server PUBLIC -DMODULE_REMOTE) |
|||
target_compile_definitions(ss-tunnel PUBLIC -DMODULE_TUNNEL) |
|||
target_compile_definitions(ss-manager PUBLIC -DMODULE_MANAGER) |
|||
target_compile_definitions(ss-local PUBLIC -DMODULE_LOCAL) |
|||
|
|||
# redir need linux/* stuff |
|||
if (LINUX) |
|||
add_executable(ss-redir ${SS_REDIR_SOURCE}) |
|||
target_compile_definitions(ss-redir PUBLIC -DMODULE_REDIR) |
|||
target_link_libraries(ss-redir cork ev sodium mbedtls mbedcrypto libipset udns pcre) |
|||
endif (LINUX) |
|||
|
|||
target_link_libraries(ss-server libcork ev sodium mbedtls mbedcrypto libipset udns pcre) |
|||
target_link_libraries(ss-tunnel libcork ev sodium mbedtls mbedcrypto libipset udns pcre) |
|||
target_link_libraries(ss-manager libcork ev udns) |
|||
target_link_libraries(ss-local libcork ev sodium mbedtls mbedcrypto libipset udns pcre) |
|||
|
|||
install(DIRECTORY DESTINATION ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}) |
|||
install(TARGETS ss-server RUNTIME DESTINATION bin) |
|||
install(TARGETS ss-tunnel RUNTIME DESTINATION bin) |
|||
install(TARGETS ss-manager RUNTIME DESTINATION bin) |
|||
install(TARGETS ss-local RUNTIME DESTINATION bin) |
Write
Preview
Loading…
Cancel
Save