X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=CMakeScripts%2FUseGlibMarshal.cmake;h=63d501a5798696bf7b4b97a8a76e58bcf42b85b4;hb=1ac951e4af8bbbab6c47b294817974786fd5c13a;hp=d6e3b2cb3995c42b0cef8693300be0d382bcca9c;hpb=f696d23b6cbdc72b76294864f20fd8a434a07aec;p=inkscape.git diff --git a/CMakeScripts/UseGlibMarshal.cmake b/CMakeScripts/UseGlibMarshal.cmake index d6e3b2cb3..63d501a57 100644 --- a/CMakeScripts/UseGlibMarshal.cmake +++ b/CMakeScripts/UseGlibMarshal.cmake @@ -4,24 +4,33 @@ # # And it defines the following variables: # GLIB_MARSHAL_PREFIX - The name of the files -# GLIB_MARSHAL_LIST - File to Generate from +# GLIB_MARSHAL_FILE - File to Generate from (.list) and to generate to (.h and .cpp) # GLIB_MARSHAL_OUTPUT_HEADER - Result of Generation # GLIB_MARSHAL_OUTPUT_CPP - Result of Generation # GLIB_MARSHAL_OUTPUT_LOCATION - Where we are putting the Output FIND_PROGRAM(GLIB_MARSHAL_EXECUTABLE NAMES glib-genmarshal PATHS /usr/local/bin ) -MACRO(GLIB_MARSHAL GLIB_MARSHAL_PREFIX GLIB_MARSHAL_LIST GLIB_MARSHAL_OUTPUT_LOCATION) +MACRO(GLIB_MARSHAL GLIB_MARSHAL_PREFIX GLIB_MARSHAL_FILE GLIB_MARSHAL_OUTPUT_LOCATION) IF(GLIB_MARSHAL_EXECUTABLE) - SET(GLIB_MARSHAL_OUTPUT_TEMP) - SET(GLIB_MARSHAL_OUTPUT_EXTRA_LINE "#include /"${GLIB_MARSHAL_PREFIX}.h/"" ) + SET(GLIB_MARSHAL_OUTPUT_EXTRA_LINE "#include \"${GLIB_MARSHAL_FILE}.h\" \n" ) + + MESSAGE(STATUS "Generating header and sourcefiles from ${GLIB_MARSHAL_FILE}.list (Glib-Marshal)") + EXECUTE_PROCESS(COMMAND ${GLIB_MARSHAL_EXECUTABLE} --prefix=${GLIB_MARSHAL_PREFIX} --header ${CMAKE_CURRENT_SOURCE_DIR}/${GLIB_MARSHAL_FILE}.list + OUTPUT_VARIABLE GLIB_MARSHAL_OUTPUT_HEADER ) + EXECUTE_PROCESS(COMMAND ${GLIB_MARSHAL_EXECUTABLE} --prefix=${GLIB_MARSHAL_PREFIX} --body ${CMAKE_CURRENT_SOURCE_DIR}/${GLIB_MARSHAL_FILE}.list + OUTPUT_VARIABLE GLIB_MARSHAL_OUTPUT_CPP ) + + # check whether the generated file is the same as the existing one + FILE(READ ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_FILE}.h GLIB_MARSHAL_HEADER_OLD) + IF(NOT GLIB_MARSHAL_HEADER_OLD STREQUAL GLIB_MARSHAL_OUTPUT_HEADER) + MESSAGE(STATUS "${GLIB_MARSHAL_FILE}.h changed; overwriting") + FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_FILE}.h "${GLIB_MARSHAL_OUTPUT_HEADER}") + FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_FILE}.cpp "${GLIB_MARSHAL_OUTPUT_EXTRA_LINE}") + FILE(APPEND ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_FILE}.cpp "${GLIB_MARSHAL_OUTPUT_CPP}") + ELSE() + MESSAGE(STATUS "${GLIB_MARSHAL_FILE}.h unchanged") + ENDIF() + ENDIF() +ENDMACRO() - EXECUTE_PROCESS(COMMAND "${GLIB_MARSHAL_EXECUTABLE} --prefix=${GLIB_MARSHAL_PREFIX} --header ${CMAKE_CURRENT_SOURCE_DIR}/${GLIB_MARSHAL_LIST}" - OUTPUT_VARIABLE "${GLIB_MARSHAL_OUTPUT_HEADER}" ) - EXECUTE_PROCESS(COMMAND "${GLIB_MARSHAL_EXECUTABLE} --prefix=${GLIB_MARSHAL_PREFIX} --body ${CMAKE_CURRENT_SOURCE_DIR}/${GLIB_MARSHAL_LIST}" - OUTPUT_VARIABLE "${GLIB_MARSHAL_OUTPUT_TEMP}" ) - SET(GLIB_MARSHAL_OUTPUT_CPP "${GLIB_MARSHAL_OUTPUT_EXTRA_LINE}${GLIB_MARSHAL_OUTPUT_TEMP}") - FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_PREFIX}.h "${GLIB_MARSHAL_OUTPUT_HEADER}") - FILE(WRITE ${CMAKE_CURRENT_BINARY_DIR}/${GLIB_MARSHAL_PREFIX}.cpp "${GLIB_MARSHAL_OUTPUT_CPP}") - ENDIF(GLIB_MARSHAL_EXECUTABLE) -ENDMACRO(GLIB_MARSHAL)