Hi,

I updated the patch so that it now adds a dependency on the moc generated file 
and does not add the moc files in the add_library/add_executable calls. Works 
fine with a clean build dir now, too.

Please CC me as I'm not subscribed to this list.

-- 
________________________________________________________
Matthias Kretz (Germany)                            <><
http://Vir.homelinux.org/
[EMAIL PROTECTED], [EMAIL PROTECTED],
[EMAIL PROTECTED]
Index: KDE4Macros.cmake
===================================================================
--- KDE4Macros.cmake	(revision 671744)
+++ KDE4Macros.cmake	(working copy)
@@ -173,11 +173,18 @@
          file(READ ${_abs_FILE} _contents)
          get_filename_component(_abs_PATH ${_abs_FILE} PATH)
 
-         string(REGEX MATCHALL "#include +[^ ]+\\.moc[\">]" _match "${_contents}")
+         string(REGEX MATCHALL "#include +([\"<]moc_[^ ]+\\.cpp|[^ ]+\\.moc)[\">]" _match "${_contents}")
          if (_match)
             foreach (_current_MOC_INC ${_match})
                string(REGEX MATCH "[^ <\"]+\\.moc" _current_MOC "${_current_MOC_INC}")
-               get_filename_component(_basename ${_current_MOC} NAME_WE)
+               if(_current_MOC)
+                  get_filename_component(_basename ${_current_MOC} NAME_WE)
+               else(_current_MOC)
+                  string(REGEX MATCH "moc_[^ <\"]+\\.cpp" _current_MOC "${_current_MOC_INC}")
+                  get_filename_component(_basename ${_current_MOC} NAME_WE)
+                  string(REPLACE "moc_" "" _basename "${_basename}")
+               endif(_current_MOC)
+
                set(_header ${_abs_PATH}/${_basename}.h)
                set(_moc    ${CMAKE_CURRENT_BINARY_DIR}/${_current_MOC})
 
@@ -196,26 +203,12 @@
             endforeach (_current_MOC_INC)
          endif (_match)
 
-         set_source_files_properties(${_abs_FILE} PROPERTIES AUTOMOC_FILES "${_moc_FILES_PROPERTY}")
+         set_source_files_properties(${_abs_FILE} PROPERTIES OBJECT_DEPENDS "${_moc_FILES_PROPERTY}")
       endif (EXISTS ${_abs_FILE} AND NOT _skip)
    endforeach (_current_FILE)
 endmacro (KDE4_AUTOMOC)
 
 
-macro(KDE4_GET_AUTOMOC_FILES _list)
-   set(${_list})
-   foreach (_current_FILE ${ARGN})
-      set(_automoc_FILES_PROPERTY)
-      get_filename_component(_abs_FILE ${_current_FILE} ABSOLUTE)
-      get_source_file_property(_automoc_FILES_PROPERTY ${_abs_FILE} AUTOMOC_FILES)
-      if (_automoc_FILES_PROPERTY)
-         foreach (_current_MOC_FILE ${_automoc_FILES_PROPERTY})
-            list(APPEND ${_list} ${_current_MOC_FILE})
-         endforeach (_current_MOC_FILE)
-      endif (_automoc_FILES_PROPERTY)
-   endforeach (_current_FILE)
-endmacro(KDE4_GET_AUTOMOC_FILES)
-
 macro(KDE4_CREATE_PO_FILES)
    set(_list_gmo)
    file(GLOB _po_files *.po)
@@ -631,13 +624,11 @@
       set(_first_SRC ${_with_PREFIX})
    endif (${_with_PREFIX} STREQUAL "WITH_PREFIX")
 
-   kde4_get_automoc_files(_automoc_FILES ${_first_SRC} ${ARGN})
-
    if (KDE4_ENABLE_FINAL)
       kde4_create_final_files(${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_final_cpp.cpp _separate_files ${_first_SRC} ${ARGN})
-      add_library(${_target_NAME} MODULE  ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_final_cpp.cpp ${_separate_files} ${_automoc_FILES})
+      add_library(${_target_NAME} MODULE  ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_final_cpp.cpp ${_separate_files})
    else (KDE4_ENABLE_FINAL)
-      add_library(${_target_NAME} MODULE ${_first_SRC} ${ARGN} ${_automoc_FILES})
+      add_library(${_target_NAME} MODULE ${_first_SRC} ${ARGN})
    endif (KDE4_ENABLE_FINAL)
 
    if (_first_SRC)
@@ -717,14 +708,13 @@
 #      KDE4_ADD_EXECUTABLE(${_target_NAME} ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_dummy.cpp ${ARGN} )
 #   else (WIN32)
       # under UNIX, create a shared library and a small executable, which links to this library
-   kde4_get_automoc_files(_automoc_FILES ${_SRCS})
 
    if (KDE4_ENABLE_FINAL)
       kde4_create_final_files(${CMAKE_CURRENT_BINARY_DIR}/kdeinit_${_target_NAME}_final_cpp.cpp _separate_files ${_SRCS})
-      add_library(kdeinit_${_target_NAME} SHARED  ${CMAKE_CURRENT_BINARY_DIR}/kdeinit_${_target_NAME}_final_cpp.cpp ${_separate_files} ${_automoc_FILES})
+      add_library(kdeinit_${_target_NAME} SHARED  ${CMAKE_CURRENT_BINARY_DIR}/kdeinit_${_target_NAME}_final_cpp.cpp ${_separate_files})
 
    else (KDE4_ENABLE_FINAL)
-      add_library(kdeinit_${_target_NAME} SHARED ${_SRCS} ${_automoc_FILES})
+      add_library(kdeinit_${_target_NAME} SHARED ${_SRCS})
    endif (KDE4_ENABLE_FINAL)
 
    kde4_handle_rpath_for_library(kdeinit_${_target_NAME})
@@ -758,10 +748,8 @@
       set(_add_executable_param EXCLUDE_FROM_ALL)
    endif (NOT KDE4_BUILD_TESTS)
 
-   kde4_get_automoc_files(_automoc_FILES ${ARGN})
+   add_executable(${_target_NAME} ${_add_executable_param} ${ARGN})
 
-   add_executable(${_target_NAME} ${_add_executable_param} ${ARGN} ${_automoc_FILES})
-
    set_target_properties(${_target_NAME} PROPERTIES
                          EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR}
                          DEFINITIONS -DKDESRCDIR=\\"${CMAKE_CURRENT_SOURCE_DIR}\\"
@@ -802,13 +790,11 @@
       set(_type "RUN_UNINSTALLED")
    endif (_uninst)
 
-   kde4_get_automoc_files(_automoc_FILES ${_SRCS})
-
    if (KDE4_ENABLE_FINAL)
       kde4_create_final_files(${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_final_cpp.cpp _separate_files ${_SRCS})
-      add_executable(${_target_NAME} ${_add_executable_param} ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_final_cpp.cpp ${_separate_files} ${_automoc_FILES})
+      add_executable(${_target_NAME} ${_add_executable_param} ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_final_cpp.cpp ${_separate_files})
    else (KDE4_ENABLE_FINAL)
-      add_executable(${_target_NAME} ${_add_executable_param} ${_SRCS} ${_automoc_FILES})
+      add_executable(${_target_NAME} ${_add_executable_param} ${_SRCS})
    endif (KDE4_ENABLE_FINAL)
 
    kde4_handle_rpath_for_executable(${_target_NAME} ${_type})
@@ -839,13 +825,11 @@
       set(_add_lib_param MODULE)
    endif (${_lib_TYPE} STREQUAL "MODULE")
 
-   kde4_get_automoc_files(_automoc_FILES ${_first_SRC} ${ARGN})
-
    if (KDE4_ENABLE_FINAL)
       kde4_create_final_files(${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_final_cpp.cpp _separate_files ${_first_SRC} ${ARGN})
-      add_library(${_target_NAME} ${_add_lib_param}  ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_final_cpp.cpp ${_separate_files} ${_automoc_FILES})
+      add_library(${_target_NAME} ${_add_lib_param}  ${CMAKE_CURRENT_BINARY_DIR}/${_target_NAME}_final_cpp.cpp ${_separate_files})
    else (KDE4_ENABLE_FINAL)
-      add_library(${_target_NAME} ${_add_lib_param} ${_first_SRC} ${ARGN} ${_automoc_FILES})
+      add_library(${_target_NAME} ${_add_lib_param} ${_first_SRC} ${ARGN})
    endif (KDE4_ENABLE_FINAL)
 
    kde4_handle_rpath_for_library(${_target_NAME})

Attachment: pgplgYTcbYUD9.pgp
Description: PGP signature

_______________________________________________
Kde-buildsystem mailing list
[email protected]
https://mail.kde.org/mailman/listinfo/kde-buildsystem

Reply via email to