no cmake file needed

Thu, 29 Oct 2020 19:02:32 +0100

author
David Demelier <markand@malikania.fr>
date
Thu, 29 Oct 2020 19:02:32 +0100
changeset 27
7789ed37d13d
parent 26
89a5b4240372
child 28
a8dc1565c470

no cmake file needed

cmake/FindPandoc.cmake file | annotate | diff | comparison | revisions
--- a/cmake/FindPandoc.cmake	Sun Oct 06 11:09:29 2019 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,231 +0,0 @@
-# FindPandoc
-# ----------
-#
-# Find Pandoc executable, this modules defines:
-#
-# Pandoc_EXECUTABLE, where to find pandoc's executable
-# Pandoc_FOUND, if it is found
-# Pandoc_VERSION, the version
-#
-# This module also defines the following macros:
-#
-# pandoc(
-#	SOURCES file1 [file2 ...]
-#	OUTPUT output
-#	[FROM format]
-#	[TO format]
-#	[TARGET target]
-#	[DEPENDS dependency ...]
-#	[ALL]
-#	[TOC]
-#	[STANDALONE]
-#	[MAKE_DIRECTORY]
-#	[TEMPLATE file]
-#	[FILTER filter]
-#	[HEADER header ...]
-#	[FOOTER footer ...]
-#	[BODY body ...]
-#	[VARIABLE var ...]
-#	[METADATA meta ...]
-#	[ARGS argument ...]
-#	[WORKING_DIRECTORY directory]
-# )
-#
-# The sources files are listed in the parameter SOURCES, all files are passed
-# in the same order they are passed to that variable.
-#
-# The OUTPUT file is set with OUTPUT. It is generated only if one of the file
-# has changed.
-#
-# The FROM (-f) and TO (-t) arguments specify respectively the source and
-# destinations formats.
-#
-# If the parameter TARGET is set, then a target named `target` will be added
-# with the OUTPUT file as the dependency but not listed as sources files.
-# But the SOURCES files will be added as the target sources in the IDE.
-#
-# Optional dependencies can be added to the output command (not the target) with
-# the DEPENDS parameter.
-#
-# If ALL is set and TARGET is also set, the target will be added to the ALL_BUILD.
-#
-# If TOC (--toc) is specified, a table of content will be automatically created.
-#
-# If STANDALONE (-s) is set, the compilation will assume that it is standalone
-# and adds the necessary of the output format.
-#
-# Optional MAKE_DIRECTORY can be set to create the output directory before
-# pandoc processes the file (recommended).
-#
-# The TEMPLATE parameter can be used to specify the formate template file.
-#
-# You can set a filter with the parameter FILTER. The filter will be added to
-# the output dependencies so you can safely use CMake's targets.
-#
-# The HEADER (-H), FOOTER (-A) and BODY (-B) are copied verbatim before, just
-# after and after the body respectively. They can be set more than once.
-#
-# You can pass variables (-V) and metadata (-M) to the parameters VARIABLE
-# and METADATA, be sure to pass the same syntax as pandoc.  (e.g VARIABLE foo=1)
-#
-# ARGS is an optional list of additional arguments to pass to pandoc.
-#
-# The parameter WORKING_DIRECTORY can be set to change the directory when pandoc
-# is invoked.
-#
-
-find_program(
-	Pandoc_EXECUTABLE
-	NAMES pandoc
-	DOC "Pandoc executable"
-)
-
-include(FindPackageHandleStandardArgs)
-include(CMakeParseArguments)
-
-# Extract the version
-if (Pandoc_EXECUTABLE)
-	execute_process(
-		COMMAND ${Pandoc_EXECUTABLE} --version
-		OUTPUT_VARIABLE _pandoc_version_tmp
-	)
-
-	if (_pandoc_version_tmp MATCHES "^pandoc[^ ]* ([0-9]+\\.[0-9]+\\.[0-9]+)")
-		set(Pandoc_VERSION "${CMAKE_MATCH_1}")
-	endif ()
-endif ()
-
-find_package_handle_standard_args(
-	Pandoc
-	FOUND_VAR Pandoc_FOUND
-	VERSION_VAR Pandoc_VERSION
-	REQUIRED_VARS Pandoc_EXECUTABLE
-)
-
-if (Pandoc_FOUND)
-	function(pandoc)
-		set(options MAKE_DIRECTORY STANDALONE TOC)
-		set(oneValueArgs FILTER FROM TARGET TEMPLATE TO OUTPUT WORKING_DIRECTORY)
-		set(multiValueArgs ARGS FOOTER HEADER METADATA SOURCES VARIABLE)
-
-		#
-		# The following variables will be set in that scope:
-		#   _pandoc_arguments		- List of all arguments that will passed to pandoc invocation.
-		#   _pandoc_depends		- List of all dependencies attached to the add_custom_command.
-		#   _pandoc_mkdir		- The mkdir command if MAKE_DIRECTORY is set
-		#   _pandoc_output_base		- The base output directory
-		#
-		cmake_parse_arguments(PANDOC "${options}" "${oneValueArgs}" "${multiValueArgs}" ${ARGN})
-
-		#
-		# Output and sources are mandatory
-		#
-		if (NOT PANDOC_OUTPUT)
-			message(FATAL_ERROR "Please define OUTPUT")
-		elseif (NOT PANDOC_SOURCES)
-			message(FATAL_ERROR "Please defines SOURCES")
-		endif ()
-
-		#
-		# Handle the filter with care.
-		#
-		# 1. If it is a target, depend on it and use a generator
-		#    expression to get its full path on the disk.
-		# 2. If it is not a target, just use the user provided path.
-		#
-		if (PANDOC_FILTER)
-			# If it is a target, add a dependency so that it is built
-			if (TARGET ${PANDOC_FILTER})
-				list(APPEND _pandoc_arguments --filter "$<TARGET_FILE:${PANDOC_FILTER}>")
-				list(APPEND _pandoc_depends ${PANDOC_FILTER})
-			else ()
-				list(APPEND _pandoc_arguments --filter ${PANDOC_FILTER})
-			endif ()
-		endif ()
-
-		if (PANDOC_TOC)
-			list(APPEND _pandoc_arguments --toc)
-		endif ()
-		if (PANDOC_STANDALONE)
-			list(APPEND _pandoc_arguments -s)
-		endif ()
-		if (PANDOC_FROM)
-			list(APPEND _pandoc_arguments -f ${PANDOC_FROM})
-		endif ()
-		if (PANDOC_TO)
-			list(APPEND _pandoc_arguments -t ${PANDOC_TO})
-		endif ()
-		if (PANDOC_TEMPLATE)
-			list(APPEND _pandoc_arguments --template ${PANDOC_TEMPLATE})
-			list(APPEND _pandoc_depends ${PANDOC_TEMPLATE})
-		endif ()
-
-		# Header, footers and body
-		foreach (h ${PANDOC_HEADER})
-			list(APPEND _pandoc_arguments -H ${h})
-			list(APPEND _pandoc_depends ${h})
-		endforeach ()
-		foreach (b ${PANDOC_BODY})
-			list(APPEND _pandoc_arguments -B ${b})
-			list(APPEND _pandoc_depends ${b})
-		endforeach ()
-		foreach (f ${PANDOC_FOOTER})
-			list(APPEND _pandoc_arguments -A ${f})
-			list(APPEND _pandoc_depends ${f})
-		endforeach ()
-
-		# Variables and metadata
-		foreach (var ${PANDOC_VARIABLE})
-			list(APPEND _pandoc_arguments -V ${var})
-		endforeach ()
-		foreach (meta ${PANDOC_METADATA})
-			list(APPEND _pandoc_arguments -M ${meta})
-		endforeach ()
-
-		# Optional list of arguments
-		foreach (arg ${PANDOC_ARGS})
-			list(APPEND _pandoc_arguments ${arg})
-		endforeach ()
-
-		# Output and sources
-		list(APPEND _pandoc_arguments -o ${PANDOC_OUTPUT})
-
-		#
-		# The following variables are set within the loop:
-		#
-		#   _pandoc_input		- The absolute path to the input file.
-		#   _pandoc_output_base		- The base output directory.
-		#
-		foreach (s ${PANDOC_SOURCES})
-			get_filename_component(_pandoc_input ${s} ABSOLUTE)
-			get_filename_component(_pandoc_output_base ${PANDOC_OUTPUT} DIRECTORY)
-			list(APPEND _pandoc_depends ${_pandoc_input})
-			list(APPEND _pandoc_arguments ${_pandoc_input})
-		endforeach ()
-
-		# Create the output directory if requested
-		if (PANDOC_MAKE_DIRECTORY)
-			set(_pandoc_mkdir ${CMAKE_COMMAND} -E make_directory ${_pandoc_output_base})
-		endif ()
-
-		add_custom_command(
-			OUTPUT ${PANDOC_OUTPUT}
-			COMMAND	${_pandoc_mkdir}
-			COMMAND	${Pandoc_EXECUTABLE} ${_pandoc_arguments}
-			DEPENDS ${_pandoc_depends} ${PANDOC_DEPENDS}
-			WORKING_DIRECTORY ${PANDOC_WORKING_DIRECTORY}
-			VERBATIM
-		)
-
-		if (PANDOC_TARGET)
-			add_custom_target(
-				${PANDOC_TARGET} ${PANDOC_ALL}
-				SOURCES ${_pandoc_depends}
-				DEPENDS ${PANDOC_OUTPUT}
-				WORKING_DIRECTORY ${PANDOC_WORKING_DIRECTORY}
-			)
-		endif ()
-	endfunction()
-endif ()
-
-mark_as_advanced(Pandoc_EXECUTABLE)

mercurial