# CMakeLists.txt for src/kvilib/ include_directories( config core ext file irc locale net system ) # Please note that the sources have alphabetic order here set(kvilib_SRCS config/KviBuildInfo.cpp core/KviError.cpp core/KviHeapObject.cpp core/KviMemory.cpp core/KviQString.cpp core/KviCString.cpp core/KviShortcut.cpp ext/KviCommandFormatter.cpp ext/KviConfigurationFile.cpp ext/KviCryptEngine.cpp ext/KviCryptEngineManager.cpp ext/KviDataBuffer.cpp ext/KviDebugContext.cpp ext/KviMediaManager.cpp ext/KviMiscUtils.cpp ext/KviMessageTypeSettings.cpp ext/KviPixmap.cpp ext/KviPixmapUtils.cpp ext/KviAnimatedPixmap.cpp ext/KviAnimatedPixmapCache.cpp ext/KviNickColors.cpp ext/KviProxy.cpp ext/KviProxyDataBase.cpp ext/KviRegExp.cpp ext/KviRegisteredChannel.cpp ext/KviRegisteredChannelDataBase.cpp ext/KviRegisteredUser.cpp ext/KviRegisteredUserDataBase.cpp ext/KviRegisteredUserGroup.cpp ext/KviRegisteredUserMask.cpp ext/KviRuntimeInfo.cpp ext/KviSharedFile.cpp ext/KviSharedFilesManager.cpp ext/KviStringConversion.cpp file/KviFile.cpp file/KviFileUtils.cpp file/KviPackageIOEngine.cpp file/KviPackageReader.cpp file/KviPackageWriter.cpp irc/KviAvatar.cpp irc/KviAvatarCache.cpp irc/KviControlCodes.cpp irc/KviIdentityProfile.cpp irc/KviIdentityProfileSet.cpp irc/KviIrcMask.cpp irc/KviIrcNetwork.cpp irc/KviIrcServer.cpp irc/KviIrcServerDataBase.cpp irc/KviIrcUserDataBase.cpp irc/KviIrcUserEntry.cpp irc/KviNickServRule.cpp irc/KviNickServRuleSet.cpp irc/KviUserIdentity.cpp irc/KviUserIdentityManager.cpp locale/KviLocale.cpp locale/KviMessageCatalogue.cpp locale/KviTranslationEntry.cpp locale/KviTranslator.cpp net/KviDnsResolver.cpp net/KviHttpRequest.cpp net/KviNetUtils.cpp net/KviNetworkAccessManager.cpp net/KviSASL.cpp net/kvi_socket.cpp net/KviSSL.cpp net/KviUrl.cpp system/KviEnvironment.cpp system/KviSignalHandler.cpp system/KviThread.cpp system/KviTimeUtils.cpp tal/KviTalApplication.cpp tal/KviTalFileDialog.cpp tal/KviTalGroupBox.cpp tal/KviTalHBox.cpp tal/KviTalIconAndRichTextItemDelegate.cpp tal/KviTalListWidget.cpp tal/KviTalMainWindow.cpp tal/KviTalMenuBar.cpp tal/KviTalSplitter.cpp tal/KviTalTabDialog.cpp tal/KviTalTableWidget.cpp tal/KviTalToolTip.cpp tal/KviTalVBox.cpp tal/KviTalWizard.cpp ) if(NOT DEFINED COMPILE_DISABLE_OGG_THEORA) list(APPEND kvilib_SRCS ext/KviOggTheoraDecoder.cpp ext/KviOggTheoraEncoder.cpp ) endif() # Create library if(WANT_COEXISTENCE) set(KVILIB_BINARYNAME kvilib${VERSION_MAJOR}) else() set(KVILIB_BINARYNAME kvilib) endif() #we need this defined when mingw will compile moc files if(WIN32) add_definitions(-D_WANT_KVILIB_) endif() if(MSVC) list(APPEND LIBS ws2_32.lib) endif() if(MINGW) list(APPEND LIBS -lws2_32) endif() add_library(${KVILIB_BINARYNAME} SHARED ${kvilib_SRCS} ${kvilib_MOC_SRCS}) target_link_libraries(${KVILIB_BINARYNAME} ${LIBS} ${qt_kvirc_modules}) # Enable C++17 target_compile_features(${KVILIB_BINARYNAME} PUBLIC cxx_std_17) set_target_properties(${KVILIB_BINARYNAME} PROPERTIES VERSION ${VERSION_RELEASE} SOVERSION ${VERSION_MAJOR} LINK_FLAGS "${ADDITIONAL_LINK_FLAGS}") if(WANT_STRIP) IF(APPLE) add_custom_command( TARGET ${KVILIB_BINARYNAME} POST_BUILD COMMAND ${STRIP_EXECUTABLE} -x $ ) ELSE() add_custom_command( TARGET ${KVILIB_BINARYNAME} POST_BUILD COMMAND ${STRIP_EXECUTABLE} -s $ ) ENDIF() endif() # Installation directives if(CYGWIN) install(TARGETS ${KVILIB_BINARYNAME} LIBRARY DESTINATION "${KVIRC_LIB_PATH}" RUNTIME DESTINATION "${KVIRC_LIB_PATH}") elseif(UNIX) install(TARGETS ${KVILIB_BINARYNAME} LIBRARY DESTINATION "${KVIRC_LIB_PATH}") elseif(WIN32) # For DLL platforms the DLL part of a shared library is treated as a RUNTIME target and the corresponding import library is treated as an ARCHIVE target install(TARGETS ${KVILIB_BINARYNAME} RUNTIME DESTINATION "${KVIRC_LIB_PATH}") if(MSVC) install(FILES $ DESTINATION ${KVIRC_LIB_PATH} OPTIONAL) endif() endif()