OSDN Git Service

add macro to exclude sources from all-in-one source file and make use of it
authorIvailo Monev <xakepa10@laimg.moc>
Sat, 5 Aug 2017 08:00:15 +0000 (08:00 +0000)
committerIvailo Monev <xakepa10@laimg.moc>
Sat, 5 Aug 2017 08:00:15 +0000 (08:00 +0000)
Signed-off-by: Ivailo Monev <xakepa10@laimg.moc>
cmake/modules/KatieBuildMacros.cmake
src/gui/CMakeLists.txt
src/gui/dialogs/dialogs.cmake
src/gui/itemviews/itemviews.cmake
src/gui/kernel/kernel.cmake
src/gui/painting/painting.cmake
src/gui/text/text.cmake
src/gui/widgets/widgets.cmake

index bd953c4..f8f07f6 100644 (file)
@@ -122,6 +122,12 @@ function(KATIE_GIT_CHECKOUT GITEXE OUTSTR)
     endif()
 endfunction()
 
+# a function to instruct katie_setup_target() which sources to exclude from the
+# all-in-one source file
+macro(KATIE_ALLINONE_EXCLUDE ARG1)
+    set_source_files_properties(${ARG1} ${ARGN} PROPERTIES ALLINONE_EXCLUDE TRUE)
+endmacro()
+
 # a function to create an array of source files for a target while taking into
 # account all-in-one target build setting up proper dependency for the
 # moc/uic/rcc generated resources
@@ -184,8 +190,8 @@ function(KATIE_SETUP_TARGET FORTARGET)
     if(NOT KATIE_ALLINONE)
         set(filteredsources)
         foreach(srcstring ${ARGN})
-            get_filename_component(srcname ${srcstring} EXT)
-            if(NOT "${srcname}" MATCHES "(.qrc|.ui)")
+            get_filename_component(srcext ${srcstring} EXT)
+            if(NOT "${srcext}" MATCHES "(.qrc|.ui)")
                 set(filteredsources ${filteredsources} ${srcstring})
             endif()
         endforeach()
@@ -196,15 +202,20 @@ function(KATIE_SETUP_TARGET FORTARGET)
         set(allinonetemp "${CMAKE_CURRENT_BINARY_DIR}/allinone_temporary.cpp")
         set(allinonesource "${CMAKE_CURRENT_BINARY_DIR}/${FORTARGET}_allinone.cpp")
         set(allinonedata)
+        set(excludesources)
         foreach(srcstring ${ARGN})
-            get_filename_component(srcname ${srcstring} EXT)
-            if(NOT "${srcname}" MATCHES "(.h|.qrc|.ui)")
+            get_filename_component(srcext ${srcstring} EXT)
+            get_source_file_property(skip ${srcstring} ALLINONE_EXCLUDE)
+            if(skip)
+                katie_warning("Source is excluded: ${srcstring}")
+                set(srcstring ${srcstring} ${srcstring})
+            elseif(NOT "${srcext}" MATCHES "(.h|.qrc|.ui)" AND NOT "${srcext}" STREQUAL ".c")
                 set(allinonedata "${allinonedata}#include \"${srcstring}\"\n")
             endif()
         endforeach()
         file(WRITE "${allinonetemp}" "${allinonedata}")
         configure_file("${allinonetemp}" "${allinonesource}")
-        set(${FORTARGET}_SOURCES ${resourcesdep} ${allinonesource} PARENT_SCOPE)
+        set(${FORTARGET}_SOURCES ${resourcesdep} ${allinonesource} ${excludesources} PARENT_SCOPE)
     endif()
 endfunction()
 
index f9a2c4b..bd5b0ef 100644 (file)
@@ -482,68 +482,22 @@ set(GUI_HEADERS
     ${CMAKE_CURRENT_SOURCE_DIR}/qguicommon_p.h
 )
 
-katie_generate_misc("${GUI_HEADERS}" QtGui)
-katie_generate_public("${GUI_PUBLIC_HEADERS}" QtGui)
-katie_generate_package(KtGui "KtCore")
-katie_setup_target(KtGui ${GUI_SOURCES} ${GUI_HEADERS})
-
-# those are set after katie_setup_target() because they are known to cause
-# trouble for all-in-one build
-if(WITH_HARFBUZZ AND HARFBUZZ_FOUND)
-    set(EXTRA_GUI_LIBS
-        ${EXTRA_GUI_LIBS}
-        ${HARFBUZZ_LIBRARIES}
-    )
-    include_directories(${HARFBUZZ_INCLUDE_DIRS})
-else()
-    # TODO: move to main CMakeLists?
-    add_definitions(-DHB_EXPORT=Q_CORE_EXPORT -DQT_NO_OPENTYPE)
-    set(KtGui_SOURCES
-        ${KtGui_SOURCES}
-        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-buffer.c
-        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-gdef.c
-        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-gsub.c
-        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c
-        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-impl.c
-        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-open.c
-        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-stream.c
-        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-shaper-all.cpp
-        ${CMAKE_SOURCE_DIR}/src/gui/text/qharfbuzz.cpp
-    )
-    include_directories(
-        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src
-    )
-endif()
-
-
-set(KtGui_SOURCES
-    ${KtGui_SOURCES}
+katie_allinone_exclude(
     ${CMAKE_CURRENT_SOURCE_DIR}/itemviews/qitemeditorfactory.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/widgets/qtextedit.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/text/qtextformat.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/kernel/qeventdispatcher_x11.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/painting/qpaintengine_x11.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/qprintdialog_unix.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/qpagesetupdialog_unix.cpp
+    ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-shaper-all.cpp
+    ${CMAKE_SOURCE_DIR}/src/gui/text/qharfbuzz.cpp
 )
 
-if(WITH_X11 AND X11_FOUND)
-    set(KtGui_SOURCES
-        ${KtGui_SOURCES}
-        ${CMAKE_CURRENT_SOURCE_DIR}/kernel/qeventdispatcher_x11.cpp
-        ${CMAKE_CURRENT_SOURCE_DIR}/painting/qpaintengine_x11.cpp
-    )
-endif()
-
-if(KATIE_PLATFORM MATCHES "(linux|freebsd|openbsd)")
-    set(KtGui_SOURCES
-        ${KtGui_SOURCES}
-        ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/qprintdialog_unix.cpp
-        ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/qpagesetupdialog_unix.cpp
-    )
-endif()
-
-# to avoid mixing C++ and C source files when building as all-in-one
-set(KtGui_SOURCES
-    ${KtGui_SOURCES}
-    ${CMAKE_CURRENT_SOURCE_DIR}/painting/qgrayraster.c
-)
+katie_generate_misc("${GUI_HEADERS}" QtGui)
+katie_generate_public("${GUI_PUBLIC_HEADERS}" QtGui)
+katie_generate_package(KtGui "KtCore")
+katie_setup_target(KtGui ${GUI_SOURCES} ${GUI_HEADERS})
 
 if(WITH_NSL AND NSL_FOUND)
     include_directories(${NSL_INCLUDES})
index 89992b8..b339480 100644 (file)
@@ -57,6 +57,8 @@ if(KATIE_PLATFORM MATCHES "(linux|freebsd|openbsd)")
     )
     set(GUI_SOURCES
         ${GUI_SOURCES}
+        ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/qprintdialog_unix.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/qpagesetupdialog_unix.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/qprintsettingsoutput.ui
         ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/qprintwidget.ui
         ${CMAKE_CURRENT_SOURCE_DIR}/dialogs/qprintpropertieswidget.ui
index b5e2413..aee63ed 100644 (file)
@@ -62,6 +62,7 @@ set(GUI_SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/itemviews/qproxymodel.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/itemviews/qabstractproxymodel.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/itemviews/qsortfilterproxymodel.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/itemviews/qitemeditorfactory.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/itemviews/qstandarditemmodel.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/itemviews/qstringlistmodel.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/itemviews/qtreewidgetitemiterator.cpp
index f741f74..9d425d8 100644 (file)
@@ -100,6 +100,7 @@ if(WITH_X11 AND X11_FOUND)
         ${CMAKE_CURRENT_SOURCE_DIR}/kernel/qx11info_x11.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/kernel/qkeymapper_x11.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/kernel/qkde.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/kernel/qeventdispatcher_x11.cpp
     )
     if(WITH_GLIB2 AND GLIB2_FOUND)
         set(GUI_HEADERS
index 243c885..aa68ab3 100644 (file)
@@ -100,6 +100,7 @@ set(GUI_SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/painting/qgraphicssystemplugin.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/painting/qwindowsurface_raster.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/painting/qprinterinfo_unix.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/painting/qgrayraster.c
 )
 
 if(WITH_X11 AND X11_FOUND)
@@ -112,6 +113,7 @@ if(WITH_X11 AND X11_FOUND)
         ${GUI_SOURCES}
         ${CMAKE_CURRENT_SOURCE_DIR}/painting/qcolormap_x11.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/painting/qpaintdevice_x11.cpp
+        ${CMAKE_CURRENT_SOURCE_DIR}/painting/qpaintengine_x11.cpp
         ${CMAKE_CURRENT_SOURCE_DIR}/painting/qwindowsurface_x11.cpp
     )
 endif()
index de1ae2e..bf4f22b 100644 (file)
@@ -56,6 +56,7 @@ set(GUI_SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/text/qtextcontrol.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/text/qtextengine.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/text/qtextlayout.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/text/qtextformat.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/text/qtextobject.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/text/qtextoption.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/text/qfragmentmap.cpp
@@ -118,3 +119,29 @@ if(WITH_X11 AND X11_FOUND)
         ${CMAKE_CURRENT_SOURCE_DIR}/text/qfontengine_x11.cpp
     )
 endif()
+
+if(WITH_HARFBUZZ AND HARFBUZZ_FOUND)
+    set(EXTRA_GUI_LIBS
+        ${EXTRA_GUI_LIBS}
+        ${HARFBUZZ_LIBRARIES}
+    )
+    include_directories(${HARFBUZZ_INCLUDE_DIRS})
+else()
+    # TODO: move to main CMakeLists?
+    add_definitions(-DHB_EXPORT=Q_CORE_EXPORT -DQT_NO_OPENTYPE)
+    set(GUI_SOURCES
+        ${GUI_SOURCES}
+        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-buffer.c
+        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-gdef.c
+        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-gsub.c
+        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-gpos.c
+        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-impl.c
+        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-open.c
+        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-stream.c
+        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src/harfbuzz-shaper-all.cpp
+        ${CMAKE_SOURCE_DIR}/src/gui/text/qharfbuzz.cpp
+    )
+    include_directories(
+        ${CMAKE_SOURCE_DIR}/src/3rdparty/harfbuzz/src
+    )
+endif()
index dea48a4..f531287 100644 (file)
@@ -127,6 +127,7 @@ set(GUI_SOURCES
     ${CMAKE_CURRENT_SOURCE_DIR}/widgets/qstatusbar.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/widgets/qtabbar.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/widgets/qtabwidget.cpp
+    ${CMAKE_CURRENT_SOURCE_DIR}/widgets/qtextedit.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/widgets/qtextbrowser.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/widgets/qtoolbar.cpp
     ${CMAKE_CURRENT_SOURCE_DIR}/widgets/qtoolbarlayout.cpp