add flag back in
[roojspacker] / cmake / FindValadoc.cmake
1 # CMake Valadoc support
2 # Copyright (c) 2016 Evan Nemerson <evan@nemerson.com>
3 #
4 # Permission is hereby granted, free of charge, to any person
5 # obtaining a copy of this software and associated documentation files
6 # (the "Software"), to deal in the Software without restriction,
7 # including without limitation the rights to use, copy, modify, merge,
8 # publish, distribute, sublicense, and/or sell copies of the Software,
9 # and to permit persons to whom the Software is furnished to do so,
10 # subject to the following conditions:
11 #
12 # The above copyright notice and this permission notice shall be
13 # included in all copies or substantial portions of the Software.
14 #
15 # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16 # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17 # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18 # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
19 # BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
20 # ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
21 # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
22 # SOFTWARE.
23
24 find_program(VALADOC_EXECUTABLE
25   NAMES valadoc
26   DOC "Valadoc")
27
28 if(VALADOC_EXECUTABLE)
29   execute_process(COMMAND ${VALADOC_EXECUTABLE} "--version" OUTPUT_VARIABLE VALADOC_VERSION OUTPUT_STRIP_TRAILING_WHITESPACE)
30   string(SUBSTRING "${VALADOC_VERSION}" 8 -1 VALADOC_VERSION)
31 endif()
32
33 include(FindPackageHandleStandardArgs)
34 FIND_PACKAGE_HANDLE_STANDARD_ARGS(Valadoc
35   FOUND_VAR VALADOC_FOUND
36   REQUIRED_VARS VALADOC_EXECUTABLE
37   VERSION_VAR VALADOC_VERSION)
38
39 # valadoc_generate(OUTPUT_DIR
40 #   PACKAGE_NAME name
41 #   [PACKAGE_VERSION version]
42 #   [FLAGS flags…]
43 #   [PACKAGES packages…]
44 #   [DOCLET doclet]
45 #   [ALL])
46 #
47 #   PACKAGE_NAME name
48 #     VAPI name to generate documentation for.
49 #   PACKAGE_VERSION version
50 #     Version number of the package.
51 #   FLAGS …
52 #     List of flags you wish to pass to valadoc.
53 #   PACKAGES
54 #     List of dependencies to pass to valac.
55 #   DOCLET doclet-name
56 #     Name of the doclet to use (default: html)
57 function(valadoc_generate OUTPUT_DIR)
58   set (options)
59   set (oneValueArgs DOCLET PACKAGE_NAME PACKAGE_VERSION)
60   set (multiValueArgs SOURCES PACKAGES FLAGS DEFINITIONS CUSTOM_VAPIS)
61   cmake_parse_arguments(VALADOC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
62   unset (options)
63   unset (oneValueArgs)
64   unset (multiValueArgs)
65
66   if("${VALADOC_DOCLET}" STREQUAL "")
67     list(APPEND VALADOC_FLAGS "--doclet=html")
68   else()
69     list(APPEND VALADOC_FLAGS "--doclet=${VALADOC_DOCLET}")
70   endif()
71
72   if(NOT "${VALADOC_PACKAGE_NAME}" STREQUAL "")
73     list(APPEND VALADOC_FLAGS "--package-name=${VALADOC_PACKAGE_NAME}")
74   endif()
75
76   if(NOT "${VALADOC_PACKAGE_VERSION}" STREQUAL "")
77     list(APPEND VALADOC_FLAGS "--package-version=${VALADOC_PACKAGE_VERSION}")
78   endif()
79
80   foreach(pkg ${VALADOC_PACKAGES})
81     list(APPEND VALADOC_FLAGS "--pkg=${pkg}")
82   endforeach(pkg)
83
84   add_custom_command(
85     OUTPUT "${OUTPUT_DIR}"
86     COMMAND "${VALADOC_EXECUTABLE}"
87     ARGS
88       --force
89       -o "${CMAKE_CURRENT_BINARY_DIR}/${OUTPUT_DIR}"
90       ${VALADOC_FLAGS}
91       ${VALADOC_SOURCES}
92     DEPENDS
93       ${VALADOC_SOURCES}
94     COMMENT "Generating documentation with Valadoc"
95     WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}")
96 endfunction()