From: Peter Wu Date: Sat, 25 Feb 2017 13:40:24 +0000 (+0100) Subject: cmake: build manual pages (including curl.1) X-Git-Tag: curl-7_54_0~107 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=84a226a30b2d43f8fb0da996152a8376f1e21d8e;p=thirdparty%2Fcurl.git cmake: build manual pages (including curl.1) Also make Perl mandatory to allow building the docs. While CMakeLists.txt could probably read the list of manual pages from Makefile.am, actually putting those in CMakeLists.txt is cleaner so that is what is done here. Fixes #1230 Ref: https://github.com/curl/curl/pull/1288 --- diff --git a/CMakeLists.txt b/CMakeLists.txt index 8390c38c99..58d159e2c1 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -224,6 +224,8 @@ if(ENABLE_MANUAL) message(WARNING "Found no *nroff program") endif() endif() +# Required for building manual, docs, tests +find_package(Perl REQUIRED) # We need ansi c-flags, especially on HP set(CMAKE_C_FLAGS "${CMAKE_ANSI_CFLAGS} ${CMAKE_C_FLAGS}") @@ -1082,6 +1084,7 @@ function(TRANSFORM_MAKEFILE_INC INPUT_FILE OUTPUT_FILE) endfunction() +add_subdirectory(docs) add_subdirectory(lib) if(BUILD_CURL_EXE) add_subdirectory(src) diff --git a/docs/CMakeLists.txt b/docs/CMakeLists.txt new file mode 100644 index 0000000000..4b111b85a1 --- /dev/null +++ b/docs/CMakeLists.txt @@ -0,0 +1,3 @@ +#add_subdirectory(examples) +#add_subdirectory(libcurl) +add_subdirectory(cmdline-opts) diff --git a/docs/cmdline-opts/CMakeLists.txt b/docs/cmdline-opts/CMakeLists.txt new file mode 100644 index 0000000000..ccee4a1427 --- /dev/null +++ b/docs/cmdline-opts/CMakeLists.txt @@ -0,0 +1,12 @@ +set(MANPAGE "${CMAKE_BINARY_DIR}/docs/curl.1") + +# Load DPAGES and OTHERPAGES from shared file +transform_makefile_inc("Makefile.inc" "${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake") +include("${CMAKE_CURRENT_BINARY_DIR}/Makefile.inc.cmake") + +add_custom_command(OUTPUT "${MANPAGE}" + COMMAND "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/gen.pl" mainpage "${CMAKE_CURRENT_SOURCE_DIR}" > "${MANPAGE}" + DEPENDS "${DPAGES}" "${OTHERPAGES}" + VERBATIM +) +add_custom_target(generate-curl.1 DEPENDS "${MANPAGE}") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 9bbeb6054d..e6004ceaef 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,7 +1,6 @@ set(EXE_NAME curl) if(USE_MANUAL) - find_package(Perl REQUIRED) # Use the C locale to ensure that only ASCII characters appear in the # embedded text. NROFF and MANOPT are set in the parent CMakeLists.txt add_custom_command( @@ -9,18 +8,19 @@ if(USE_MANUAL) COMMAND ${CMAKE_COMMAND} -E echo "#include \"tool_setup.h\"" > tool_hugehelp.c COMMAND ${CMAKE_COMMAND} -E echo "#ifndef HAVE_LIBZ" >> tool_hugehelp.c COMMAND env LC_ALL=C "${NROFF}" ${NROFF_MANOPT} - "${CURL_SOURCE_DIR}/docs/curl.1" | - "${PERL}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" + "${CURL_BINARY_DIR}/docs/curl.1" | + "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" "${CURL_SOURCE_DIR}/docs/MANUAL" >> tool_hugehelp.c COMMAND ${CMAKE_COMMAND} -E echo "#else" >> tool_hugehelp.c COMMAND env LC_ALL=C "${NROFF}" ${NROFF_MANOPT} - "${CURL_SOURCE_DIR}/docs/curl.1" | - "${PERL}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" -c + "${CURL_BINARY_DIR}/docs/curl.1" | + "${PERL_EXECUTABLE}" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" -c "${CURL_SOURCE_DIR}/docs/MANUAL" >> tool_hugehelp.c COMMAND ${CMAKE_COMMAND} -E echo "#endif /* HAVE_LIBZ */" >> tool_hugehelp.c DEPENDS "${CURL_SOURCE_DIR}/docs/MANUAL" - "${CURL_SOURCE_DIR}/docs/curl.1" + generate-curl.1 + "${CURL_BINARY_DIR}/docs/curl.1" "${CMAKE_CURRENT_SOURCE_DIR}/mkhelp.pl" "${CMAKE_CURRENT_SOURCE_DIR}/tool_hugehelp.h" VERBATIM)