-# Find ggo (gengetopt) files (http://www.gnu.org/software/gengetopt/)
-FILE(GLOB ALL_GGO_FILES *.ggo)
-#MESSAGE(${ALL_GGO_FILES})
-
-FOREACH(GGO_FILE ${ALL_GGO_FILES})
- # MESSAGE(input=${GGO_FILE})
- STRING(REGEX REPLACE "(.*).ggo"
- "\\1" GGO_BASEFILENAME
- "${GGO_FILE}")
- #GET_FILENAME_COMPONENT(GGO_BASEFILENAME ${GGO_FILE} NAME_WE)
- GET_FILENAME_COMPONENT(GGO_NAME ${GGO_BASEFILENAME} NAME)
- # MESSAGE( base= ${GGO_BASEFILENAME})
- # MESSAGE( name= ${GGO_NAME})
- SET(GGO_H ${GGO_BASEFILENAME}_ggo.h)
- #MESSAGE(${GGO_H})
- SET(GGO_C ${GGO_BASEFILENAME}_ggo.c)
- #MESSAGE(${GGO_C})
- SET(GGO_OUTPUT ${GGO_H} ${GGO_C})
- ADD_CUSTOM_COMMAND(OUTPUT ${GGO_OUTPUT}
- COMMAND ${CLITK_GENGETOPT}/gengetopt
- ARGS < ${GGO_FILE} --arg-struct-name=args_info_${GGO_NAME} --file-name=${GGO_BASEFILENAME}_ggo -u --conf-parser --include-getopt
- DEPENDS ${GGO_FILE}
- )
- ENDFOREACH(GGO_FILE)
+MACRO (DD in)
+ MESSAGE(${in}=${${in}})
+ENDMACRO(DD)
+#=========================================================
+# Process ggo (gengetopt) files (http://www.gnu.org/software/gengetopt/)
+MACRO (WRAP_GGO GGO_SRCS)
+ FOREACH(GGO_FILE ${ARGN})
+ GET_FILENAME_COMPONENT(GGO_BASEFILENAME ${GGO_FILE} NAME_WE)
+ GET_FILENAME_COMPONENT(GGO_FILE_ABS ${GGO_FILE} ABSOLUTE)
+ SET(GGO_H ${GGO_BASEFILENAME}_ggo.h)
+ SET(GGO_C ${GGO_BASEFILENAME}_ggo.c)
+ SET(GGO_OUTPUT ${GGO_H} ${GGO_C})
+ ADD_CUSTOM_COMMAND(OUTPUT ${GGO_OUTPUT}
+ COMMAND ${CLITK_GENGETOPT}/gengetopt
+ ARGS < ${GGO_FILE_ABS}
+ --output-dir=${CMAKE_CURRENT_BINARY_DIR}
+ --arg-struct-name=args_info_${GGO_BASEFILENAME}
+ --func-name=cmdline_parser_${GGO_BASEFILENAME}
+ --file-name=${GGO_BASEFILENAME}_ggo
+ --unamed-opts
+ --conf-parser
+ --include-getopt
+ DEPENDS ${GGO_FILE}
+ )
+ SET(${GGO_SRCS} ${${GGO_SRCS}} ${CMAKE_CURRENT_BINARY_DIR}/${GGO_BASEFILENAME}_ggo.c)
+ INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR}) #For _ggo.h includes
+ ENDFOREACH(GGO_FILE)
+ SET_SOURCE_FILES_PROPERTIES(${${GGO_SRCS}} PROPERTIES GENERATED TRUE)
+ENDMACRO (WRAP_GGO)