Code

5843d00afc51985d12f8b5052f52f2d7cad9da75
[inkscape.git] / CMakeScripts / UseGlibMarshal.cmake
1 # - This is a module to Generate files using Glib-Marshal
2 # Both the header and source files (.h and .cpp)
3 # Copyright 2008 - Joshua L. Blocher
4 #
5 # And it defines the following variables:
6 #  GLIB_MARSHAL_PREFIX - The name of the files
7 #  GLIB_MARSHAL_LIST - File to Generate from
8 #  GLIB_MARSHAL_OUTPUT_HEADER - Result of Generation
9 #  GLIB_MARSHAL_OUTPUT_CPP - Result of Generation
10 #  GLIB_MARSHAL_OUTPUT_LOCATION - Where we are putting the Output
12 FIND_PROGRAM(GLIB_MARSHAL_EXECUTABLE NAMES glib-genmarshal PATHS /usr/local/bin )
14 MACRO(GLIB_MARSHAL GLIB_MARSHAL_PREFIX GLIB_MARSHAL_LIST GLIB_MARSHAL_OUTPUT_LOCATION)
15     IF(GLIB_MARSHAL_EXECUTABLE)
16     SET(GLIB_MARSHAL_OUTPUT_TEMP)
17     SET(GLIB_MARSHAL_OUTPUT_EXTRA_LINE "#include \"${GLIB_MARSHAL_PREFIX}.h\" \n" )
19         EXECUTE_PROCESS(COMMAND "${GLIB_MARSHAL_EXECUTABLE} --prefix=${GLIB_MARSHAL_PREFIX} --header ${CMAKE_CURRENT_SOURCE_DIR}/${GLIB_MARSHAL_LIST}"
20                                 RESULT_VARIABLE GLIB_MARSHAL_OUTPUT_HEADER )
21         EXECUTE_PROCESS(COMMAND "${GLIB_MARSHAL_EXECUTABLE} --prefix=${GLIB_MARSHAL_PREFIX} --body ${CMAKE_CURRENT_SOURCE_DIR}/${GLIB_MARSHAL_LIST}"
22                                 RESULT_VARIABLE GLIB_MARSHAL_OUTPUT_TEMP )
23                         SET(GLIB_MARSHAL_OUTPUT_CPP "${GLIB_MARSHAL_OUTPUT_EXTRA_LINE}${GLIB_MARSHAL_OUTPUT_TEMP}")
24                         FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_PREFIX}.h "${GLIB_MARSHAL_OUTPUT_HEADER}")
25                         FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_PREFIX}.cpp "${GLIB_MARSHAL_OUTPUT_CPP}")
26     ENDIF(GLIB_MARSHAL_EXECUTABLE)
27 ENDMACRO(GLIB_MARSHAL)