# CMake implementation of AutoGen # Copyright (C) 2017 Anonymous Maarten set(AUTOGEN_SCRIPT "${CMAKE_MODULE_PATH}/CMakeAutoGenScript.cmake") function(lsf_autogen DIR_REL NAME_WE) set(EXTS ${ARGN}) set(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/${DIR_REL}/${NAME_WE}.def") set(OUTPUTS) foreach(EXT ${EXTS}) list(APPEND OUTPUTS "${NAME_WE}.${EXT}") endforeach() add_autogen_target("${INPUT}" "${CMAKE_CURRENT_BINARY_DIR}/${DIR_REL}" ${OUTPUTS}) endfunction() function(add_autogen_target INPUT OUTPUTDIR) set(OUTPUTFILES "${ARGN}") if (OUTPUTDIR) set(PREFIX "${OUTPUTDIR}/") else() set(PREFIX "") endif() set(ARTIFACTS) foreach(OUTPUTFILE ${OUTPUTFILES}) list(APPEND ARTIFACTS "${PREFIX}${OUTPUTFILE}") endforeach() set(EXTRA_ARGS) if (AUTOGEN_DEBUG) list(APPEND EXTRA_ARGS "-DDEBUG=1") endif() if (OUTPUTDIR) list(APPEND EXTRA_ARGS "-DOUTPUTDIR=${OUTPUTDIR}") endif() add_custom_command( OUTPUT ${ARTIFACTS} COMMAND ${CMAKE_COMMAND} "-DDEFINITION=${INPUT}" ${EXTRA_ARGS} -P "${AUTOGEN_SCRIPT}" MAIN_DEPENDENCY "${INPUT}" DEPENDS "${AUTOGEN_SCRIPT}" COMMENT "CMakeAutoGen: generating ${OUTPUTFILES}" WORKING_DIRECTORY "${CMAKE_BINARY_DIR}" ) endfunction()