aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDrew DeVault <sir@cmpwn.com>2015-08-18 07:05:45 -0400
committerDrew DeVault <sir@cmpwn.com>2015-08-18 07:06:07 -0400
commita246e9b4c7d280a69bfc525c03246ddfd75f54fd (patch)
tree459c35dee3c1f56848c679ba4623071cc0c863c1
parent2f6dd0687bac748f414e5deb090f38d755f66d29 (diff)
Find a2x through CMake
Fixes #63
-rw-r--r--CMake/FindA2X.cmake75
-rw-r--r--CMakeLists.txt5
2 files changed, 78 insertions, 2 deletions
diff --git a/CMake/FindA2X.cmake b/CMake/FindA2X.cmake
new file mode 100644
index 00000000..b38f5086
--- /dev/null
+++ b/CMake/FindA2X.cmake
@@ -0,0 +1,75 @@
+#
+# (c)2015 KiCad Developers
+# (c)2015 Brian Sidebotham <brian.sidebotham@gmail.com>
+#
+# CMake module to find a2x (part of the asciidoc toolchain).
+#
+# Variables generated:
+#
+# A2X_FOUND true when A2X_COMMAND is valid
+# A2X_COMMAND The command to run a2x (may be a list including an interpreter)
+# A2X_VERSION The a2x version that has been found
+#
+
+# Have a go at finding a a2x executable
+find_program( A2X_PROGRAM a2x )
+
+# Found something, attempt to try and use it...
+if( A2X_PROGRAM )
+ execute_process(
+ COMMAND ${A2X_PROGRAM} --version
+ OUTPUT_VARIABLE _OUT
+ ERROR_VARIABLE _ERR
+ RESULT_VARIABLE _RES
+ OUTPUT_STRIP_TRAILING_WHITESPACE )
+
+ # If it worked, set the A2X_COMMAND
+ if( _RES MATCHES 0 )
+ set( A2X_COMMAND "${A2X_PROGRAM}" )
+ endif()
+endif()
+
+# If nothing could be found, test to see if we can just find the script file,
+# that we'll then run with the python interpreter
+if( NOT A2X_COMMAND )
+ find_file( A2X_SCRIPT a2x.py )
+
+ if( A2X_SCRIPT )
+ # Find the python interpreter quietly
+ if( NOT PYTHONINTERP_FOUND )
+ find_package( PYTHONINTERP QUIET )
+ endif()
+
+ if( NOT PYTHONINTERP_FOUND )
+ # Python's not available so can't find a2x...
+ set( A2X_COMMAND "" )
+ else()
+ # Build the python based command
+ set( A2X_COMMAND "${PYTHON_EXECUTABLE}" "${A2X_SCRIPT}" )
+
+ execute_process(
+ COMMAND ${A2X_COMMAND} --version
+ OUTPUT_VARIABLE _OUT
+ ERROR_VARIABLE _ERR
+ RESULT_VARIABLE _RES
+ OUTPUT_STRIP_TRAILING_WHITESPACE )
+
+ # If it still can't be run, then give up
+ if( NOT _RES MATCHES 0 )
+ set( A2X_COMMAND "" )
+ endif()
+ endif()
+ endif()
+endif()
+
+# If we've found a command that works, check the version
+if( A2X_COMMAND )
+ string(REGEX REPLACE ".*a2x[^0-9.]*\([0-9.]+\).*" "\\1" A2X_VERSION "${_OUT}")
+endif()
+
+# Generate the *_FOUND as necessary, etc.
+include( FindPackageHandleStandardArgs )
+find_package_handle_standard_args(
+ A2X
+ REQUIRED_VARS A2X_COMMAND
+ VERSION_VAR A2X_VERSION )
diff --git a/CMakeLists.txt b/CMakeLists.txt
index b4bdf756..ba2f8be3 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -8,6 +8,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${PROJECT_SOURCE_DIR}/CMake)
find_package(XKBCommon REQUIRED)
find_package(WLC REQUIRED)
+find_package(A2X REQUIRED)
if (UNIX)
find_library(DL_LIBRARY dl)
@@ -45,13 +46,13 @@ INSTALL(
)
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/sway.1
- COMMAND a2x --no-xmllint --doctype manpage --format manpage
+ COMMAND ${A2X_COMMAND} --no-xmllint --doctype manpage --format manpage
-D ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${CMAKE_CURRENT_SOURCE_DIR}/sway.1.txt
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/sway.1.txt
)
ADD_CUSTOM_COMMAND(OUTPUT ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/sway.5
- COMMAND a2x --no-xmllint --doctype manpage --format manpage
+ COMMAND ${A2X_COMMAND} --no-xmllint --doctype manpage --format manpage
-D ${CMAKE_RUNTIME_OUTPUT_DIRECTORY} ${CMAKE_CURRENT_SOURCE_DIR}/sway.5.txt
DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/sway.5.txt
)