]> Creatis software - clitk.git/blob - cmake/FindGengetopt.cmake
Added FindGengetopt.cmake which compiles gengetopt if not installed.
[clitk.git] / cmake / FindGengetopt.cmake
1
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")
10
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}
19                        COMMAND gengetopt
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
25                               --unamed-opts
26                               --conf-parser
27                               --include-getopt
28                        DEPENDS ${GGO_FILE_ABS}
29                       )
30     SET(${GGO_SRCS} ${${GGO_SRCS}} ${GGO_OUTPUT})
31     INCLUDE_DIRECTORIES(${CMAKE_CURRENT_BINARY_DIR})
32   ENDFOREACH(GGO_FILE)
33   SET_SOURCE_FILES_PROPERTIES(${${GGO_SRCS}} PROPERTIES GENERATED TRUE)
34 ENDMACRO (WRAP_GGO)