mirror of
https://github.com/shadowsocks/shadowsocks-libev.git
synced 2026-10-30 22:13:49 +00:00
Add document build
This commit is contained in:
@@ -128,4 +128,5 @@ target_link_libraries(ipset-shared cork-shared bloom-shared)
|
||||
set_target_properties(bloom-shared PROPERTIES OUTPUT_NAME bloom)
|
||||
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(doc)
|
||||
|
||||
|
||||
@@ -0,0 +1,85 @@
|
||||
find_program(XMLTO_EXECUTABLE NAMES xmlto)
|
||||
find_program(ASCIIDOC_EXECUTABLE NAMES asciidoc asciidoc.py)
|
||||
|
||||
# Opt-in doc build option
|
||||
if (XMLTO_EXECUTABLE-NOTFOUND OR ASCIIDOC_EXECUTABLE-NOTFOUND)
|
||||
option(WITH_DOC_MAN "Build manpage doc" OFF)
|
||||
else ()
|
||||
option(WITH_DOC_MAN "Build manpage doc" ON)
|
||||
endif ()
|
||||
|
||||
if (ASCIIDOC_EXECUTABLE-NOTFOUND)
|
||||
option(WITH_DOC_HTML "Build html doc" OFF)
|
||||
else ()
|
||||
option(WITH_DOC_HTML "Build html doc" ON)
|
||||
endif ()
|
||||
|
||||
|
||||
# NOTE For brew user, we have to setup this env var. see `brew info asciidoc'
|
||||
set(XMLTO_ENV)
|
||||
set(XMLTO_CATALOG_DIR_MACOS /usr/local/etc/xml/catalog)
|
||||
if (EXISTS ${XMLTO_CATALOG_DIR_MACOS})
|
||||
set(XMLTO_ENV XML_CATALOG_FILES=${XMLTO_CATALOG_DIR_MACOS})
|
||||
message(STATUS "Detect xmlto catalog dir ${XMLTO_CATALOG_DIR_MACOS}")
|
||||
endif ()
|
||||
|
||||
set(CMAKE_MANPAGE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/man)
|
||||
|
||||
set(DOC_DIR ${CMAKE_SOURCE_DIR}/doc)
|
||||
set(XMLTO_OPTS -m ${DOC_DIR}/manpage-normal.xsl -m ${DOC_DIR}/manpage-bold-literal.xsl man)
|
||||
set(ASCIIDOC_XML_OPTS -b docbook -d manpage -f ${DOC_DIR}/asciidoc.conf -aversion=${PROJECT_VERSION})
|
||||
set(ASCIIDOC_HTML_OPTS -b html4 -d article -f ${DOC_DIR}/asciidoc.conf -aversion=${PROJECT_VERSION})
|
||||
|
||||
|
||||
set(MAN_NAMES ss-local.1 ss-manager.1 ss-nat.1 ss-redir.1 ss-server.1 ss-tunnel.1 shadowsocks-libev.8)
|
||||
set(MAN_FILES)
|
||||
set(HTML_FILES)
|
||||
|
||||
foreach (manfile IN LISTS MAN_NAMES)
|
||||
string(REGEX REPLACE \\.. .xml xmlfile ${manfile})
|
||||
string(REGEX REPLACE \\.. .asciidoc docfile ${manfile})
|
||||
string(REGEX REPLACE \\.. .html htmlfile ${manfile})
|
||||
|
||||
set(docfile ${DOC_DIR}/${docfile})
|
||||
|
||||
add_custom_command(OUTPUT ${manfile}
|
||||
COMMAND ${ASCIIDOC_EXECUTABLE} ${ASCIIDOC_XML_OPTS} -o ${xmlfile} ${docfile}
|
||||
COMMAND ${CMAKE_COMMAND} -E env ${XMLTO_ENV} ${XMLTO_EXECUTABLE} ${XMLTO_OPTS} ${xmlfile}
|
||||
# After we built the manpage, the xmlfile is nolongger needed
|
||||
COMMAND ${CMAKE_COMMAND} -E remove ${xmlfile}
|
||||
DEPENDS ${docfile}
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/man
|
||||
COMMENT "Building manpage ${manfile}"
|
||||
VERBATIM)
|
||||
list(APPEND MAN_FILES ${manfile})
|
||||
|
||||
add_custom_command(OUTPUT ${htmlfile}
|
||||
COMMAND ${ASCIIDOC_EXECUTABLE} ${ASCIIDOC_HTML_OPTS} -o ${htmlfile} ${docfile}
|
||||
DEPENDS ${docfile}
|
||||
WORKING_DIRECTORY ${CMAKE_BINARY_DIR}/html
|
||||
COMMENT "Building htmlfile ${htmlfile}"
|
||||
VERBATIM)
|
||||
list(APPEND HTML_FILES ${htmlfile})
|
||||
endforeach ()
|
||||
|
||||
add_custom_target(doc-man ALL DEPENDS ${MAN_FILES})
|
||||
add_custom_target(doc-html ALL DEPENDS ${HTML_FILES})
|
||||
|
||||
|
||||
if (NOT WITH_DOC_MAN)
|
||||
set_target_properties(doc-man PROPERTIES EXCLUDE_FROM_ALL TRUE)
|
||||
endif ()
|
||||
if (NOT WITH_DOC_HTML)
|
||||
set_target_properties(doc-html PROPERTIES EXCLUDE_FROM_ALL TRUE)
|
||||
endif ()
|
||||
|
||||
# This is required for custom command
|
||||
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/man)
|
||||
file(MAKE_DIRECTORY ${CMAKE_BINARY_DIR}/html)
|
||||
|
||||
install(DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
DESTINATION man
|
||||
FILES_MATCHING PATTERN "*.[18]")
|
||||
install(DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
DESTINATION html
|
||||
FILES_MATCHING PATTERN "*.html")
|
||||
+29
-5
@@ -97,13 +97,33 @@ find_library(LIBEV_SHARED ev)
|
||||
find_library(LIBUDNS_SHARED udns)
|
||||
find_library(LIBPCRE_SHARED pcre)
|
||||
|
||||
list(APPEND DEPS bloom m ${LIBEV} ${LIBUDNS} ${LIBPCRE} ${LIBSODIUM} ${LIBMBEDTLS} ${LIBMBEDCRYPTO})
|
||||
list(APPEND DEPS_SHARED bloom-shared m ${LIBEV_SHARED} ${LIBUDNS_SHARED} ${LIBPCRE_SHARED} ${LIBSODIUM_SHARED}
|
||||
${LIBMBEDTLS_SHARED} ${LIBMBEDCRYPTO_SHARED})
|
||||
# Dependencies we need for static and shared
|
||||
list(APPEND DEPS
|
||||
m
|
||||
bloom
|
||||
${LIBEV}
|
||||
${LIBUDNS}
|
||||
${LIBPCRE}
|
||||
${LIBSODIUM}
|
||||
${LIBMBEDTLS}
|
||||
${LIBMBEDCRYPTO}
|
||||
)
|
||||
list(APPEND DEPS_SHARED
|
||||
m
|
||||
bloom-shared
|
||||
${LIBEV_SHARED}
|
||||
${LIBUDNS_SHARED}
|
||||
${LIBPCRE_SHARED}
|
||||
${LIBSODIUM_SHARED}
|
||||
${LIBMBEDTLS_SHARED}
|
||||
${LIBMBEDCRYPTO_SHARED}
|
||||
)
|
||||
|
||||
find_package (Threads)
|
||||
|
||||
# Add our targets
|
||||
# ------------------------------------------------------------------
|
||||
# Static
|
||||
# By default we use normal name for static, all shared targets will add a `-shared' suffix
|
||||
add_executable(ss-server ${SS_SERVER_SOURCE})
|
||||
add_executable(ss-tunnel ${SS_TUNNEL_SOURCE})
|
||||
add_executable(ss-manager ${SS_MANAGER_SOURCE})
|
||||
@@ -132,6 +152,9 @@ target_link_libraries(shadowsocks-libev cork ipset ${DEPS})
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Shared
|
||||
# Shared target will have a `-shared' suffix
|
||||
# All shared dependency also have `-shared' suffix
|
||||
# For shared binary, we still use the same name as static, without `-shared', but will output to shared directory
|
||||
add_executable(ss-server-shared ${SS_SERVER_SOURCE})
|
||||
add_executable(ss-tunnel-shared ${SS_TUNNEL_SOURCE})
|
||||
add_executable(ss-manager-shared ${SS_MANAGER_SOURCE})
|
||||
@@ -172,7 +195,8 @@ set_target_properties(shadowsocks-libev-shared PROPERTIES OUTPUT_NAME shadowsock
|
||||
target_compile_definitions(shadowsocks-libev-shared PUBLIC -DMODULE_LOCAL)
|
||||
target_link_libraries(shadowsocks-libev-shared cork-shared ipset-shared ${DEPS_SHARED})
|
||||
|
||||
|
||||
# ------------------------------------------------------------------
|
||||
# Misc
|
||||
install(DIRECTORY ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}
|
||||
DESTINATION bin
|
||||
FILES_MATCHING PATTERN "ss-*")
|
||||
|
||||
Reference in New Issue
Block a user