CMakeAutoGen.cmake 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. # CMake implementation of AutoGen
  2. # Copyright (C) 2017 Anonymous Maarten <[email protected]>
  3. set(AUTOGEN_SCRIPT "${CMAKE_MODULE_PATH}/CMakeAutoGenScript.cmake")
  4. function(lsf_autogen DIR_REL NAME_WE)
  5. set(EXTS ${ARGN})
  6. set(INPUT "${CMAKE_CURRENT_SOURCE_DIR}/${DIR_REL}/${NAME_WE}.def")
  7. set(OUTPUTS)
  8. foreach(EXT ${EXTS})
  9. list(APPEND OUTPUTS "${NAME_WE}.${EXT}")
  10. endforeach()
  11. add_autogen_target("${INPUT}" "${CMAKE_CURRENT_BINARY_DIR}/${DIR_REL}" ${OUTPUTS})
  12. endfunction()
  13. function(add_autogen_target INPUT OUTPUTDIR)
  14. set(OUTPUTFILES "${ARGN}")
  15. if (OUTPUTDIR)
  16. set(PREFIX "${OUTPUTDIR}/")
  17. else()
  18. set(PREFIX "")
  19. endif()
  20. set(ARTIFACTS)
  21. foreach(OUTPUTFILE ${OUTPUTFILES})
  22. list(APPEND ARTIFACTS "${PREFIX}${OUTPUTFILE}")
  23. endforeach()
  24. set(EXTRA_ARGS)
  25. if (AUTOGEN_DEBUG)
  26. list(APPEND EXTRA_ARGS "-DDEBUG=1")
  27. endif()
  28. if (OUTPUTDIR)
  29. list(APPEND EXTRA_ARGS "-DOUTPUTDIR=${OUTPUTDIR}")
  30. endif()
  31. add_custom_command(
  32. OUTPUT ${ARTIFACTS}
  33. COMMAND ${CMAKE_COMMAND} "-DDEFINITION=${INPUT}" ${EXTRA_ARGS} -P "${AUTOGEN_SCRIPT}"
  34. MAIN_DEPENDENCY "${INPUT}"
  35. DEPENDS "${AUTOGEN_SCRIPT}"
  36. COMMENT "CMakeAutoGen: generating ${OUTPUTFILES}"
  37. WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
  38. )
  39. endfunction()