diff options
author | Drew DeVault <sir@cmpwn.com> | 2015-08-18 07:05:45 -0400 |
---|---|---|
committer | Drew DeVault <sir@cmpwn.com> | 2015-08-18 07:06:07 -0400 |
commit | a246e9b4c7d280a69bfc525c03246ddfd75f54fd (patch) | |
tree | 459c35dee3c1f56848c679ba4623071cc0c863c1 /CMake | |
parent | 2f6dd0687bac748f414e5deb090f38d755f66d29 (diff) |
Find a2x through CMake
Fixes #63
Diffstat (limited to 'CMake')
-rw-r--r-- | CMake/FindA2X.cmake | 75 |
1 files changed, 75 insertions, 0 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 ) |