From d088897d13ad7a116ac7b71957208490ac02a75a Mon Sep 17 00:00:00 2001 From: Ivailo Monev Date: Sat, 18 Jun 2016 12:54:10 +0000 Subject: [PATCH] make Python recommended not required Signed-off-by: Ivailo Monev --- CMakeLists.txt | 18 ++++++++++++++++- cmake/modules/KatieBuildMacros.cmake | 26 +++++------------------- scripts/genmap.py | 37 +++++++++++++++++++++++++--------- src/core/CMakeLists.txt | 1 - src/dbus/CMakeLists.txt | 1 - src/declarative/CMakeLists.txt | 1 - src/designer/CMakeLists.txt | 1 - src/designer/components/CMakeLists.txt | 4 ---- src/gui/CMakeLists.txt | 1 - src/help/CMakeLists.txt | 1 - src/multimedia/CMakeLists.txt | 1 - src/network/CMakeLists.txt | 1 - src/opengl/CMakeLists.txt | 1 - src/script/CMakeLists.txt | 1 - src/scripttools/CMakeLists.txt | 1 - src/sql/CMakeLists.txt | 1 - src/svg/CMakeLists.txt | 1 - src/test/CMakeLists.txt | 1 - src/uitools/CMakeLists.txt | 1 - src/xml/CMakeLists.txt | 1 - src/xmlpatterns/CMakeLists.txt | 1 - 21 files changed, 49 insertions(+), 53 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b0bfa73e3..e0f5611d0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -228,7 +228,7 @@ set_package_properties(PythonInterp PROPERTIES PURPOSE "UI class maps generator script" DESCRIPTION "Programming language that lets you work quickly" URL "https://www.python.org/" - TYPE REQUIRED + TYPE RECOMMENDED ) find_package(OpenSSL) @@ -463,6 +463,22 @@ if(NOT KATIE_PLATFORM MATCHES "(win32|wince|mac)" AND NOT KATIE_BOOTSTRAP) ) endif() +if(PYTHONINTERP_FOUND) + execute_process( + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/scripts/genmap.py + WORKING_DIRECTORY ${CMAKE_SOURCE_DIR} + RESULT_VARIABLE genmap_result + ERROR_VARIABLE genmap_error + ) + if(NOT genmap_result EQUAL 0) + message(SEND_ERROR "${genmap_error}") + endif() +else() + message(WARNING + "\nUsing pre-generated classes map" + ) +endif() + # various sources use #include include_directories(${CMAKE_SOURCE_DIR}/src) diff --git a/cmake/modules/KatieBuildMacros.cmake b/cmake/modules/KatieBuildMacros.cmake index c157b421c..e3ab2d63c 100644 --- a/cmake/modules/KatieBuildMacros.cmake +++ b/cmake/modules/KatieBuildMacros.cmake @@ -27,20 +27,6 @@ else() endif() set(KATIE_QDBUSXML2CPP "qdbusxml2cpp") -macro(KATIE_GENERATE_MAP SUBDIR KEYWORD) - execute_process( - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/scripts/genmap.py ${SUBDIR} ${KEYWORD} - WORKING_DIRECTORY ${CMAKE_BINARY_DIR} - RESULT_VARIABLE genmap_result - ERROR_VARIABLE genmap_error - ) - if(NOT genmap_result EQUAL 0) - message(SEND_ERROR "${genmap_error}") - endif() -endmacro() - -set(CLASSMAPOUT ${CMAKE_BINARY_DIR}/include/qclass_lib_map.h) -file(WRITE ${CLASSMAPOUT} "") macro(KATIE_GENERATE_PUBLIC PUBLIC_INCLUDES SUBDIR) set(metaout ${CMAKE_BINARY_DIR}/include/${SUBDIR}/${SUBDIR}) set(metadata "#ifndef Qt${SUBDIR}_META_H\n#define Qt${SUBDIR}_META_H\n\n") @@ -60,7 +46,6 @@ macro(KATIE_GENERATE_PUBLIC PUBLIC_INCLUDES SUBDIR) endforeach(pubheader) set(metadata "${metadata}\n#endif\n") file(WRITE ${metaout} "${metadata}") - file(APPEND ${CLASSMAPOUT} "#include <${SUBDIR}_map.h>\n") endmacro() macro(KATIE_GENERATE_MISC MISC_INCLUDES SUBDIR) @@ -108,12 +93,11 @@ endfunction() # the purpose of this function is to ensure that (1) the output string is not # null so that when it is passed to another function/macro it does not complain -# about inproper number of arguments and (2) it joins the input which if -# quoted has semicolons to it (if it is a list) that the sub-command -# (e.g. gcc) can not handle. that's a dirty hack to support gcc and clang at -# the same time along with custom target COMPILE_FLAGS/LINK_FLAGS without -# doing compiler checks all over the place. if anyone has a better solution -# I'll be glad to drop the function bellow! +# about inproper number of arguments and (2) it joins the input which if quoted +# has semicolons in it (if it is a list) that the sub-command (e.g. gcc) can +# not handle. that's a dirty hack to support gcc and clang at the same time +# along with custom target COMPILE_FLAGS/LINK_FLAGS without doing compiler +# checks all over the place. function(KATIE_FIXUP_STRING INSTR OUTSTR) string(STRIP "${INSTR}" instrtrimmed) if("${instrtrimmed}" STREQUAL "") diff --git a/scripts/genmap.py b/scripts/genmap.py index 6d5a5b083..1f0faa4fa 100755 --- a/scripts/genmap.py +++ b/scripts/genmap.py @@ -2,14 +2,29 @@ import sys, os, re -headersdir = os.getcwd() -component = sys.argv[1] -keyword = sys.argv[2] +components = { + 'core': 'Q_CORE_EXPORT', + 'gui': 'Q_GUI_EXPORT', + 'dbus': 'Q_DBUS_EXPORT', + 'declarative': 'Q_DECLARATIVE_EXPORT', + 'designer': 'QDESIGNER_COMPONENTS_EXPORT|QDESIGNER_EXTENSION_EXPORT|QT_FORMEDITOR_EXPORT|QT_PROPERTYEDITOR_EXPORT|QT_SIGNALSLOTEDITOR_EXPORT|QT_OBJECTINSPECTOR_EXPORT|QT_WIDGETBOX_EXPORT|QT_BUDDYEDITOR_EXPORT|QT_TABORDEREDITOR_EXPORT|QT_TASKMENU_EXPORT', + 'help': 'QHELP_EXPORT', + 'multimedia': 'Q_MULTIMEDIA_EXPORT', + 'network': 'Q_NETWORK_EXPORT', + 'sql': 'Q_SQL_EXPORT', + 'svg': 'Q_SVG_EXPORT', + 'xml': 'Q_XML_EXPORT', + 'xmlpatterns': 'Q_XMLPATTERNS_EXPORT', + 'script': 'Q_SCRIPT_EXPORT', + 'scripttools': 'Q_SCRIPTTOOLS_EXPORT', + 'test': 'Q_TESTLIB_EXPORT', + 'uitools': 'QDESIGNER_UILIB_EXPORT', + 'opengl': 'Q_OPENGL_EXPORT', +} +mapoutput = 'src/shared/qclass_lib_map.h' +mapdata = '#ifndef QT_CLASS_MAP_H\n#define QT_CLASS_MAP_H\n\n' -mapoutput = '%s/include/%s_map.h' % (headersdir, component) -mapdata = '#ifndef %s_MAP_H\n#define %s_MAP_H\n\n' % (component, component) - -def exportscan(sdir): +def exportscan(sdir, keyword, component): dirmap = '' for sroot, sdir, lfiles in os.walk(sdir): for sfile in lfiles: @@ -23,11 +38,13 @@ def exportscan(sdir): dirmap += 'QT_CLASS_LIB(%s, %s, %s)\n' % (match, component, sfile) return dirmap -mapdata += exportscan('%s/include/%s' % (headersdir, component)) -mapdata += exportscan('%s/privateinclude/%s' % (headersdir, component)) +for component in components: + keyword = components[component] + mapdata += exportscan('src/%s' % component, keyword, 'Qt%s' % component.capitalize()) + mapdata += '\n#endif\n' -sys.stderr.write('-- Writing: %s\n' % os.path.basename(mapoutput)) +sys.stdout.write('-- Writing: %s\n' % mapoutput) with open(mapoutput, 'wb') as f: if sys.version_info[0] == 3: f.write(bytes(mapdata, 'utf-8')) diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 97645362f..ab920b9c9 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -362,7 +362,6 @@ endif() katie_generate_misc("${CORE_HEADERS}" QtCore) katie_generate_public("${CORE_PUBLIC_HEADERS}" QtCore) -katie_generate_map(QtCore Q_CORE_EXPORT) katie_resources(${CORE_SOURCES} ${CORE_HEADERS}) katie_setup_flags() diff --git a/src/dbus/CMakeLists.txt b/src/dbus/CMakeLists.txt index 2f1059cc9..0be3d3f95 100644 --- a/src/dbus/CMakeLists.txt +++ b/src/dbus/CMakeLists.txt @@ -123,7 +123,6 @@ endif() katie_generate_misc("${DBUS_HEADERS}" QtDBus) katie_generate_public("${DBUS_PUBLIC_HEADERS}" QtDBus) -katie_generate_map(QtDBus Q_DBUS_EXPORT) katie_resources(${DBUS_SOURCES} ${DBUS_HEADERS}) katie_setup_flags() diff --git a/src/declarative/CMakeLists.txt b/src/declarative/CMakeLists.txt index 9519481a5..7cbea580d 100644 --- a/src/declarative/CMakeLists.txt +++ b/src/declarative/CMakeLists.txt @@ -73,7 +73,6 @@ endif() katie_generate_misc("${DECLARATIVE_HEADERS}" QtDeclarative) katie_generate_public("${DECLARATIVE_PUBLIC_HEADERS}" QtDeclarative) -katie_generate_map(QtDeclarative Q_DECLARATIVE_EXPORT) katie_resources("${DECLARATIVE_SOURCES}") katie_resources("${DECLARATIVE_HEADERS}") katie_setup_flags() diff --git a/src/designer/CMakeLists.txt b/src/designer/CMakeLists.txt index c29b50046..f6086102c 100644 --- a/src/designer/CMakeLists.txt +++ b/src/designer/CMakeLists.txt @@ -114,7 +114,6 @@ endif() katie_generate_misc("${DESIGNER_HEADERS}" QtDesigner) katie_generate_public("${DESIGNER_PUBLIC_HEADERS}" QtDesigner) -katie_generate_map(QtDesigner "QDESIGNER_COMPONENTS_EXPORT|QDESIGNER_EXTENSION_EXPORT") katie_resources("${DESIGNER_SOURCES}") katie_resources("${DESIGNER_HEADERS}") katie_setup_flags() diff --git a/src/designer/components/CMakeLists.txt b/src/designer/components/CMakeLists.txt index bc0120250..42e438abf 100644 --- a/src/designer/components/CMakeLists.txt +++ b/src/designer/components/CMakeLists.txt @@ -79,10 +79,6 @@ endif() # headers go in one place! katie_generate_misc("${DESIGNERCOMPONENTS_HEADERS}" QtDesignerComponents) katie_generate_public("${DESIGNERCOMPONENTS_PUBLIC_HEADERS}" QtDesignerComponents) -katie_generate_map( - QtDesignerComponents - "QT_FORMEDITOR_EXPORT|QT_PROPERTYEDITOR_EXPORT|QT_SIGNALSLOTEDITOR_EXPORT|QT_OBJECTINSPECTOR_EXPORT|QT_WIDGETBOX_EXPORT|QT_BUDDYEDITOR_EXPORT|QT_TABORDEREDITOR_EXPORT|QT_TASKMENU_EXPORT" -) katie_resources(${DESIGNERCOMPONENTS_SOURCES}) katie_resources(${DESIGNERCOMPONENTS_HEADERS}) katie_setup_flags() diff --git a/src/gui/CMakeLists.txt b/src/gui/CMakeLists.txt index 2ffa5423c..2f1686b30 100644 --- a/src/gui/CMakeLists.txt +++ b/src/gui/CMakeLists.txt @@ -485,7 +485,6 @@ endif() katie_generate_misc("${GUI_HEADERS}" QtGui) katie_generate_public("${GUI_PUBLIC_HEADERS}" QtGui) -katie_generate_map(QtGui Q_GUI_EXPORT) katie_resources(${GUI_SOURCES} ${GUI_HEADERS}) katie_setup_flags() diff --git a/src/help/CMakeLists.txt b/src/help/CMakeLists.txt index 725a4a364..5cfeae1d6 100644 --- a/src/help/CMakeLists.txt +++ b/src/help/CMakeLists.txt @@ -89,7 +89,6 @@ include_directories( katie_generate_misc("${HELP_HEADERS}" QtHelp) katie_generate_public("${HELP_PUBLIC_HEADERS}" QtHelp) -katie_generate_map(QtHelp QHELP_EXPORT) katie_resources(${HELP_SOURCES} ${HELP_HEADERS}) katie_setup_flags() diff --git a/src/multimedia/CMakeLists.txt b/src/multimedia/CMakeLists.txt index 37659b7aa..0e4564864 100644 --- a/src/multimedia/CMakeLists.txt +++ b/src/multimedia/CMakeLists.txt @@ -39,7 +39,6 @@ include_directories( katie_generate_misc("${MULTIMEDIA_HEADERS}" QtMultimedia) katie_generate_public("${MULTIMEDIA_PUBLIC_HEADERS}" QtMultimedia) -katie_generate_map(QtMultimedia Q_MULTIMEDIA_EXPORT) katie_resources("${MULTIMEDIA_SOURCES}") katie_resources("${MULTIMEDIA_HEADERS}") katie_setup_flags() diff --git a/src/network/CMakeLists.txt b/src/network/CMakeLists.txt index 97f967fef..67fc25933 100644 --- a/src/network/CMakeLists.txt +++ b/src/network/CMakeLists.txt @@ -83,7 +83,6 @@ endif() katie_generate_misc("${NETWORK_HEADERS}" QtNetwork) katie_generate_public("${NETWORK_PUBLIC_HEADERS}" QtNetwork) -katie_generate_map(QtNetwork Q_NETWORK_EXPORT) katie_resources(${NETWORK_SOURCES} ${NETWORK_HEADERS}) katie_setup_flags() diff --git a/src/opengl/CMakeLists.txt b/src/opengl/CMakeLists.txt index 431c6cfd1..07fae9658 100644 --- a/src/opengl/CMakeLists.txt +++ b/src/opengl/CMakeLists.txt @@ -195,7 +195,6 @@ endif() katie_generate_misc("${OPENGL_HEADERS}" QtOpenGL) katie_generate_public("${OPENGL_PUBLIC_HEADERS}" QtOpenGL) -katie_generate_map(QtOpenGL Q_OPENGL_EXPORT) katie_resources(${OPENGL_SOURCES} ${OPENGL_HEADERS}) katie_setup_flags() diff --git a/src/script/CMakeLists.txt b/src/script/CMakeLists.txt index f2e33012b..ee9b20c47 100644 --- a/src/script/CMakeLists.txt +++ b/src/script/CMakeLists.txt @@ -291,7 +291,6 @@ set(SCRIPT_RESOURCES katie_generate_misc("${SCRIPT_HEADERS}" QtScript) katie_generate_public("${SCRIPT_PUBLIC_HEADERS}" QtScript) -katie_generate_map(QtScript Q_SCRIPT_EXPORT) katie_resources(${SCRIPT_RESOURCES}) katie_setup_flags() diff --git a/src/scripttools/CMakeLists.txt b/src/scripttools/CMakeLists.txt index 7a5bd29c2..1584bfd03 100644 --- a/src/scripttools/CMakeLists.txt +++ b/src/scripttools/CMakeLists.txt @@ -25,7 +25,6 @@ include_directories( katie_generate_misc("${SCRIPTTOOLS_HEADERS}" QtScriptTools) katie_generate_public("${SCRIPTTOOLS_PUBLIC_HEADERS}" QtScriptTools) -katie_generate_map(QtScriptTools Q_SCRIPTTOOLS_EXPORT) katie_resources(${SCRIPTTOOLS_SOURCES} ${SCRIPTTOOLS_HEADERS}) katie_setup_flags() diff --git a/src/sql/CMakeLists.txt b/src/sql/CMakeLists.txt index 9d9813ab5..c75816ff3 100644 --- a/src/sql/CMakeLists.txt +++ b/src/sql/CMakeLists.txt @@ -76,7 +76,6 @@ include_directories( katie_generate_misc("${SQL_HEADERS}" QtSql) katie_generate_public("${SQL_PUBLIC_HEADERS}" QtSql) -katie_generate_map(QtSql Q_SQL_EXPORT) katie_resources(${SQL_SOURCES} ${SQL_HEADERS}) katie_setup_flags() diff --git a/src/svg/CMakeLists.txt b/src/svg/CMakeLists.txt index aef7227c0..c10b7fe00 100644 --- a/src/svg/CMakeLists.txt +++ b/src/svg/CMakeLists.txt @@ -70,7 +70,6 @@ endif() katie_generate_misc("${SVG_HEADERS}" QtSvg) katie_generate_public("${SVG_PUBLIC_HEADERS}" QtSvg) -katie_generate_map(QtSvg Q_SVG_EXPORT) katie_resources(${SVG_SOURCES} ${SVG_HEADERS}) katie_setup_flags() diff --git a/src/test/CMakeLists.txt b/src/test/CMakeLists.txt index 16920681a..67bdebcbf 100644 --- a/src/test/CMakeLists.txt +++ b/src/test/CMakeLists.txt @@ -134,7 +134,6 @@ endif() katie_generate_misc("${TEST_HEADERS}" QtTest) katie_generate_public("${TEST_PUBLIC_HEADERS}" QtTest) -katie_generate_map(QtTest Q_TESTLIB_EXPORT) katie_resources(${TEST_SOURCES} ${TEST_HEADERS}) katie_setup_flags() diff --git a/src/uitools/CMakeLists.txt b/src/uitools/CMakeLists.txt index 2e702a8a9..09f9cccfc 100644 --- a/src/uitools/CMakeLists.txt +++ b/src/uitools/CMakeLists.txt @@ -57,7 +57,6 @@ include_directories( katie_generate_misc("${UITOOLS_HEADERS}" QtUiTools) katie_generate_public("${UITOOLS_PUBLIC_HEADERS}" QtUiTools) -katie_generate_map(QtUiTools QDESIGNER_UILIB_EXPORT) katie_resources(${UITOOLS_SOURCES} ${UITOOLS_HEADERS}) katie_setup_flags() diff --git a/src/xml/CMakeLists.txt b/src/xml/CMakeLists.txt index 80cd77e16..f6a2337d3 100644 --- a/src/xml/CMakeLists.txt +++ b/src/xml/CMakeLists.txt @@ -72,7 +72,6 @@ endif() katie_generate_misc("${XML_HEADERS}" QtXml) katie_generate_public("${XML_PUBLIC_HEADERS}" QtXml) -katie_generate_map(QtXml Q_XML_EXPORT) katie_resources(${XML_SOURCES} ${XML_HEADERS}) katie_setup_flags() diff --git a/src/xmlpatterns/CMakeLists.txt b/src/xmlpatterns/CMakeLists.txt index 92a20e5ed..a53dfb524 100644 --- a/src/xmlpatterns/CMakeLists.txt +++ b/src/xmlpatterns/CMakeLists.txt @@ -74,7 +74,6 @@ include_directories( katie_generate_misc("${XMLPATTERNS_HEADERS}" QtXmlPatterns) katie_generate_public("${XMLPATTERNS_PUBLIC_HEADERS}" QtXmlPatterns) -katie_generate_map(QtXmlPatterns Q_XMLPATTERNS_EXPORT) katie_resources(${XMLPATTERNS_SOURCES} ${XMLPATTERNS_HEADERS}) katie_setup_flags() -- 2.11.0