From: Ivailo Monev Date: Sat, 5 Aug 2017 08:00:15 +0000 (+0000) Subject: add macro to exclude sources from all-in-one source file and make use of it X-Git-Tag: 4.12.0~6305 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=a8cba58eec7826faad110b3700bcd96e0bc1cfd8;p=kde%2FKatie.git add macro to exclude sources from all-in-one source file and make use of it Signed-off-by: Ivailo Monev --- diff --git a/cmake/modules/KatieBuildMacros.cmake b/cmake/modules/KatieBuildMacros.cmake index bd953c4db..f8f07f653 100644 --- a/cmake/modules/KatieBuildMacros.cmake +++ b/cmake/modules/KatieBuildMacros.cmake @@ -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() diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index f9a2c4b01..bd5b0ef10 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -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}) diff --git a/src/gui/dialogs/dialogs.cmake b/src/gui/dialogs/dialogs.cmake index 89992b87f..b339480d7 100644 --- a/src/gui/dialogs/dialogs.cmake +++ b/src/gui/dialogs/dialogs.cmake @@ -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 diff --git a/src/gui/itemviews/itemviews.cmake b/src/gui/itemviews/itemviews.cmake index b5e24133e..aee63ed35 100644 --- a/src/gui/itemviews/itemviews.cmake +++ b/src/gui/itemviews/itemviews.cmake @@ -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 diff --git a/src/gui/kernel/kernel.cmake b/src/gui/kernel/kernel.cmake index f741f742e..9d425d8eb 100644 --- a/src/gui/kernel/kernel.cmake +++ b/src/gui/kernel/kernel.cmake @@ -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 diff --git a/src/gui/painting/painting.cmake b/src/gui/painting/painting.cmake index 243c8854a..aa68ab3c2 100644 --- a/src/gui/painting/painting.cmake +++ b/src/gui/painting/painting.cmake @@ -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() diff --git a/src/gui/text/text.cmake b/src/gui/text/text.cmake index de1ae2e43..bf4f22b60 100644 --- a/src/gui/text/text.cmake +++ b/src/gui/text/text.cmake @@ -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() diff --git a/src/gui/widgets/widgets.cmake b/src/gui/widgets/widgets.cmake index dea48a425..f531287d2 100644 --- a/src/gui/widgets/widgets.cmake +++ b/src/gui/widgets/widgets.cmake @@ -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