You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
55 lines
1.8 KiB
55 lines
1.8 KiB
# Autogen helper function
|
|
function(project_autogen MAIN_TARGET PYTHON_SCRIPT TEMPLATE OUTPUT_BASE OUTPUT_SUFFIX)
|
|
find_package(PythonInterp 3 QUIET)
|
|
|
|
if(${PYTHONINTERP_FOUND})
|
|
else()
|
|
execute_process(
|
|
COMMAND
|
|
python -c "import sys; sys.stdout.write(sys.version)"
|
|
OUTPUT_VARIABLE PYTHON_VERSION)
|
|
|
|
if(NOT PYTHON_VERSION)
|
|
MESSAGE(FATAL_ERROR "Unable to run python, ${PYTHON_SCRIPT} not running")
|
|
return()
|
|
endif()
|
|
|
|
STRING(REGEX MATCH "^3\.*" IS_PYTHON3 ${PYTHON_VERSION})
|
|
|
|
if(NOT IS_PYTHON3)
|
|
MESSAGE(FATAL_ERROR "Unable to find python 3, ${PYTHON_SCRIPT} not running")
|
|
return()
|
|
else()
|
|
SET(PYTHON_EXECUTABLE "python")
|
|
endif()
|
|
endif()
|
|
|
|
execute_process(
|
|
COMMAND
|
|
${PYTHON_EXECUTABLE} -c "import sympy; import sys; sys.stdout.write('ok')"
|
|
OUTPUT_VARIABLE PYTHON_HAS_LIBS)
|
|
|
|
if(NOT PYTHON_HAS_LIBS)
|
|
MESSAGE(FATAL_ERROR "Unable to find sympy and/or numpy, ${PYTHON_SCRIPT} not running")
|
|
return()
|
|
endif()
|
|
|
|
|
|
add_custom_command(
|
|
OUTPUT
|
|
${PROJECT_SOURCE_DIR}/src/autogen/${OUTPUT_BASE}${OUTPUT_SUFFIX}
|
|
COMMAND
|
|
${PYTHON_EXECUTABLE} ${PROJECT_SOURCE_DIR}/src/autogen/${PYTHON_SCRIPT} ${PROJECT_SOURCE_DIR}/src/autogen/
|
|
DEPENDS
|
|
${PROJECT_SOURCE_DIR}/src/autogen/${PYTHON_SCRIPT}
|
|
${PROJECT_SOURCE_DIR}/src/autogen/${TEMPLATE}
|
|
)
|
|
|
|
add_custom_target(
|
|
autogen_${OUTPUT_BASE}
|
|
DEPENDS
|
|
${PROJECT_SOURCE_DIR}/src/autogen/${OUTPUT_BASE}${OUTPUT_SUFFIX}
|
|
)
|
|
|
|
add_dependencies(${MAIN_TARGET} autogen_${OUTPUT_BASE})
|
|
endfunction()
|
|
|