kvirc / KVIrc

The KVIrc IRC Client
http://www.kvirc.net/
GNU General Public License v2.0
232 stars 76 forks source link

Small optimization of build process: QT_VERSION_MAJOR and WANT_PERL_DOCS #2634

Closed VVD closed 2 months ago

VVD commented 2 months ago

Patch:

--- CMakeLists.txt.orig
+++ CMakeLists.txt
@@ -410,6 +410,8 @@ endif()
 # first check if Qt6 or Qt5 has to be used
 if(NOT DEFINED QT_VERSION_MAJOR)
        find_package(QT NAMES Qt6 Qt5 REQUIRED COMPONENTS Core)
+else()
+       find_package(QT NAMES Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core)
 endif()
 # second, detect available modules for the specific Qt version
 find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Widgets)
@@ -774,7 +776,10 @@ endif()
 option(WANT_PERL "Compile Perl support" ON)

 # Perl is needed for documentation, too
-find_package(Perl)
+option(WANT_PERL_DOCS "Use Perl for build documentation" ON)
+if(WANT_PERL_DOCS)
+       find_package(Perl)
+endif()

 if(WANT_PERL)
        if(PERL_FOUND)
  1. If run cmake with -DQT_VERSION_MAJOR=5 command line option then configure stage doesn't print Qt version: -- Qt version : with patch or without -DQT_VERSION_MAJOR=5: -- Qt version : 5.15.13

  2. If perl installed then it used for build documentation without any possibility to prevent this.

DarthGandalf commented 2 months ago

Please attach it as a pull request, it'll be much easier to merge it

VVD commented 2 months ago

AFAIK, it's impossible to create pull request without fork full repo - I don't want create personal fork for "oneliners".

DarthGandalf commented 2 months ago

You can always delete it later

DarthGandalf commented 2 months ago

Btw, there is https://cmake.org/cmake/help/latest/variable/CMAKE_DISABLE_FIND_PACKAGE_PackageName.html

VVD commented 2 months ago
  1. If the build was without perl, then share/kvirc/5.2/help is not created and the check in KviApplication::checkGlobalKvircDirectory does not pass. Replace check help with config:

    --- src/kvirc/kernel/KviApplication_setup.cpp.orig
    +++ src/kvirc/kernel/KviApplication_setup.cpp
    @@ -63,10 +63,10 @@ static QLibrary * g_pSetupLibrary = nullptr;
    
    bool KviApplication::checkGlobalKvircDirectory(const QString szDir)
    {
    -       //First check if the help subdir exists
    -       QString szHelpDir = szDir;
    -       szHelpDir += KVI_PATH_SEPARATOR "help";
    -       if(!KviFileUtils::directoryExists(szHelpDir))
    +       //First check if the config subdir exists
    +       QString szConfigDir = szDir;
    +       szConfigDir += KVI_PATH_SEPARATOR "config";
    +       if(!KviFileUtils::directoryExists(szConfigDir))
                return false;
        //Then check if the pics subdir exists
        QString szPicsDir = szDir;
  2. Build failed with error:

    FAILED: src/kvirc/kvirc
    : && /usr/bin/c++ -O3 -Wl,--undefined-version  -fstack-protector-strong   -Wl,--export-dynamic -Wl,-export-dynamic src/kvirc/CMakeFiles/kvirc.dir/kvirc_autogen/mocs_compilation.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviActionDrawer.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviChannelWindow.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviColorSelectionWindow.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviConsoleWindow.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviCryptController.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviCtcpPageDialog.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviCustomToolBar.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviDebugWindow.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviDynamicToolTip.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviFileDialog.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviMainWindow.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviHistoryWindow.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviHtmlDialog.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviImageDialog.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviInput.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviInputEditor.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviInputHistory.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviIpEditor.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviIrcToolBar.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviIrcView.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviIrcView_events.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviIrcView_getTextLine.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviIrcView_loghandling.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviIrcView_tools.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviMaskEditor.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviMenuBar.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviModeEditor.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviModeWidget.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviMessageBox.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviOptionsWidget.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviQueryWindow.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviScriptButton.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviScriptEditor.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviSelectors.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviStatusBar.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviStatusBarApplet.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviTextIconWindow.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviThemedComboBox.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviThemedLabel.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviThemedLineEdit.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviThemedTreeWidget.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviToolBar.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviWebPackageManagementDialog.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviWindowToolWidget.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviTopicWidget.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviUserListView.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviWindow.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviWindowListBase.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviWindowStack.cpp.o src/kvirc/CMakeFiles/kvirc.dir/ui/KviTreeWindowList.cpp.o src/kvirc/CMakeFiles/kvirc.dir/sparser/KviAntiSpam.cpp.o src/kvirc/CMakeFiles/kvirc.dir/sparser/KviIrcMessage.cpp.o src/kvirc/CMakeFiles/kvirc.dir/sparser/KviIrcServerParser_ctcp.cpp.o src/kvirc/CMakeFiles/kvirc.dir/sparser/KviIrcServerParser_literalHandlers.cpp.o src/kvirc/CMakeFiles/kvirc.dir/sparser/KviIrcServerParser_numericHandlers.cpp.o src/kvirc/CMakeFiles/kvirc.dir/sparser/KviIrcServerParser_tables.cpp.o src/kvirc/CMakeFiles/kvirc.dir/sparser/KviIrcServerParser.cpp.o src/kvirc/CMakeFiles/kvirc.dir/module/KviMexLinkFilter.cpp.o src/kvirc/CMakeFiles/kvirc.dir/module/KviMexServerImport.cpp.o src/kvirc/CMakeFiles/kvirc.dir/module/KviMexToolBar.cpp.o src/kvirc/CMakeFiles/kvirc.dir/module/KviModule.cpp.o src/kvirc/CMakeFiles/kvirc.dir/module/KviModuleExtension.cpp.o src/kvirc/CMakeFiles/kvirc.dir/module/KviModuleManager.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvs.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsAction.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsAliasManager.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsArray.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsArrayCast.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsAsyncDnsOperation.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsAsyncOperation.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsCallbackObject.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsCoreCallbackCommands.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsCoreFunctions.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsCoreFunctions_af.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsCoreFunctions_gl.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsCoreFunctions_mr.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsCoreFunctions_sz.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsCoreSimpleCommands.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsCoreSimpleCommands_af.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsCoreSimpleCommands_gl.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsCoreSimpleCommands_mr.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsCoreSimpleCommands_sz.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsDnsManager.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsHash.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsKernel.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsModuleInterface.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsParameterProcessor.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsPopupManager.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsPopupMenu.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsProcessManager.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsReport.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsRunTimeCall.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsRunTimeContext.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsRWEvaluationResult.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsScript.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsScriptAddonManager.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsSwitchList.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsTimerManager.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsUserAction.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsVariant.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/KviKvsVariantList.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/event/KviKvsEvent.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/event/KviKvsEventHandler.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/event/KviKvsEventManager.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/event/KviKvsEventTable.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/object/KviKvsObject.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/object/KviKvsObjectClass.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/object/KviKvsObjectController.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/object/KviKvsObjectFunctionCall.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/object/KviKvsObjectFunctionHandler.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/object/KviKvsObjectFunctionHandlerImpl.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/parser/KviKvsParser.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/parser/KviKvsParser_command.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/parser/KviKvsParser_comment.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/parser/KviKvsParser_dollar.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/parser/KviKvsParser_expression.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/parser/KviKvsParser_lside.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/parser/KviKvsParser_specialCommands.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeAliasFunctionCall.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeAliasSimpleCommand.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeArrayCount.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeArrayElement.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeArrayOrHashElement.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeArrayReferenceAssert.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeBase.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeBaseObjectFunctionCall.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeCallbackCommand.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeCommand.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeCommandEvaluation.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeCommandWithParameters.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeCompositeData.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeConstantData.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeCoreCallbackCommand.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeCoreFunctionCall.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeCoreSimpleCommand.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeData.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeDataList.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeExpression.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeExpressionReturn.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeExtendedScopeVariable.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeFunctionCall.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeGlobalVariable.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeHashCount.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeHashElement.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeHashReferenceAssert.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeIndirectData.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeInstruction.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeInstructionBlock.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeLocalVariable.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeModuleCallbackCommand.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeModuleFunctionCall.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeModuleSimpleCommand.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeMultipleParameterIdentifier.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeObjectField.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeObjectFunctionCall.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeOperation.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeParameterCount.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeParameterReturn.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeRebindingSwitch.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeScopeOperator.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeSimpleCommand.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeSingleParameterIdentifier.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeSpecialCommand.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeSpecialCommandBreak.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeSpecialCommandClass.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeSpecialCommandContinue.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeSpecialCommandDefpopup.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeSpecialCommandDo.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeSpecialCommandFor.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeSpecialCommandForeach.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeSpecialCommandIf.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeSpecialCommandSwitch.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeSpecialCommandUnset.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeSpecialCommandWhile.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeStringCase.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeSwitchList.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeThisObjectFunctionCall.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeVariable.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kvs/tree/KviKvsTreeNodeVoidFunctionCall.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviAction.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviActionManager.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviApplication.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviApplication_filesystem.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviApplication_setup.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviAsynchronousConnectionData.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviCoreActions.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviCustomToolBarDescriptor.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviCustomToolBarManager.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviDefaultScript.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviFileTransfer.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviHtmlGenerator.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIconManager.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviInternalCommand.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIpcSentinel.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIrcConnection.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIrcConnectionAntiCtcpFloodData.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIrcConnectionAsyncWhoisData.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIrcConnectionNetsplitDetectorData.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIrcConnectionRequestQueue.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIrcConnectionServerInfo.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIrcConnectionStateData.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIrcConnectionStatistics.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIrcConnectionTarget.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIrcConnectionTargetResolver.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIrcConnectionUserInfo.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIrcContext.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIrcDataStreamMonitor.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIrcLink.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIrcSocket.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviIrcUrl.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviLagMeter.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviMain.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviNotifyList.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviOptions.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviSSLMaster.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviTextIconManager.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviTheme.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviUserAction.cpp.o src/kvirc/CMakeFiles/kvirc.dir/kernel/KviUserInput.cpp.o -o src/kvirc/kvirc  -Wl,-rpath,/tmp/work/usr/ports/irc/kvirc/work/.build/src/kvilib:/usr/local/lib:/usr/local/lib/qt5:  src/kvilib/libkvilib.so.5.2.2  /usr/lib/libz.so  /usr/local/lib/libKF5Notifications.so.5.115.0  /usr/local/lib/libKF5Parts.so.5.115.0  /usr/local/lib/libXss.so  /usr/local/lib/libSM.so  /usr/local/lib/libICE.so  /usr/local/lib/libX11.so  /usr/local/lib/libXext.so  /usr/local/lib/libXrender.so  /usr/local/lib/libphonon4qt5.so.4.12.0  /usr/local/lib/libaudiofile.so  /usr/lib/libssl.so  /usr/lib/libcrypto.so  -L/usr/local/lib  -lenchant-2  /usr/local/lib/libtheoraenc.so  /usr/local/lib/libtheoradec.so  /usr/local/lib/libogg.so  /usr/local/lib/libvorbis.so  /usr/local/lib/libvorbisenc.so  /usr/local/lib/qt5/libQt5WebEngineWidgets.so.5.15.16  /usr/local/lib/libKF5XmlGui.so.5.115.0  /usr/local/lib/libKF5KIOWidgets.so.5.115.0  /usr/local/lib/libKF5KIOGui.so.5.115.0  /usr/local/lib/libKF5WindowSystem.so.5.115.0  /usr/local/lib/libX11.so  /usr/local/lib/libKF5KIOCore.so.5.115.0  /usr/local/lib/libKF5Service.so.5.115.0  /usr/local/lib/libKF5JobWidgets.so.5.115.0  /usr/local/lib/libKF5Solid.so.5.115.0  /usr/local/lib/libKF5TextWidgets.so.5.115.0  /usr/local/lib/libKF5ConfigWidgets.so.5.115.0  /usr/local/lib/libKF5I18n.so.5.115.0  /usr/local/lib/libKF5Codecs.so.5.115.0  /usr/local/lib/libKF5Auth.so.5.115.0  /usr/local/lib/libKF5AuthCore.so.5.115.0  /usr/local/lib/libKF5CoreAddons.so.5.115.0  /usr/local/lib/libKF5Completion.so.5.115.0  /usr/local/lib/libKF5WidgetsAddons.so.5.115.0  /usr/local/lib/libKF5ConfigGui.so.5.115.0  /usr/local/lib/libKF5ConfigCore.so.5.115.0  /usr/local/lib/libKF5SonnetUi.so.5.115.0  /usr/local/lib/qt5/libQt5Sql.so.5.15.13  /usr/local/lib/qt5/libQt5Xml.so.5.15.13  /usr/local/lib/qt5/libQt5Concurrent.so.5.15.13  /usr/local/lib/qt5/libQt5DBus.so.5.15.13  /usr/local/lib/qt5/libQt5PrintSupport.so.5.15.13  /usr/local/lib/qt5/libQt5WebEngineCore.so.5.15.16  /usr/local/lib/qt5/libQt5WebChannel.so.5.15.13  /usr/local/lib/qt5/libQt5Positioning.so.5.15.13  /usr/local/lib/qt5/libQt5Quick.so.5.15.13  /usr/local/lib/qt5/libQt5QmlModels.so.5.15.13  /usr/local/lib/qt5/libQt5Qml.so.5.15.13  /usr/local/lib/qt5/libQt5Svg.so.5.15.13  /usr/local/lib/qt5/libQt5X11Extras.so.5.15.13  /usr/local/lib/qt5/libQt5MultimediaWidgets.so.5.15.13  /usr/local/lib/qt5/libQt5Widgets.so.5.15.13  /usr/local/lib/qt5/libQt5Multimedia.so.5.15.13  /usr/local/lib/qt5/libQt5Gui.so.5.15.13  /usr/local/lib/qt5/libQt5Network.so.5.15.13  /usr/local/lib/qt5/libQt5Core.so.5.15.13  -Wl,-rpath-link,/usr/local/lib && cd /tmp/work/usr/ports/irc/kvirc/work/.build/src/kvirc && /usr/local/bin/strip /tmp/work/usr/ports/irc/kvirc/work/.build/src/kvirc/kvirc
    ld: error: undefined reference due to --no-allow-shlib-undefined: pthread_create
    >>> referenced by src/kvilib/libkvilib.so.5.2.2
    c++: error: linker command failed with exit code 1 (use -v to see invocation)
    ninja: build stopped: subcommand failed.

    Patch:

    --- src/kvilib/CMakeLists.txt.orig
    +++ src/kvilib/CMakeLists.txt
    @@ -130,6 +130,7 @@ endif()
    
    add_library(${KVILIB_BINARYNAME} SHARED ${kvilib_SRCS} ${kvilib_MOC_SRCS})
    target_link_libraries(${KVILIB_BINARYNAME} ${LIBS} ${qt_kvirc_modules})
    +target_link_libraries(${KVILIB_BINARYNAME} Threads::Threads)
    
    # Enable C++17
    target_compile_features(${KVILIB_BINARYNAME} PUBLIC cxx_std_17)

    Maybe it's specific for FreeBSD (13.3-p2 amd64) and better use this patch:

    
    --- src/kvirc/CMakeLists.txt.orig
    +++ src/kvirc/CMakeLists.txt
    @@ -280,6 +280,7 @@ endif()
    
    if(CMAKE_HOST_SYSTEM MATCHES "FreeBSD")
        set_target_properties(${KVIRC_BINARYNAME} PROPERTIES LINK_FLAGS -Wl,-export-dynamic)
    +       target_link_libraries(${KVILIB_BINARYNAME} Threads::Threads)
        message(STATUS "Patching for FreeBSD...")
    endif()
or

--- src/kvilib/CMakeLists.txt.orig +++ src/kvilib/CMakeLists.txt @@ -130,6 +130,10 @@ endif()

add_library(${KVILIB_BINARYNAME} SHARED ${kvilib_SRCS} ${kvilib_MOC_SRCS}) target_link_libraries(${KVILIB_BINARYNAME} ${LIBS} ${qt_kvirc_modules}) +if(CMAKE_HOST_SYSTEM MATCHES "FreeBSD")

VVD commented 2 months ago
  1. Question: with option -DWANT_KDE:BOOL=TRUE kvirc linked with qt5-dbus even if set -DWANT_QTDBUS:BOOL=FALSE - is it bug or feature or environment specific behavior?
VVD commented 2 months ago

@ctrlaltca, thanks!

ctrlaltca commented 2 months ago

5. Question: with option -DWANT_KDE:BOOL=TRUE kvirc linked with qt5-dbus even if set -DWANT_QTDBUS:BOOL=FALSE - is it bug or feature or environment specific behavior?

@VVD : if i get it correctly, the dependency comes from Qt5Gui that needs it: https://www.freshports.org/x11-toolkits/qt5-gui . Possibly some KDE libs explicitly adds it to the linked libraries.

VVD commented 2 months ago
  1. Question: with option -DWANT_KDE:BOOL=TRUE kvirc linked with qt5-dbus even if set -DWANT_QTDBUS:BOOL=FALSE - is it bug or feature or environment specific behavior?

@VVD : if i get it correctly, the dependency comes from Qt5Gui that needs it: https://www.freshports.org/x11-toolkits/qt5-gui . Possibly some KDE libs explicitly adds it to the linked libraries.

Weird: if build with -DWANT_KDE:BOOL=FALSE and -DWANT_QTDBUS:BOOL=FALSE then it isn't linked with qt5-dbus.

VVD commented 2 months ago

Thanks!