OSDN Git Service

replace the common resources handling with CMake's OUTPUT property
authorIvailo Monev <xakepa10@laimg.moc>
Tue, 11 Oct 2016 23:16:20 +0000 (23:16 +0000)
committerIvailo Monev <xakepa10@laimg.moc>
Tue, 11 Oct 2016 23:16:20 +0000 (23:16 +0000)
it automatically sets the GENERATED property for the output file

Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
cmake/modules/KatieBuildMacros.cmake
cmake/modules/KatieMacros.cmake
src/plugins/CMakeLists.txt
src/plugins/bearer/connman/connman.cmake
src/plugins/bearer/generic/generic.cmake
src/plugins/bearer/networkmanager/networkmanager.cmake

index 3a2838d..4022dca 100644 (file)
@@ -126,38 +126,30 @@ function(KATIE_SETUP_TARGET FORTARGET)
         get_filename_component(rscext ${resource} EXT)
         get_filename_component(rscname ${resource} NAME_WE)
         get_filename_component(rscpath ${resource} PATH)
-        get_source_file_property(skip ${resource} SKIP_RESOURCE)
         string(REPLACE "${CMAKE_SOURCE_DIR}" "${CMAKE_BINARY_DIR}" rscpath "${rscpath}")
         if("${rscext}" STREQUAL ".ui")
             set(rscout "${rscpath}/ui_${rscname}.h")
             set(targetresources ${targetresources} ${rscout})
-            if(NOT skip)
-                make_directory(${rscpath})
-                add_custom_command(
-                    OUTPUT "${rscout}"
-                    COMMAND "${KATIE_UIC}" "${resource}" -o "${rscout}"
-                )
-            endif()
+            make_directory(${rscpath})
+            add_custom_command(
+                OUTPUT "${rscout}"
+                COMMAND "${KATIE_UIC}" "${resource}" -o "${rscout}"
+                OUTPUT "${rscout}"
+            )
         elseif("${rscext}" STREQUAL ".qrc")
             set(rscout "${rscpath}/qrc_${rscname}.cpp")
             set(targetresources ${targetresources} ${rscout})
-            if(NOT skip)
-                make_directory(${rscpath})
-                add_custom_command(
-                    OUTPUT "${rscout}"
-                    COMMAND "${KATIE_RCC}" "${resource}" -o "${rscout}" -name "${rscname}"
-                )
-            endif()
+            make_directory(${rscpath})
+            add_custom_command(
+                OUTPUT "${rscout}"
+                COMMAND "${KATIE_RCC}" "${resource}" -o "${rscout}" -name "${rscname}"
+                OUTPUT "${rscout}"
+            )
         elseif("${rscext}" MATCHES "(.h|.cpp|.mm)")
             file(READ "${resource}" rsccontent)
-            if(NOT "${rsccontent}" MATCHES "(Q_OBJECT|Q_OBJECT_FAKE|Q_GADGET)")
-                set(skip TRUE)
-            else()
+            if("${rsccontent}" MATCHES "(Q_OBJECT|Q_OBJECT_FAKE|Q_GADGET)")
                 set(rscout "${rscpath}/moc_${rscname}${rscext}")
                 set(targetresources ${targetresources} ${rscout})
-            endif()
-
-            if(NOT skip)
                 get_directory_property(dirdefs COMPILE_DEFINITIONS)
                 get_directory_property(dirincs INCLUDE_DIRECTORIES)
                 set(mocargs)
@@ -172,9 +164,8 @@ function(KATIE_SETUP_TARGET FORTARGET)
                 add_custom_command(
                     OUTPUT "${rscout}"
                     COMMAND "${KATIE_MOC}" -nw "${resource}" -o "${rscout}" ${mocargs}
+                    OUTPUT "${rscout}"
                 )
-                # common sources can cause multiple rules on the same file
-                set_source_files_properties(${resource} PROPERTIES SKIP_RESOURCE TRUE)
             endif()
         endif()
     endforeach()
index f4776da..ad7b995 100644 (file)
@@ -16,6 +16,7 @@ macro(KATIE_RESOURCES RESOURCES)
                 add_custom_command(
                     OUTPUT ${rscout}
                     COMMAND ${KATIE_UIC} "${resource}" -o "${rscout}"
+                    OUTPUT "${rscout}"
                     MAIN_DEPENDENCY ${resource}
                 )
             elseif("${rscext}" STREQUAL ".qrc")
@@ -24,6 +25,7 @@ macro(KATIE_RESOURCES RESOURCES)
                 add_custom_command(
                     OUTPUT ${rscout}
                     COMMAND ${KATIE_RCC} "${resource}" -o "${rscout}" -name "${rscname}"
+                    OUTPUT "${rscout}"
                     MAIN_DEPENDENCY ${resource}
                 )
                 set_property(SOURCE ${resource} APPEND PROPERTY OBJECT_DEPENDS ${rscout})
@@ -46,10 +48,9 @@ macro(KATIE_RESOURCES RESOURCES)
                     add_custom_command(
                         OUTPUT ${rscout}
                         COMMAND ${KATIE_MOC} -nw "${resource}" -o "${rscout}" ${mocargs}
+                        OUTPUT "${rscout}"
                     )
                     set_property(SOURCE ${resource} APPEND PROPERTY OBJECT_DEPENDS ${rscout})
-                    # XXX: this can be troublesome but common sources can cause multiple rules on the same file
-                    set_source_files_properties(${resource} PROPERTIES SKIP_RESOURCE TRUE)
                 endif()
             endif()
         endif()
@@ -92,8 +93,8 @@ macro(KATIE_TRANSLATIONS TRANSLATIONS)
         add_custom_target(
             ${trname}_translation ALL
             COMMAND "${KATIE_LRELEASE}" "${translation}" -qm "${trout}"
+            OUTPUT "${trout}"
         )
-        set_source_files_properties(${trout} PROPERTIES GENERATED TRUE)
         install(FILES ${trout} DESTINATION ${KATIE_TRANSLATIONS_RELATIVE})
     endforeach()
 endmacro()
index df6f439..73b5aa1 100644 (file)
@@ -43,6 +43,19 @@ if(WITH_ACCESSIBILITY)
 endif()
 
 
+set(SHAREDBEARER_SOURCES
+    ${CMAKE_CURRENT_SOURCE_DIR}/bearer/qnetworksession_impl.cpp
+)
+set(SHAREDBEARER_HEADERS
+    ${CMAKE_CURRENT_SOURCE_DIR}/bearer/qnetworksession_impl.h
+    ${CMAKE_CURRENT_SOURCE_DIR}/bearer/qbearerengine_impl.h
+)
+katie_setup_target(sharedbearer ${SHAREDBEARER_SOURCES} ${SHAREDBEARER_HEADERS})
+add_library(sharedbearer OBJECT ${sharedbearer_SOURCES})
+target_include_directories(sharedbearer PRIVATE
+    ${CMAKE_CURRENT_SOURCE_DIR}/bearer
+)
+
 if(KATIE_PLATFORM MATCHES "(linux|freebsd|openbsd)")
     include(bearer/generic/generic.cmake)
     if(WITH_DBUS AND DBUS_FOUND)
index 17263c8..8e03d58 100644 (file)
@@ -7,8 +7,6 @@ set(QTCONNMANBEARERPLUGIN_HEADERS
     ${CMAKE_CURRENT_SOURCE_DIR}/bearer/connman/qconnmanservice_linux_p.h
     ${CMAKE_CURRENT_SOURCE_DIR}/bearer/connman/qofonoservice_linux_p.h
     ${CMAKE_CURRENT_SOURCE_DIR}/bearer/connman/qconnmanengine.h
-    ${CMAKE_CURRENT_SOURCE_DIR}/bearer/qnetworksession_impl.h
-    ${CMAKE_CURRENT_SOURCE_DIR}/bearer/qbearerengine_impl.h
 )
 
 set(QTCONNMANBEARERPLUGIN_SOURCES
@@ -16,12 +14,13 @@ set(QTCONNMANBEARERPLUGIN_SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/bearer/connman/qconnmanservice_linux.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/bearer/connman/qofonoservice_linux.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/bearer/connman/qconnmanengine.cpp
-    ${CMAKE_CURRENT_SOURCE_DIR}/bearer/qnetworksession_impl.cpp
 )
 
 katie_setup_target(qconnmanbearerplugin ${QTCONNMANBEARERPLUGIN_SOURCES} ${QTCONNMANBEARERPLUGIN_HEADERS})
 
-add_library(qconnmanbearerplugin MODULE ${qconnmanbearerplugin_SOURCES})
+add_library(qconnmanbearerplugin MODULE ${qconnmanbearerplugin_SOURCES}
+    $<TARGET_OBJECTS:sharedbearer>
+)
 target_link_libraries(qconnmanbearerplugin KtCore KtNetwork KtDBus)
 set_target_properties(qconnmanbearerplugin PROPERTIES OUTPUT_NAME qconnmanbearer)
 target_include_directories(qconnmanbearerplugin PRIVATE
@@ -29,6 +28,8 @@ target_include_directories(qconnmanbearerplugin PRIVATE
     ${CMAKE_CURRENT_SOURCE_DIR}/bearer
 )
 
+katie_setup_object(qconnmanbearerplugin sharedbearer)
+
 install(
     TARGETS qconnmanbearerplugin
     DESTINATION ${KATIE_PLUGINS_RELATIVE}/bearer
index 1e7d29c..89cd276 100644 (file)
@@ -5,22 +5,23 @@ include_directories(
 
 set(QGENERICBEARERPLUGIN_HEADERS
     ${CMAKE_CURRENT_SOURCE_DIR}/bearer/generic/qgenericengine.h
-    ${CMAKE_CURRENT_SOURCE_DIR}/bearer/qnetworksession_impl.h
-    ${CMAKE_CURRENT_SOURCE_DIR}/bearer/qbearerengine_impl.h
 )
 
 set(QGENERICBEARERPLUGIN_SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/bearer/generic/qgenericmain.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/bearer/generic/qgenericengine.cpp
-    ${CMAKE_CURRENT_SOURCE_DIR}/bearer/qnetworksession_impl.cpp
 )
 
 katie_setup_target(qgenericbearerplugin ${QGENERICBEARERPLUGIN_SOURCES} ${QGENERICBEARERPLUGIN_HEADERS})
 
-add_library(qgenericbearerplugin MODULE ${qgenericbearerplugin_SOURCES})
+add_library(qgenericbearerplugin MODULE ${qgenericbearerplugin_SOURCES}
+    $<TARGET_OBJECTS:sharedbearer>
+)
 target_link_libraries(qgenericbearerplugin KtCore KtNetwork)
 set_target_properties(qgenericbearerplugin PROPERTIES OUTPUT_NAME qgenericbearer)
 
+katie_setup_object(qgenericbearerplugin sharedbearer)
+
 install(
     TARGETS qgenericbearerplugin
     DESTINATION ${KATIE_PLUGINS_RELATIVE}/bearer
index 111c3fa..f9f66b5 100644 (file)
@@ -6,8 +6,6 @@ set(QNMBEARERPLUGIN_HEADERS
     ${CMAKE_CURRENT_SOURCE_DIR}/bearer/networkmanager/qnmdbushelper.h
     ${CMAKE_CURRENT_SOURCE_DIR}/bearer/networkmanager/qnetworkmanagerservice.h
     ${CMAKE_CURRENT_SOURCE_DIR}/bearer/networkmanager/qnetworkmanagerengine.h
-    ${CMAKE_CURRENT_SOURCE_DIR}/bearer/qnetworksession_impl.h
-    ${CMAKE_CURRENT_SOURCE_DIR}/bearer/qbearerengine_impl.h
 )
 
 set(QNMBEARERPLUGIN_SOURCES
@@ -15,15 +13,18 @@ set(QNMBEARERPLUGIN_SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/bearer/networkmanager/qnmdbushelper.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/bearer/networkmanager/qnetworkmanagerservice.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/bearer/networkmanager/qnetworkmanagerengine.cpp
-    ${CMAKE_CURRENT_SOURCE_DIR}/bearer/qnetworksession_impl.cpp
 )
 
 katie_setup_target(qnmbearerplugin ${QNMBEARERPLUGIN_SOURCES} ${QNMBEARERPLUGIN_HEADERS})
 
-add_library(qnmbearerplugin MODULE ${qnmbearerplugin_SOURCES})
+add_library(qnmbearerplugin MODULE ${qnmbearerplugin_SOURCES}
+    $<TARGET_OBJECTS:sharedbearer>
+)
 target_link_libraries(qnmbearerplugin KtCore KtNetwork KtDBus)
 set_target_properties(qnmbearerplugin PROPERTIES OUTPUT_NAME qnmbearer)
 
+katie_setup_object(qnmbearerplugin sharedbearer)
+
 install(
     TARGETS qnmbearerplugin
     DESTINATION ${KATIE_PLUGINS_RELATIVE}/bearer