diff --git a/CMakeLists.txt b/CMakeLists.txt index 7efaa6c97..52951f7f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -47,7 +47,8 @@ ENDIF() # Determine if DOXYGEN and DOT are available. These will be used # when building the documentation. -FIND_PROGRAM(NC_DOXYGEN NAMES doxygen) +#FIND_PROGRAM(NC_DOXYGEN NAMES doxygen) +FIND_PACKAGE(Doxygen) FIND_PROGRAM(NC_DOT NAMES dot) # For CMAKE_INSTALL_LIBDIR @@ -329,7 +330,7 @@ MACRO(print_conf_summary) MESSAGE("") ENDIF() - MESSAGE("Tests Enabled: ${ENABLE_TESTS}") + MESSAGE("Tests Enabled: ${ENABLE_TESTS}") IF(ENABLE_TESTS) MESSAGE(STATUS "DAP Remote Tests: ${ENABLE_DAP_REMOTE_TESTS}") MESSAGE(STATUS "DAP AUTH Tests: ${ENABLE_DAP_AUTH_TESTS}") @@ -892,9 +893,7 @@ ENDIF() # Determine whether or not to generate documentation. OPTION(ENABLE_DOXYGEN "Enable generation of doxygen." OFF) IF(ENABLE_DOXYGEN) - IF(NC_DOXYGEN) - SET(BUILD_DOCS ON CACHE BOOL "") - + IF(DOXYGEN_FOUND) # Offer the option to build internal documentation. OPTION(ENABLE_INTERNAL_DOCS "Build internal documentation. This is of interest to developers only." OFF) IF(ENABLE_INTERNAL_DOCS) @@ -902,14 +901,14 @@ IF(ENABLE_DOXYGEN) ELSE() SET(BUILD_INTERNAL_DOCS NO CACHE STRING "") ENDIF() - + # Option to turn on the TODO list in the doxygen-generated documentation. OPTION(ENABLE_DOXYGEN_TASKS "Turn on test, todo, bug lists in documentation. This is of interest to developers only." OFF) IF(ENABLE_DOXYGEN_TASKS) SET(SHOW_DOXYGEN_TAG_LIST YES CACHE STRING "") - ELSE() + ELSE(ENABLE_DOXYGEN_TASKS) SET(SHOW_DOXYGEN_TODO_LIST NO CACHE STRING "") - ENDIF() + ENDIF(ENABLE_DOXYGEN_TASKS) # Specify whether or not 'dot' was found on the system path. IF(NC_DOT) @@ -918,9 +917,10 @@ IF(ENABLE_DOXYGEN) SET(HAVE_DOT NO CACHE_STRING "") ENDIF(NC_DOT) - ELSE(NC_DOXYGEN) + ELSE(DOXYGEN_FOUND) MESSAGE(STATUS "Unable to build internal documentation. Doxygen does not appear to be on your executable path. Install doxygen and configure the project again.") - ENDIF(NC_DOXYGEN) + SET(ENABLE_DOXYGEN=OFF) + ENDIF(DOXYGEN_FOUND) ENDIF() # By default, MSVC has a stack size of 1000000. diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md index c49e793b8..30dbe44f7 100644 --- a/RELEASE_NOTES.md +++ b/RELEASE_NOTES.md @@ -9,6 +9,8 @@ This file contains a high-level description of this package's evolution. Release ### 4.3.3-rc1 Released TBD +* Removed redundant variable `BUILD_DOCS` from the CMake configuration file. See the issue at github: [BUILD\_DOCS, ENABLE\_DOXYGEN](https://github.com/Unidata/netcdf-c/issues/59). + * Added missing documentation templates to `man4/Makefile.am`, to correct an issue when trying to build the local `Doxygen`-generated documentation. This issue was reported by Nico Schlömer and may be viewed on github. [Releases miss Doxygen files #56](https://github.com/Unidata/netcdf-c/issues/56) * When the NC_MPIPOSIX flag is given for parallel I/O access and the HDF5 library does not have the MPI-POSIX VFD configured in, the NC_MPIPOSIX flag is transparently aliased to the NC_MPIIO flag within the netCDF-4 library. diff --git a/man4/CMakeLists.txt b/man4/CMakeLists.txt index 205ac99bb..460ac4a47 100644 --- a/man4/CMakeLists.txt +++ b/man4/CMakeLists.txt @@ -6,63 +6,64 @@ INCLUDE_DIRECTORIES(".") ##### # Build doxygen documentation, if need be. ##### -IF(BUILD_DOCS) - FIND_PACKAGE(Doxygen) - IF(DOXYGEN_FOUND) - FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.html ${CMAKE_CURRENT_SOURCE_DIR}/images ${CMAKE_CURRENT_SOURCE_DIR}/*.doc ${CMAKE_CURRENT_SOURCE_DIR}/*.xml ${CMAKE_CURRENT_SOURCE_DIR}/*.m4 ${CMAKE_CURRENT_SOURCE_DIR}/*.texi) - FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/) - # Copy the image files used by markdown documentation - # manually. - FILE(GLOB IMG_FILES ${CMAKE_CURRENT_BINARY_DIR}/images/*.jpg ${CMAKE_CURRENT_BINARY_DIR}/images/*.png) - - # Set abs_top_srcdir to work with the autotools - # doxyfile template. - SET(abs_top_srcdir ${CMAKE_SOURCE_DIR}) - SET(abs_builddir ${CMAKE_CURRENT_BINARY_DIR}) - # Create general and guide doxyfiles. - CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in - ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) - CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.guide.in - ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.guide @ONLY) - CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.tutorial.in - ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.tutorial @ONLY) +IF(ENABLE_DOXYGEN) + # The following is redundant but does not hurt anything. - # We need to loop through twice. First to generate tags. - ADD_CUSTOM_TARGET(all_doc_tags ALL - ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating API Tags" VERBATIM - ) - ADD_CUSTOM_TARGET(all_doc_tags_guide ALL - ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.guide - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating Guide Tags" VERBATIM - ) - ADD_CUSTOM_TARGET(all_doc_tags_tutorial ALL - ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.tutorial - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating Tutorial Tags" VERBATIM - ) + FILE(GLOB COPY_FILES ${CMAKE_CURRENT_SOURCE_DIR}/*.html ${CMAKE_CURRENT_SOURCE_DIR}/images ${CMAKE_CURRENT_SOURCE_DIR}/*.doc ${CMAKE_CURRENT_SOURCE_DIR}/*.xml ${CMAKE_CURRENT_SOURCE_DIR}/*.m4 ${CMAKE_CURRENT_SOURCE_DIR}/*.texi) + FILE(COPY ${COPY_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/) + + # Copy the image files used by markdown documentation + # manually. + FILE(GLOB IMG_FILES ${CMAKE_CURRENT_BINARY_DIR}/images/*.jpg ${CMAKE_CURRENT_BINARY_DIR}/images/*.png) + + # Set abs_top_srcdir to work with the autotools + # doxyfile template. + SET(abs_top_srcdir ${CMAKE_SOURCE_DIR}) + SET(abs_builddir ${CMAKE_CURRENT_BINARY_DIR}) + # Create general and guide doxyfiles. + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.in + ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile @ONLY) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.guide.in + ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.guide @ONLY) + CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/Doxyfile.tutorial.in + ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.tutorial @ONLY) + + # We need to loop through twice. First to generate tags. + ADD_CUSTOM_TARGET(all_doc_tags ALL + ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating API Tags" VERBATIM + ) + ADD_CUSTOM_TARGET(all_doc_tags_guide ALL + ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.guide + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating Guide Tags" VERBATIM + ) + ADD_CUSTOM_TARGET(all_doc_tags_tutorial ALL + ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.tutorial + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating Tutorial Tags" VERBATIM + ) + + # Second, generate documentation that uses the tags. + ADD_CUSTOM_TARGET(doc_all ALL + ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating API Documentation" VERBATIM + ) + ADD_CUSTOM_TARGET(doc_guide ALL + ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.guide + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating NetCDF Users Guide" VERBATIM + ) + ADD_CUSTOM_TARGET(doc_tutorial ALL + ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.tutorial + WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} + COMMENT "Generating Tutorial Tags" VERBATIM + ) - # Second, generate documentation that uses the tags. - ADD_CUSTOM_TARGET(doc_all ALL - ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating API Documentation" VERBATIM - ) - ADD_CUSTOM_TARGET(doc_guide ALL - ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.guide - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating NetCDF Users Guide" VERBATIM - ) - ADD_CUSTOM_TARGET(doc_tutorial ALL - ${DOXYGEN_EXECUTABLE} ${CMAKE_CURRENT_BINARY_DIR}/Doxyfile.tutorial - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMENT "Generating Tutorial Tags" VERBATIM - ) - - FILE(COPY ${IMG_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/html) - ENDIF() + FILE(COPY ${IMG_FILES} DESTINATION ${CMAKE_CURRENT_BINARY_DIR}/html) + ENDIF() SET(CUR_EXTRA_DIST ${CUR_EXTRA_DIST} CMakeLists.txt Makefile.am netcdf.m4 DoxygenLayout.xml Doxyfile.in Doxyfile.guide.in footer.html mainpage.dox tutorial.dox install.dox dispatch.dox guide.dox types.dox notes.dox cdl.dox architecture.dox internal.dox install-fortran.dox Doxyfile.in.cmake windows-binaries.md building-with-cmake.md)