2 # Attempt to find gengetopt. If not found, compile it.
3 FIND_PROGRAM(GENGETOPT gengetopt)
4 IF (GENGETOPT STREQUAL "GENGETOPT-NOTFOUND")
5 ADD_SUBDIRECTORY(${CMAKE_SOURCE_DIR}/cmake/gengetopt)
6 ELSE(GENGETOPT STREQUAL "GENGETOPT-NOTFOUND")
7 ADD_EXECUTABLE(gengetopt IMPORTED)
8 SET_PROPERTY(TARGET gengetopt PROPERTY IMPORTED_LOCATION ${GENGETOPT})
9 ENDIF(GENGETOPT STREQUAL "GENGETOPT-NOTFOUND")
11 MACRO (WRAP_GGO GGO_SRCS)
12 FOREACH(GGO_FILE ${ARGN})
13 GET_FILENAME_COMPONENT(GGO_BASEFILENAME ${GGO_FILE} NAME_WE)
14 GET_FILENAME_COMPONENT(GGO_FILE_ABS ${GGO_FILE} ABSOLUTE)
15 SET(GGO_H ${GGO_BASEFILENAME}_ggo.h)
16 SET(GGO_C ${GGO_BASEFILENAME}_ggo.c)
17 SET(GGO_OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/${GGO_H} ${CMAKE_CURRENT_BINARY_DIR}/${GGO_C})
18 ADD_CUSTOM_COMMAND(OUTPUT ${GGO_OUTPUT}
20 ARGS < ${GGO_FILE_ABS}
21 --output-dir=${CMAKE_CURRENT_BINARY_DIR}
22 --arg-struct-name=args_info_${GGO_BASEFILENAME}
23 --func-name=cmdline_parser_${GGO_BASEFILENAME}
24 --file-name=${GGO_BASEFILENAME}_ggo
28 DEPENDS ${GGO_FILE_ABS}
30 SET(${GGO_SRCS} ${${GGO_SRCS}} ${GGO_OUTPUT})
31 INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
33 SET_SOURCE_FILES_PROPERTIES(${${GGO_SRCS}} PROPERTIES GENERATED TRUE)