...
 
Commits (307)
image: kdeneon/plasma:dev-unstable
variables:
BUILD_DIR: "/tmp/build-kbibtex"
INSTALL_DIR: "/tmp/usr"
KDEDIRS: "/usr:$INSTALL_DIR"
LD_LIBRARY_PATH: "$INSTALL_DIR/lib"
QT_ASSUME_STDERR_HAS_CONSOLE: 1
QT_DEPRECATED_WARNINGS: 1
QT_DISABLE_DEPRECATED: 0x050C00
QT_MESSAGE_PATTERN: "[%{type}] %{appname} (%{file}:%{line}) - %{message}"
QT_PLUGIN_PATH: "$INSTALL_DIR/lib/plugins/"
XDG_CACHE_HOME: "$INSTALL_DIR/home/cache"
XDG_CONFIG_HOME: "$INSTALL_DIR/home/config"
XDG_DATA_DIRS: "/usr/share:/usr/local/share:$INSTALL_DIR/share"
XDG_DATA_HOME: "$INSTALL_DIR/home/data"
TESTSET_DIR: "/tmp/kbibtex-testset"
COVERITYSCAN_USR_DIR: "/tmp/coverity-scan-usr"
COVERITYSCAN_OUTPUT_DIR: "/tmp/coverity-scan-output"
COVERITYSCAN_COVINT_TARBALL: "/tmp/cov-scan.tar.gz"
COVERITYSCAN_VERSION: "2019.03"
before_script:
- sudo apt-get update -qq
- sudo apt-get install -y -qq cmake ninja-build build-essential extra-cmake-modules libqt5xmlpatterns5-dev libqt5networkauth5-dev libqt5test5 libqt5webenginewidgets5 libqt5webkit5 libkf5i18n-dev libkf5xmlgui-dev libkf5kio-dev libkf5iconthemes-dev libkf5itemviews-dev libkf5completion-dev libkf5parts-dev libkf5coreaddons-dev libkf5service-dev libkf5wallet-dev libkf5crash-dev libkf5doctools-dev libkf5texteditor-dev libkf5syntaxhighlighting-dev libpoppler-qt5-dev gettext libicu-dev libqca-qt5-2-dev git
automated-tests:
script:
- mkdir -p $(dirname $TESTSET_DIR) && cd $(dirname $TESTSET_DIR) && git clone --depth 1 "https://anongit.kde.org/kbibtex-testset.git" $(basename $TESTSET_DIR)
- mkdir -p $BUILD_DIR/$CI_JOB_NAME && cd $BUILD_DIR/$CI_JOB_NAME
- cmake -GNinja -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_DIR -DBUILD_TESTING:BOOL=ON -DTESTSET_DIRECTORY:PATH=$TESTSET_DIR $CI_PROJECT_DIR
- ninja
- ninja install
- cd $BUILD_DIR/$CI_JOB_NAME/bin/
- ./kbibtexiotest -platform offscreen
- ./kbibtexdatatest -platform offscreen
- ./kbibtexfilestest -platform offscreen
- ./kbibtexnetworkingtest -platform offscreen
coverity-scan:
rules:
- if: $COVERITYSCAN_TOKEN != null
script:
- mkdir -p $COVERITYSCAN_USR_DIR $COVERITYSCAN_OUTPUT_DIR/cov-int
- wget --no-check-certificate --post-data "project=KBibTeX&token="$COVERITYSCAN_TOKEN https://scan.coverity.com/download/cxx/linux64 -O - | tar -zxv -C $COVERITYSCAN_USR_DIR
- mkdir -p $BUILD_DIR/$CI_JOB_NAME && cd $BUILD_DIR/$CI_JOB_NAME
- cmake -GNinja -DCMAKE_BUILD_TYPE=debug -DCMAKE_INSTALL_PREFIX:PATH=$INSTALL_DIR -DBUILD_TESTING:BOOL=OFF $CI_PROJECT_DIR
- ninja clean
- $COVERITYSCAN_USR_DIR/cov-analysis-linux64-$COVERITYSCAN_VERSION/bin/cov-build --dir $COVERITYSCAN_OUTPUT_DIR/cov-int ninja
- tar -cavf $COVERITYSCAN_COVINT_TARBALL -C $COVERITYSCAN_OUTPUT_DIR cov-int
- curl --insecure --verbose --progress-bar --form "token="$COVERITYSCAN_TOKEN --form "email=fischer@unix-ag.uni-kl.de" --form "file=@"$COVERITYSCAN_COVINT_TARBALL --form "version=GitLab" --form "description=Automatically built on GitLab" "https://scan.coverity.com/builds?project=KBibTeX"
cmake_minimum_required(VERSION 3.7.2)
if(POLICY CMP0048)
cmake_policy(SET CMP0048 NEW)
endif(POLICY CMP0048)
project(
kbibtex
VERSION "0.8.90"
)
cmake_minimum_required(
VERSION
3.2.0
FATAL_ERROR
VERSION 0.9.90
LANGUAGES CXX
)
set(
QT_MIN_VERSION "5.6.0"
)
set(
KF5_MIN_VERSION "5.26.0"
)
find_package(ECM 5.19 REQUIRED NO_MODULE)
add_definitions(
-DTRANSLATION_DOMAIN="kbibtex"
-DHAVE_QTWIDGETS
-DHAVE_KF5
-DHAVE_ICU
)
set(CMAKE_CXX_STANDARD 11)
set(QT_MIN_VERSION 5.9.0)
# Somewhat arbitrary chosen version number ...
set(KF5_MIN_VERSION 5.51)
find_package(ECM ${KF5_MIN_VERSION} REQUIRED NO_MODULE)
set(
CMAKE_MODULE_PATH
${CMAKE_SOURCE_DIR}/cmake/modules
${ECM_MODULE_PATH}
${ECM_KDE_MODULE_DIR}
${CMAKE_MODULE_PATH}
)
set(KDE_INSTALL_DIRS_NO_DEPRECATED TRUE)
include(KDEInstallDirs)
include(KDECompilerSettings NO_POLICY_SCOPE)
include(KDECMakeSettings)
include(ECMGenerateHeaders)
include(ECMInstallIcons)
include(ECMSetupVersion)
include(ECMAddAppIcon)
include(GenerateExportHeader)
find_package(
Qt5 ${QT_MIN_VERSION}
CONFIG
REQUIRED
Core
Widgets
Network
XmlPatterns
Concurrent
)
if (MSVC)
MESSAGE( STATUS "Disabling building tests when using Microsoft Visual Studio C++ compiler" )
# Note to any developer: Try to enable building tests and see which issues you may encounter.
# Examples may include: (1) char* texts which exceed the size limit supported by MSVC which
# is about 2^16 bytes and (2) characters in strings written in \uXXXX notation not supported
# in 1252 encoding as assumed by MSVC for C++ source files.
SET(BUILD_TESTING OFF)
endif (MSVC)
if(
BUILD_TESTING
)
add_definitions(-DBUILD_TESTING)
find_package(
Qt5Test ${QT_MIN_VERSION}
CONFIG
REQUIRED
)
if (WRITE_RAWDATAFILE)
add_definitions(-DWRITE_RAWDATAFILE)
endif(WRITE_RAWDATAFILE)
set(
TESTSET_DIRECTORY ""
CACHE PATH
"Directory where the local checkout of Git repository 'kbibtex-testset' is located"
)
endif(
BUILD_TESTING
)
find_package(
Qt5WebEngineWidgets ${QT_MIN_VERSION}
QUIET
CONFIG
)
find_package(
Qt5WebKitWidgets ${QT_MIN_VERSION}
QUIET
CONFIG
)
find_package(
KF5 ${KF5_MIN_VERSION}
REQUIRED
I18n
XmlGui
KIO
IconThemes
ItemViews
Completion
Parts
CoreAddons
Service
Wallet
Crash
)
find_package(KF5DocTools)
find_package(KF5TextEditor NO_MODULE)
include(ECMQtDeclareLoggingCategory)
ecm_setup_version(
PROJECT
VARIABLE_PREFIX KBIBTEX
SOVERSION ${KBIBTEX_VERSION_MAJOR}
VERSION_HEADER "${CMAKE_CURRENT_BINARY_DIR}/kbibtex-version.h"
VERSION_HEADER "${CMAKE_BINARY_DIR}/kbibtex-version.h"
PACKAGE_VERSION_FILE "${CMAKE_BINARY_DIR}/KBibTeXConfigVersion.cmake"
)
install(
FILES ${CMAKE_BINARY_DIR}/kbibtex-version.h
DESTINATION ${KDE_INSTALL_INCLUDEDIR}/KBibTeX
# FIXME is "Devel" standard?
COMPONENT Devel
)
if("${KBIBTEX_VERSION_PATCH}" STREQUAL "")
# Patch level is not set for version numbers like "0.9",
# so set the patch level manually to 0
set(KBIBTEX_VERSION_PATCH 0)
endif()
if((${KBIBTEX_VERSION_PATCH} GREATER 50) OR (${KBIBTEX_VERSION_PATCH} EQUAL 50))
# If the version number indicates a pre-release version such as
# '0.7.90', i.e. a beta version for the major release 0.8,
......@@ -137,11 +64,11 @@ if((${KBIBTEX_VERSION_PATCH} GREATER 50) OR (${KBIBTEX_VERSION_PATCH} EQUAL 50))
set(
KBIBTEX_RELEASE_VERSION ${KBIBTEX_VERSION_MAJOR}.${KBIBTEX_RELEASE_VERSION_MINOR}
)
else((${KBIBTEX_VERSION_PATCH} GREATER 50) OR (${KBIBTEX_VERSION_PATCH} EQUAL 50))
else()
set(
KBIBTEX_RELEASE_VERSION ${KBIBTEX_VERSION_MAJOR}.${KBIBTEX_VERSION_MINOR}
)
endif((${KBIBTEX_VERSION_PATCH} GREATER 50) OR (${KBIBTEX_VERSION_PATCH} EQUAL 50))
endif()
option(
UNITY_BUILD
......@@ -153,81 +80,107 @@ else(UNITY_BUILD)
message(STATUS "Unity build disabled (default), use option UNITY_BUILD to enable it")
endif(UNITY_BUILD)
# # FIXME may have to be cleaned up a little bit
# # Contributed by Jeremy Cribb <cribb.jeremy@gmail.com>
# if(
# APPLE
# )
# find_library(
# SYS_CONFIG_LIBRARY
# SystemConfiguration
# )
# mark_as_advanced(
# SYS_CONFIG_LIBRARY
# )
# # SET(TARGET_EXTERNAL_LIBRARIES iconv ${SYS_CONFIG_LIBRARY})
# set(
# ICONV_INCLUDE_DIR
# "/opt/local/include"
# )
# set(
# ICONV_LIBRARIES
# "/opt/local/lib/libiconv.dylib"
# )
# set(
# LIBXSLT_LIBRARIES
# "/opt/local/lib/libxslt.dylib"
# )
# endif(
# APPLE
# )
find_package(
Qt5 ${QT_MIN_VERSION}
CONFIG
COMPONENTS
Core
Widgets
Network
XmlPatterns
Concurrent
NetworkAuth
OPTIONAL_COMPONENTS
WebEngineWidgets
WebKitWidgets
Test
)
add_definitions(-DHAVE_QTWIDGETS)
if(Qt5WebEngineWidgets_FOUND)
# Once CMake 3.12.x is minimum requirement, use 'add_compile_definitions'
add_definitions(
-DHAVE_WEBENGINEWIDGETS
)
endif()
find_package(
KF5 ${KF5_MIN_VERSION}
MODULE
REQUIRED
I18n
XmlGui
KIO
IconThemes
Parts
CoreAddons
Service
Wallet
Crash
TextEditor
OPTIONAL_COMPONENTS
DocTools
)
add_definitions(-DHAVE_KF5)
find_package(
Poppler
MODULE
REQUIRED
COMPONENTS
Qt5
)
find_package(
ICU
REQUIRED
COMPONENTS uc i18n
MODULE
OPTIONAL_COMPONENTS
uc i18n
)
if(
ICU_FOUND
if(ICU_FOUND)
add_definitions(-DHAVE_ICU)
endif()
option(
BUILD_TESTING
"Build automated and interactive tests"
OFF
)
message(
STATUS
"Found ICU " ${ICU_VERSION}
if (MSVC)
MESSAGE( STATUS "Disabling building tests when using Microsoft Visual Studio C++ compiler" )
# Note to any developer: Try to enable building tests and see which issues you may encounter.
# Examples may include: (1) char* texts which exceed the size limit supported by MSVC which
# is about 2^16 bytes and (2) characters in strings written in \uXXXX notation not supported
# in 1252 encoding as assumed by MSVC for C++ source files.
set(BUILD_TESTING OFF)
endif()
if(NOT BUILD_TESTING AND Qt5Test_FOUND)
message(STATUS
"Testing is disabled, but can be enabled as the Qt5::Test library is available"
)
include_directories(${ICU_INCLUDE_DIRS})
endif(
ICU_FOUND
)
endif()
if(BUILD_TESTING AND NOT Qt5Test_FOUND)
message(STATUS
"Disabling building tests as Qt5::Test library is not available"
)
set(BUILD_TESTING OFF)
endif()
find_package(
Qca-qt5 "2.1.0"
)
find_package(
QtOAuth
)
if (Qca-qt5_FOUND AND QTOAUTH_FOUND)
message(STATUS "Found Qca-qt5 " ${Qca-qt5_VERSION} " and QtOAuth")
add_definitions(-DHAVE_ZOTERO=1)
set(BUILD_ZOTERO ON)
else(Qca-qt5_FOUND AND QTOAUTH_FOUND)
message(STATUS "No Qca-qt5 or no QtOAuth, disabling certain functionality")
set(BUILD_ZOTERO OFF)
endif(Qca-qt5_FOUND AND QTOAUTH_FOUND)
# Make an educated guess where to find headers for QCA-Qt5
# TODO isn't there an "official" way to determine this directory?
find_path(
QTCRYPTO_INCLUDE_DIR qca.h
HINTS ENV ${Qt5Core_INCLUDE_DIRS} ENV ${QT_INCLUDES}
PATH_SUFFIXES QtCrypto
)
if(BUILD_TESTING)
if (WRITE_RAWDATAFILE)
add_definitions(-DWRITE_RAWDATAFILE)
endif(WRITE_RAWDATAFILE)
set(
TESTSET_DIRECTORY ""
CACHE PATH
"Directory where the local checkout of Git repository 'kbibtex-testset' is located"
)
endif()
if(TESTSET_DIRECTORY AND ( NOT EXISTS "${TESTSET_DIRECTORY}/bib/minix.bib" OR NOT EXISTS "${TESTSET_DIRECTORY}/bib/backslash.bib" ))
message("Variable TESTSET_DIRECTORY is set to '${TESTSET_DIRECTORY}' but various BibTeX files were not found. Unsetting TESTSET_DIRECTORY.")
unset(TESTSET_DIRECTORY)
unset(TESTSET_DIRECTORY CACHE)
endif()
add_subdirectory(
......@@ -249,4 +202,10 @@ endif()
# po
# )
if (ECM_VERSION VERSION_GREATER_EQUAL "5.59.0")
install(FILES kbibtex.categories DESTINATION ${KDE_INSTALL_LOGGINGCATEGORIESDIR})
else()
install(FILES kbibtex.categories DESTINATION ${KDE_INSTALL_CONFDIR})
endif()
feature_summary(WHAT ALL INCLUDE_QUIET_PACKAGES FATAL_ON_MISSING_REQUIRED_PACKAGES)
ChangeLog
Diff 0.9.2 to 0.10
- New online search: Semantic Scholar
- Fixing and revamping ACM's Digital Library (a.k.a. ACM Portal) online search
- Refactoring NSA ADS to use official API
- Use Qt's own QOAuth1 class instead of external library QOAuth
- Providing .gitlab-ci.yml to enable continuous integration at GitLab
(see https://gitlab.com/tfischer/kbibtex-ci/pipelines)
- Greatly refactoring and modernizing CMakeLists.txt files, generation of camel-case
headers, private/public linking to libraries, ...
- Tabs in the entry editor can show short messages to use, e.g. in which tab DOIs or URLs
are to be entered
- Updating BibSearch code: cover page improved, preparing code for translations,
adding progress bar
- Refactoring most regular 'enum's to become 'enum class'es
- Preferences class greatly refactored: Based on JSON description, a Python script will
generate a C++ class/header pair providing all necessary functions and enums
- Cleaning header includes and include guards
- Preferring Qt classes over KDE counterparts, e.g. KLineEdit -> QLineEdit
or KComboBox -> QComboBox
- Migrating many old-style casts like '(int)' to new-style casts like 'static_cast<..>(..)'
- Fixing missing <bibliography> tag in XML export
- Fixing UI issues with ColorLabelWidget
- Preferring QSignalBlocker over manually temporarily disconnecting/disabling signals
- Refactoring QSignalMapper into many small lambda-based 'connect's
- Refactoring small slot functions into lambda functions
- Using KRatingPainter instead of home-made StarRating's paint function
- Various improvements and refactoring when (PDF) files get associated with an entry
- KDE Bug 424033: Can't associate a file with a relative path without having the file copied
- Having ICU as an optional dependency only, provide internal, static translation from
Basic Multilingual Plane (BMP) characters to ASCII-only representations
- Adding and extending numerous automated tests
- Code modernizations such as using QFontMetrics' 'horizontalAdvance(..)'
instead of 'width(..)'
- Using QUrl's 'isValid()' instead of 'isEmpty()'
- Cleaner code, e.g. using std::numeric_limits<int>::max() instead of magic constant
0x00ffffff
- QDebug output uses categories consistently
- KDE Bug 421612: When suggesting entry ids, do not count 'small words'
- Across classes, moving code into private subclasses to minimize public interface
- Updating translations (contributions by various authors)
- Numerous other fixes, clean-ups, refactoring, ...
- KDE Bug 423976: When formatting IDs, non-word characters should be used as word separators
- KDE Bug 426856: File encoding is not always stored
- KDE Bug 379443: Slowdown when loading citation with many authors
- KDE Bug 433005: Cannot unselect entry list view columns in BibLaTeX mode
Diff 0.9.1 to 0.9.2
- Updating favicon URLs
- KDE Bug 409281: (PDF) files associated with newly saved bibliography files can only be
associated with absolute URLs, not relative URLs as should be possible
- KDE Bug 414375, 414385: Fixing potential crash due to defining TRANSLATION_DOMAIN
- KDE Bug 414195: Deselecting all fields on BibTeX Viewer hides the field sorting header
- KDE Bug 417164: File URLs passed by command line preceed over LRU
- KDE Bug 401553: View documents containing question mark characters
- Fix bug preventing editing of comments
- KDE Bug 417210: Edit Element dialog closes without confirming, possibly losing edits
Diff 0.9 to 0.9.1
- Fixing GUI issues in preferences/settings
- Fixing id extraction during duplicate search
- Various minor fixes
Diff 0.8.2 to 0.9
- Can be compiled under Windows via Craft
......@@ -7,20 +72,25 @@ Diff 0.8.2 to 0.9
(Sailfish OS only as of now)
- Refactoring of id suggestion editor
- Making building Zotero support compile-time optional
- Internal refactoring of singleton variables and configuration settings
- Internal refactoring of singleton variables and configuration
settings
- Adding considerable number of QtText-based tests
- Migrating from QRegExp to QRegularExpression class
- Using Kate's text editor component for BibTeX sources
- Validating user-entered BibTeX sources while typing
- More verbose diagnostics while loading BibTeX or RIS data
- Various bugfixes in Encoder and BibTeX import classes thanks to
improved automated tests
- Various small improvements for better robustness, performance, and
memory efficiency
- KDE Bug 392137: Make entry type (and more fields) available in entry id suggestion setup
- KDE Bug 392137: Make entry type (and more fields) available in entry
id suggestion setup
- KDE Bug 396597: BibLaTeX uses "file" instead of "localfile"
- KDE Bugs 405504/406692: Correct handling of ligatures like "st"
- Fixing resource leakage as identified by Coverity Scan:
CID 325572, 325573
- Integrating commits by Alexander Dunlap, Antonio Rojas, Erik Quaeghebeur,
Frederik Schwarzer, Pino Toscano, and Yuri Chornoivan
- Integrating commits by Alexander Dunlap, Antonio Rojas, Erik
Quaeghebeur, Frederik Schwarzer, Pino Toscano, and Yuri Chornoivan
Diff 0.8.1 to 0.8.2
......
......@@ -7,6 +7,9 @@
# QString translated = i18n(configGroup.readEntry("uiCaption", QString()).toUtf8().constData());
find config -name \*.kbstyle -exec sed -ne '/Label=\|uiLabel\|uiCaption/p' {} \; | sed 's/.*=\([A-Za-z\(\)\/].*\)/i18n("\1");/' >>rc.cpp
# Extract strings for infoMessages as well
find config -name \*.kbstyle -exec sed -ne '/infoMessage/p' {} \; | sed 's/\"/\\"/g' | sed 's/[^=]*=\([A-Za-z\(\)\/].*\)/i18n("\1");/' >>rc.cpp
# Taking instructions from
# http://techbase.kde.org/Development/Tutorials/Localization/i18n_Build_Systems
......
KBibTeX
=======
Copyright: 2004-2018 Thomas Fischer <fischer@unix-ag.uni-kl.de>
Author/Maintainer: Thomas Fischer <fischer@unix-ag.uni-kl.de>
Description
-----------
The program KBibTeX is a bibliography editor by KDE. Its main
purpose is to provide a user-friendly interface to BibTeX files.
Homepage
--------
Visit https://userbase.kde.org/KBibTeX for more information.
Dependencies
------------
KBibTeX makes heavily use of KDE Frameworks 5 and therefore Qt 5.
Furthermore a number of additional dependencies exist to, for
example, parse PDF or XML files.
In detail, the following dependencies exist:
* Compile time
- Qt 5.6 or later,
required components Core, Widgets, and Network
- KDE Frameworks 5.26 or later,
required components I18n, XmlGui, KIO, IconThemes, ItemViews,
Completion, Parts, CoreAddons, Service,
DocTools, Wallet, Crash,
and has helper package: extra-cmake-modules (ECM)
- libxml2 (any recent version should suffice)
- libxslt (any recent version should suffice)
- Poppler 0.32 or later with Qt5 bindings installed
- QCA 2.0 or later with Qt5 bindings installed
- ICU (any recent version should suffice),
required components uc and i18n
- QtOAuth 2.0 or later (OPTIONAL)
* Runtime
- BibUtils to import/export various bibliography formats
In case this list is incomplete, wrong, or out-dated, please file
a bug for KBibTeX at https://bugs.kde.org/
# KBibTeX
[![Screenshot of KBibTeX](https://userbase.kde.org/images.userbase/thumb/7/7f/20150602-kbibtex-kf5.png/320px-20150602-kbibtex-kf5.png)](https://userbase.kde.org/images.userbase/7/7f/20150602-kbibtex-kf5.png)
Copyright: 2004–2020 Thomas Fischer <fischer@unix-ag.uni-kl.de>
Author/Maintainer: Thomas Fischer <fischer@unix-ag.uni-kl.de>
## Description
The program KBibTeX is a bibliography editor by KDE. Its main
purpose is to provide a user-friendly interface to BibTeX files.
## Homepage
Visit [https://userbase.kde.org/KBibTeX]() for more information.
## Compiling the Code Yourself
The [development page](https://userbase.kde.org/KBibTeX/Development)
of KBibTeX explains some of the technical details on how to compile
and install KBibTeX itself and how its Git repository is structured.
In case you are impatient and want to have quick results, follow the
[Quick Start to Run KBibTeX from Git](https://userbase.kde.org/KBibTeX/Development#Quick_Start_to_Run_KBibTeX_from_Git) instructions.
## Reporting a Bug
KBibTeX makes use of KDE's own bug reporting system. You'll need
to create an account there to report bugs.
Please visit this page to report your bug or feature request:
[https://bugs.kde.org/enter_bug.cgi?product=KBibTeX]()
## Dependencies
KBibTeX makes heavily use of KDE Frameworks 5 and therefore Qt 5.
In detail, the following dependencies exist:
* Compile time
- Qt 5.9 or later,
required components: Core, Widgets, Network, XmlPatterns,
Concurrent, and NetworkAuth,
optionally either Qt5WebEngineWidgets or Qt5WebKitWidgets,
and Test
- KDE Frameworks 5.51 or later,
required components: I18n, XmlGui, KIO, IconThemes, ItemViews,
Parts, CoreAddons, Service, TextEditor,, DocTools, Wallet, Crash,
and has helper package: extra-cmake-modules (ECM)
- Poppler (any recent version should suffice) with Qt5 bindings,
- Optionally, ICU (any recent version should suffice),
required components: uc and i18n
* Runtime
- BibUtils to import/export various bibliography formats
- A TeX distribution including pdflatex, bibtex, ...
In case this list is incomplete, wrong, or out-dated, please file
a bug for KBibTeX at [https://bugs.kde.org/enter_bug.cgi?product=KBibTeX]().
INFO: This TODO list will most likely outdate very quickly
Within the scope of more future releases (0.6.x), the following
features and bugs are to be addressed:
- Consider "QScopedPointer" and "QPointer" for cleaner memory
management
- Look into QtConcurrent if it may be of use for KBibTeX
- Bug 21007: Make formatting, indentation, and capitalization
customizable when writing BibTeX files
- Bug 19750: Filter bar looks into every field including
localfile. Needs more information.
- Bug 19657: Add support for isbndb
- Bug 19516: Add spell-checking support
- Bug 18183: Increase number of search hits after initial
search is complete. Should be added before more search
engines are added
- Bug 18142: Library mode, where both bibliography and PDF
files are managed by KBibTeX.
- Bugs 17318, 18038: Zotero support, e.g. accessing the
bibliographic database or using its search capabilities.
Jorg Ehrichs is working on some code as part of the
Conquirere project; this code may be used here.
- Adding support for MODS XML format
- Bug 17893: Z39.50 support: At least basic support should
be integrated.
- Bug 18038: There is something called BrowserInterface.
Look into that
- Bug 20042: Create your own custom fields like in KDE3 version
- Bug 20090: Improved drag'n'drop support for PDF files
- Bug 20094: Rearrange items order manually
- Bug 21012: Element editor too large, resizing issues
More far future:
- Bug 19863: slow "author list generator"?
Due to generation of user interface. May need considerable
redesign in the future.
BibLaTeX-related:
- Bug 20928: Conversion of aliases in biblatex files
- Bug 20407: Dynamic crossref resolution
- Bug 18662: BibLaTeX support needs to be refined and tested.
Related Bug 20407: Dynamic crossref resolution using "xdata"
and "xref"
BibLaTeX amplifies bug 21012
Unconfirmed or need info:
- Bug 20922: list doesn't scroll down when browsing with cursor keys
- Bug 20798: Crash when opening kbibtex
- Bug 20732: KBibTeX doesn't remember its window width correctly
- Bug 20813: Selected entries are deleted
*INFO* This TODO list will most likely outdate _very_ quickly.
# General/High-Level Goals
* Migrate and consistently make use of more modern C++ features.
* First prepare (2020) and later migrate to Qt6 and KF6 (2021+).
## Code Maintenance
* Whenever making changes, the same commit should contain a ChangeLog
update, either by updating the ChangeLog file immediately or/and by
using a specially-crafted line in the Git commit message that allows
for automatic processing when preparing for a release.
* Whenever making changes, write automated tests that confirm that a
feature works as expected with known input/output or if a bug is
actually fixed.s
## Code Simplifications
_There are probably numerous places with issues like those listed below._
* Fix bug 356142: The complex file opening flow: need refactored?
## Continuous Integration and Non-Linux Operating Systems
* Make KBibTeX compile and run on operating systems which are not Linux
such as *BSD, Windows, or MacOS.
* Automatically build installers/packages for popular distributions or
operating systems by utilizing KDE's and third party CI infrastructure.
# User Interface
* Better support BibLaTeX and its numerous fields. This includes
re-designing and re-thinking the user interface and checking user input
for consistency (e.g. not all fields may be used at all time or there
may be dependencies/references between entries).
* Maintain/improve QML-based interfaces for SailfishOS and Kirigami.
# This module can find the International Components for Unicode (ICU) Library
#
# Requirements:
# - CMake >= 2.8.3 (for new version of find_package_handle_standard_args)
#
# The following variables will be defined for your use:
# - ICU_FOUND : were all of your specified components found (include dependencies)?
# - ICU_INCLUDE_DIRS : ICU include directory
# - ICU_LIBRARIES : ICU libraries
# - ICU_VERSION : complete version of ICU (x.y.z)
# - ICU_MAJOR_VERSION : major version of ICU
# - ICU_MINOR_VERSION : minor version of ICU
# - ICU_PATCH_VERSION : patch version of ICU
# - ICU_<COMPONENT>_FOUND : were <COMPONENT> found? (FALSE for non specified component if it is not a dependency)
#
# For windows or non standard installation, define ICU_ROOT variable to point to the root installation of ICU. Two ways:
# - run cmake with -DICU_ROOT=<PATH>
# - define an environment variable with the same name before running cmake
# With cmake-gui, before pressing "Configure":
# 1) Press "Add Entry" button
# 2) Add a new entry defined as:
# - Name: ICU_ROOT
# - Type: choose PATH in the selection list
# - Press "..." button and select the root installation of ICU
#
# Example Usage:
#
# 1. Copy this file in the root of your project source directory
# 2. Then, tell CMake to search this non-standard module in your project directory by adding to your CMakeLists.txt:
# set(CMAKE_MODULE_PATH ${PROJECT_SOURCE_DIR})
# 3. Finally call find_package() once, here are some examples to pick from
#
# Require ICU 4.4 or later
# find_package(ICU 4.4 REQUIRED)
#
# if(ICU_FOUND)
# include_directories(${ICU_INCLUDE_DIRS})
# add_executable(myapp myapp.c)
# target_link_libraries(myapp ${ICU_LIBRARIES})
# endif(ICU_FOUND)
#=============================================================================
# Copyright (c) 2011-2013, julp
#
# Distributed under the OSI-approved BSD License
#
# This software is distributed WITHOUT ANY WARRANTY; without even the
# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
#=============================================================================
find_package(PkgConfig QUIET)
########## Private ##########
if(NOT DEFINED ICU_PUBLIC_VAR_NS)
set(ICU_PUBLIC_VAR_NS "ICU") # Prefix for all ICU relative public variables
endif(NOT DEFINED ICU_PUBLIC_VAR_NS)
if(NOT DEFINED ICU_PRIVATE_VAR_NS)
set(ICU_PRIVATE_VAR_NS "_${ICU_PUBLIC_VAR_NS}") # Prefix for all ICU relative internal variables
endif(NOT DEFINED ICU_PRIVATE_VAR_NS)
if(NOT DEFINED PC_ICU_PRIVATE_VAR_NS)
set(PC_ICU_PRIVATE_VAR_NS "_PC${ICU_PRIVATE_VAR_NS}") # Prefix for all pkg-config relative internal variables
endif(NOT DEFINED PC_ICU_PRIVATE_VAR_NS)
function(icudebug _VARNAME)
if(${ICU_PUBLIC_VAR_NS}_DEBUG)
if(DEFINED ${ICU_PUBLIC_VAR_NS}_${_VARNAME})
message("${ICU_PUBLIC_VAR_NS}_${_VARNAME} = ${${ICU_PUBLIC_VAR_NS}_${_VARNAME}}")
else(DEFINED ${ICU_PUBLIC_VAR_NS}_${_VARNAME})
message("${ICU_PUBLIC_VAR_NS}_${_VARNAME} = <UNDEFINED>")
endif(DEFINED ${ICU_PUBLIC_VAR_NS}_${_VARNAME})
endif(${ICU_PUBLIC_VAR_NS}_DEBUG)
endfunction(icudebug)
set(${ICU_PRIVATE_VAR_NS}_ROOT "")
if(DEFINED ENV{ICU_ROOT})
set(${ICU_PRIVATE_VAR_NS}_ROOT "$ENV{ICU_ROOT}")
endif(DEFINED ENV{ICU_ROOT})
if (DEFINED ICU_ROOT)
set(${ICU_PRIVATE_VAR_NS}_ROOT "${ICU_ROOT}")
endif(DEFINED ICU_ROOT)
set(${ICU_PRIVATE_VAR_NS}_BIN_SUFFIXES )
set(${ICU_PRIVATE_VAR_NS}_LIB_SUFFIXES )
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
list(APPEND ${ICU_PRIVATE_VAR_NS}_BIN_SUFFIXES "bin64")
list(APPEND ${ICU_PRIVATE_VAR_NS}_LIB_SUFFIXES "lib64")
endif(CMAKE_SIZEOF_VOID_P EQUAL 8)
list(APPEND ${ICU_PRIVATE_VAR_NS}_BIN_SUFFIXES "bin")
list(APPEND ${ICU_PRIVATE_VAR_NS}_LIB_SUFFIXES "lib")
set(${ICU_PRIVATE_VAR_NS}_COMPONENTS )
# <icu component name> <library name 1> ... <library name N>
macro(icu_declare_component _NAME)
list(APPEND ${ICU_PRIVATE_VAR_NS}_COMPONENTS ${_NAME})
set("${ICU_PRIVATE_VAR_NS}_COMPONENTS_${_NAME}" ${ARGN})
endmacro(icu_declare_component)
icu_declare_component(data icudata)
icu_declare_component(uc icuuc) # Common and Data libraries
icu_declare_component(i18n icui18n icuin) # Internationalization library
icu_declare_component(io icuio ustdio) # Stream and I/O Library
icu_declare_component(le icule) # Layout library
icu_declare_component(lx iculx) # Paragraph Layout library
########## Public ##########
set(${ICU_PUBLIC_VAR_NS}_FOUND TRUE)
set(${ICU_PUBLIC_VAR_NS}_LIBRARIES )
set(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS )
set(${ICU_PUBLIC_VAR_NS}_C_FLAGS "")
set(${ICU_PUBLIC_VAR_NS}_CXX_FLAGS "")
set(${ICU_PUBLIC_VAR_NS}_CPP_FLAGS "")
set(${ICU_PUBLIC_VAR_NS}_C_SHARED_FLAGS "")
set(${ICU_PUBLIC_VAR_NS}_CXX_SHARED_FLAGS "")
set(${ICU_PUBLIC_VAR_NS}_CPP_SHARED_FLAGS "")
foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PRIVATE_VAR_NS}_COMPONENTS})
string(TOUPPER "${${ICU_PRIVATE_VAR_NS}_COMPONENT}" ${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT)
set("${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_FOUND" FALSE) # may be done in the icu_declare_component macro
endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT)
# Check components
if(NOT ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS) # uc required at least
set(${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS uc)
else(NOT ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS)
list(APPEND ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS uc)
list(REMOVE_DUPLICATES ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS)
foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS})
if(NOT DEFINED ${ICU_PRIVATE_VAR_NS}_COMPONENTS_${${ICU_PRIVATE_VAR_NS}_COMPONENT})
message(FATAL_ERROR "Unknown ICU component: ${${ICU_PRIVATE_VAR_NS}_COMPONENT}")
endif(NOT DEFINED ${ICU_PRIVATE_VAR_NS}_COMPONENTS_${${ICU_PRIVATE_VAR_NS}_COMPONENT})
endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT)
endif(NOT ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS)
# Includes
find_path(
${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS
NAMES unicode/utypes.h utypes.h
HINTS ${${ICU_PRIVATE_VAR_NS}_ROOT}
PATH_SUFFIXES "include"
DOC "Include directories for ICU"
)
if(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS)
########## <part to keep synced with tests/version/CMakeLists.txt> ##########
if(EXISTS "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS}/unicode/uvernum.h") # ICU >= 4
file(READ "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS}/unicode/uvernum.h" ${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS)
elseif(EXISTS "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS}/unicode/uversion.h") # ICU [2;4[
file(READ "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS}/unicode/uversion.h" ${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS)
elseif(EXISTS "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS}/unicode/utypes.h") # ICU [1.4;2[
file(READ "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS}/unicode/utypes.h" ${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS)
elseif(EXISTS "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS}/utypes.h") # ICU 1.3
file(READ "${${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS}/utypes.h" ${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS)
else()
message(FATAL_ERROR "ICU version header not found")
endif()
if(${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS MATCHES ".*# *define *ICU_VERSION *\"([0-9]+)\".*") # ICU 1.3
# [1.3;1.4[ as #define ICU_VERSION "3" (no patch version, ie all 1.3.X versions will be detected as 1.3.0)
set(${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION "1")
set(${ICU_PUBLIC_VAR_NS}_MINOR_VERSION "${CMAKE_MATCH_1}")
set(${ICU_PUBLIC_VAR_NS}_PATCH_VERSION "0")
elseif(${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS MATCHES ".*# *define *U_ICU_VERSION_MAJOR_NUM *([0-9]+).*")
#
# Since version 4.9.1, ICU release version numbering was totaly changed, see:
# - http://site.icu-project.org/download/49
# - http://userguide.icu-project.org/design#TOC-Version-Numbers-in-ICU
#
set(${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION "${CMAKE_MATCH_1}")
string(REGEX REPLACE ".*# *define *U_ICU_VERSION_MINOR_NUM *([0-9]+).*" "\\1" ${ICU_PUBLIC_VAR_NS}_MINOR_VERSION "${${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS}")
string(REGEX REPLACE ".*# *define *U_ICU_VERSION_PATCHLEVEL_NUM *([0-9]+).*" "\\1" ${ICU_PUBLIC_VAR_NS}_PATCH_VERSION "${${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS}")
elseif(${ICU_PRIVATE_VAR_NS}_VERSION_HEADER_CONTENTS MATCHES ".*# *define *U_ICU_VERSION *\"(([0-9]+)(\\.[0-9]+)*)\".*") # ICU [1.4;1.8[
# [1.4;1.8[ as #define U_ICU_VERSION "1.4.1.2" but it seems that some 1.4.1(?:\.\d)? have releasing error and appears as 1.4.0
set(${ICU_PRIVATE_VAR_NS}_FULL_VERSION "${CMAKE_MATCH_1}") # copy CMAKE_MATCH_1, no longer valid on the following if
if(${ICU_PRIVATE_VAR_NS}_FULL_VERSION MATCHES "^([0-9]+)\\.([0-9]+)$")
set(${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION "${CMAKE_MATCH_1}")
set(${ICU_PUBLIC_VAR_NS}_MINOR_VERSION "${CMAKE_MATCH_2}")
set(${ICU_PUBLIC_VAR_NS}_PATCH_VERSION "0")
elseif(${ICU_PRIVATE_VAR_NS}_FULL_VERSION MATCHES "^([0-9]+)\\.([0-9]+)\\.([0-9]+)")
set(${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION "${CMAKE_MATCH_1}")
set(${ICU_PUBLIC_VAR_NS}_MINOR_VERSION "${CMAKE_MATCH_2}")
set(${ICU_PUBLIC_VAR_NS}_PATCH_VERSION "${CMAKE_MATCH_3}")
endif()
else()
message(FATAL_ERROR "failed to detect ICU version")
endif()
set(${ICU_PUBLIC_VAR_NS}_VERSION "${${ICU_PUBLIC_VAR_NS}_MAJOR_VERSION}.${${ICU_PUBLIC_VAR_NS}_MINOR_VERSION}.${${ICU_PUBLIC_VAR_NS}_PATCH_VERSION}")
########## </part to keep synced with tests/version/CMakeLists.txt> ##########
# Check dependencies (implies pkg-config)
if(PKG_CONFIG_FOUND)
set(${ICU_PRIVATE_VAR_NS}_COMPONENTS_DUP ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS})
foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PRIVATE_VAR_NS}_COMPONENTS_DUP})
pkg_check_modules(PC_ICU_PRIVATE_VAR_NS "icu-${${ICU_PRIVATE_VAR_NS}_COMPONENT}" QUIET)
if(${PC_ICU_PRIVATE_VAR_NS}_FOUND)
foreach(${PC_ICU_PRIVATE_VAR_NS}_LIBRARY ${PC_ICU_LIBRARIES})
string(REGEX REPLACE "^icu" "" ${PC_ICU_PRIVATE_VAR_NS}_STRIPPED_LIBRARY ${${PC_ICU_PRIVATE_VAR_NS}_LIBRARY})
list(APPEND ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS ${${PC_ICU_PRIVATE_VAR_NS}_STRIPPED_LIBRARY})
endforeach(${PC_ICU_PRIVATE_VAR_NS}_LIBRARY)
endif(${PC_ICU_PRIVATE_VAR_NS}_FOUND)
endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT)
list(REMOVE_DUPLICATES ${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS)
endif(PKG_CONFIG_FOUND)
# Check libraries
foreach(${ICU_PRIVATE_VAR_NS}_COMPONENT ${${ICU_PUBLIC_VAR_NS}_FIND_COMPONENTS})
set(${ICU_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES )
set(${ICU_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES )
foreach(${ICU_PRIVATE_VAR_NS}_BASE_NAME ${${ICU_PRIVATE_VAR_NS}_COMPONENTS_${${ICU_PRIVATE_VAR_NS}_COMPONENT}})
list(APPEND ${ICU_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES "${${ICU_PRIVATE_VAR_NS}_BASE_NAME}")
list(APPEND ${ICU_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES "${${ICU_PRIVATE_VAR_NS}_BASE_NAME}d")
list(APPEND ${ICU_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES "${${ICU_PRIVATE_VAR_NS}_BASE_NAME}${ICU_MAJOR_VERSION}${ICU_MINOR_VERSION}")
list(APPEND ${ICU_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES "${${ICU_PRIVATE_VAR_NS}_BASE_NAME}${ICU_MAJOR_VERSION}${ICU_MINOR_VERSION}d")
endforeach(${ICU_PRIVATE_VAR_NS}_BASE_NAME)
find_library(
${ICU_PRIVATE_VAR_NS}_LIB_RELEASE_${${ICU_PRIVATE_VAR_NS}_COMPONENT}
NAMES ${${ICU_PRIVATE_VAR_NS}_POSSIBLE_RELEASE_NAMES}
HINTS ${${ICU_PRIVATE_VAR_NS}_ROOT}
PATH_SUFFIXES ${_ICU_LIB_SUFFIXES}
DOC "Release libraries for ICU"
)
find_library(
${ICU_PRIVATE_VAR_NS}_LIB_DEBUG_${${ICU_PRIVATE_VAR_NS}_COMPONENT}
NAMES ${${ICU_PRIVATE_VAR_NS}_POSSIBLE_DEBUG_NAMES}
HINTS ${${ICU_PRIVATE_VAR_NS}_ROOT}
PATH_SUFFIXES ${_ICU_LIB_SUFFIXES}
DOC "Debug libraries for ICU"
)
string(TOUPPER "${${ICU_PRIVATE_VAR_NS}_COMPONENT}" ${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT)
if(NOT ${ICU_PRIVATE_VAR_NS}_LIB_RELEASE_${${ICU_PRIVATE_VAR_NS}_COMPONENT} AND NOT ${ICU_PRIVATE_VAR_NS}_LIB_DEBUG_${${ICU_PRIVATE_VAR_NS}_COMPONENT}) # both not found
set("${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_FOUND" FALSE)
set("${ICU_PUBLIC_VAR_NS}_FOUND" FALSE)
else(NOT ${ICU_PRIVATE_VAR_NS}_LIB_RELEASE_${${ICU_PRIVATE_VAR_NS}_COMPONENT} AND NOT ${ICU_PRIVATE_VAR_NS}_LIB_DEBUG_${${ICU_PRIVATE_VAR_NS}_COMPONENT}) # one or both found
set("${ICU_PUBLIC_VAR_NS}_${${ICU_PRIVATE_VAR_NS}_UPPER_COMPONENT}_FOUND" TRUE)
if(NOT ${ICU_PRIVATE_VAR_NS}_LIB_RELEASE_${${ICU_PRIVATE_VAR_NS}_COMPONENT}) # release not found => we are in debug
set(${ICU_PRIVATE_VAR_NS}_LIB_${${ICU_PRIVATE_VAR_NS}_COMPONENT} "${${ICU_PRIVATE_VAR_NS}_LIB_DEBUG_${${ICU_PRIVATE_VAR_NS}_COMPONENT}}")
elseif(NOT ${ICU_PRIVATE_VAR_NS}_LIB_DEBUG_${${ICU_PRIVATE_VAR_NS}_COMPONENT}) # debug not found => we are in release
set(${ICU_PRIVATE_VAR_NS}_LIB_${${ICU_PRIVATE_VAR_NS}_COMPONENT} "${${ICU_PRIVATE_VAR_NS}_LIB_RELEASE_${${ICU_PRIVATE_VAR_NS}_COMPONENT}}")
else() # both found
set(
${ICU_PRIVATE_VAR_NS}_LIB_${${ICU_PRIVATE_VAR_NS}_COMPONENT}
optimized ${${ICU_PRIVATE_VAR_NS}_LIB_RELEASE_${${ICU_PRIVATE_VAR_NS}_COMPONENT}}
debug ${${ICU_PRIVATE_VAR_NS}_LIB_DEBUG_${${ICU_PRIVATE_VAR_NS}_COMPONENT}}
)
endif()
list(APPEND ${ICU_PUBLIC_VAR_NS}_LIBRARIES ${${ICU_PRIVATE_VAR_NS}_LIB_${${ICU_PRIVATE_VAR_NS}_COMPONENT}})
endif(NOT ${ICU_PRIVATE_VAR_NS}_LIB_RELEASE_${${ICU_PRIVATE_VAR_NS}_COMPONENT} AND NOT ${ICU_PRIVATE_VAR_NS}_LIB_DEBUG_${${ICU_PRIVATE_VAR_NS}_COMPONENT})
endforeach(${ICU_PRIVATE_VAR_NS}_COMPONENT)
# Try to find out compiler flags
find_program(${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE icu-config HINTS ${${ICU_PRIVATE_VAR_NS}_ROOT})
if(${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE)
execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cflags OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_C_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cxxflags OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_CXX_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cppflags OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_CPP_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cflags-dynamic OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_C_SHARED_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cxxflags-dynamic OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_CXX_SHARED_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
execute_process(COMMAND ${${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE} --cppflags-dynamic OUTPUT_VARIABLE ${ICU_PUBLIC_VAR_NS}_CPP_SHARED_FLAGS OUTPUT_STRIP_TRAILING_WHITESPACE)
endif(${ICU_PUBLIC_VAR_NS}_CONFIG_EXECUTABLE)
# Check find_package arguments
include(FindPackageHandleStandardArgs)
if(${ICU_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${ICU_PUBLIC_VAR_NS}_FIND_QUIETLY)
find_package_handle_standard_args(
${ICU_PUBLIC_VAR_NS}
REQUIRED_VARS ${ICU_PUBLIC_VAR_NS}_LIBRARIES ${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS
VERSION_VAR ${ICU_PUBLIC_VAR_NS}_VERSION
)
else(${ICU_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${ICU_PUBLIC_VAR_NS}_FIND_QUIETLY)
find_package_handle_standard_args(${ICU_PUBLIC_VAR_NS} "ICU not found" ${ICU_PUBLIC_VAR_NS}_LIBRARIES ${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS)
endif(${ICU_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${ICU_PUBLIC_VAR_NS}_FIND_QUIETLY)
else(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS)
if(${ICU_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${ICU_PUBLIC_VAR_NS}_FIND_QUIETLY)
message(FATAL_ERROR "Could not find ICU include directory")
endif(${ICU_PUBLIC_VAR_NS}_FIND_REQUIRED AND NOT ${ICU_PUBLIC_VAR_NS}_FIND_QUIETLY)
endif(${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS)
mark_as_advanced(
${ICU_PUBLIC_VAR_NS}_INCLUDE_DIRS
${ICU_PUBLIC_VAR_NS}_LIBRARIES
)
# IN (args)
icudebug("FIND_COMPONENTS")
icudebug("FIND_REQUIRED")
icudebug("FIND_QUIETLY")
icudebug("FIND_VERSION")
# OUT
# Found
icudebug("FOUND")
icudebug("UC_FOUND")
icudebug("I18N_FOUND")
icudebug("IO_FOUND")
icudebug("LE_FOUND")
icudebug("LX_FOUND")
icudebug("DATA_FOUND")
# Flags
icudebug("C_FLAGS")
icudebug("CPP_FLAGS")
icudebug("CXX_FLAGS")
icudebug("C_SHARED_FLAGS")
icudebug("CPP_SHARED_FLAGS")
icudebug("CXX_SHARED_FLAGS")
# Linking
icudebug("INCLUDE_DIRS")
icudebug("LIBRARIES")
# Version
icudebug("MAJOR_VERSION")
icudebug("MINOR_VERSION")
icudebug("PATCH_VERSION")
icudebug("VERSION")
# - Try to find the QtOAuth library
# Once done this will define
#
# QTOAUTH_FOUND - system has the QtOAuth library
# QTOAUTH_INCLUDE_DIR - the QtOAuth include directory
# QTOAUTH_LIBRARY - Link this to use the QtOAuth
# QTOAUTH_DEFINITIONS - Compiler switches required for using QOAuth
#
# File taken from project Choqok
# https://projects.kde.org/projects/extragear/network/choqok/
#
# Copyright © 2010, Mehrdad Momeny <mehrdad.momeny@gmail.com>
# Copyright © 2010, Harald Sitter <apachelogger@ubuntu.com>
#
# Redistribution and use is allowed according to the terms of the BSD license.
# For details see the accompanying COPYING-CMAKE-SCRIPTS file.
if (QTOAUTH_INCLUDE_DIR AND QTOAUTH_LIBRARY)
# in cache already
set(QTOAUTH_FOUND TRUE)