Add CMake-based build system
This commit is contained in:
parent
317bdbad5b
commit
42022bdfd2
|
@ -0,0 +1,178 @@
|
|||
cmake_minimum_required(VERSION 3.13)
|
||||
|
||||
if(NOT KRISTALL_VERSION)
|
||||
execute_process(COMMAND git describe --tags --abbrev=0
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
||||
OUTPUT_VARIABLE KRISTALL_CMAKE_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
|
||||
execute_process(COMMAND git describe --tags
|
||||
WORKING_DIRECTORY ${CMAKE_CURRENT_LIST_DIR}
|
||||
OUTPUT_VARIABLE KRISTALL_VERSION
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
)
|
||||
endif()
|
||||
|
||||
# CMake requires the following format for versions:
|
||||
# <major>[.<minor>[.<patch>[.<tweak>]]]]
|
||||
string(REPLACE "V" "" KRISTALL_CMAKE_VERSION ${KRISTALL_CMAKE_VERSION})
|
||||
project(kristall VERSION ${KRISTALL_CMAKE_VERSION} LANGUAGES CXX)
|
||||
|
||||
set(QT_VERSION_MAJOR 5)
|
||||
set(CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
|
||||
# QXmpp requires C++17.
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
find_package(QT NAMES Qt6 Qt5 COMPONENTS
|
||||
Multimedia MultimediaWidgets Network Widgets REQUIRED)
|
||||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS
|
||||
Multimedia MultimediaWidgets Network Widgets REQUIRED)
|
||||
|
||||
set(PROJECT_SOURCES
|
||||
src/browsertab.cpp
|
||||
src/certificatehelper.cpp
|
||||
src/cryptoidentity.cpp
|
||||
src/dialogs/certificateiodialog.cpp
|
||||
src/dialogs/certificatemanagementdialog.cpp
|
||||
src/dialogs/certificateselectiondialog.cpp
|
||||
src/dialogs/newidentitiydialog.cpp
|
||||
src/dialogs/settingsdialog.cpp
|
||||
src/documentoutlinemodel.cpp
|
||||
src/documentstyle.cpp
|
||||
src/favouritecollection.cpp
|
||||
src/identitycollection.cpp
|
||||
src/ioutil.cpp
|
||||
src/localization.cpp
|
||||
src/main.cpp
|
||||
src/mainwindow.cpp
|
||||
src/renderers/htmlrenderer.cpp
|
||||
src/renderers/markdownrenderer.cpp
|
||||
src/renderers/renderhelpers.cpp
|
||||
src/renderers/textstyleinstance.cpp
|
||||
src/widgets/browsertabbar.cpp
|
||||
src/widgets/browsertabwidget.cpp
|
||||
src/widgets/kristalltextbrowser.cpp
|
||||
src/widgets/mediaplayer.cpp
|
||||
src/mimeparser.cpp
|
||||
src/protocolhandler.cpp
|
||||
src/protocols/abouthandler.cpp
|
||||
src/protocols/filehandler.cpp
|
||||
src/protocols/fingerclient.cpp
|
||||
src/protocols/geminiclient.cpp
|
||||
src/protocols/gopherclient.cpp
|
||||
src/protocols/webclient.cpp
|
||||
src/protocolsetup.cpp
|
||||
src/renderers/geminirenderer.cpp
|
||||
src/renderers/gophermaprenderer.cpp
|
||||
src/renderers/plaintextrenderer.cpp
|
||||
src/ssltrust.cpp
|
||||
src/tabbrowsinghistory.cpp
|
||||
src/trustedhost.cpp
|
||||
src/trustedhostcollection.cpp
|
||||
src/widgets/elidelabel.cpp
|
||||
src/widgets/searchbar.cpp
|
||||
src/widgets/ssltrusteditor.cpp
|
||||
src/widgets/favouritepopup.cpp
|
||||
src/widgets/favouritebutton.cpp
|
||||
src/cachehandler.cpp
|
||||
src/widgets/searchbox.cpp
|
||||
src/browsertab.ui
|
||||
src/dialogs/certificateiodialog.ui
|
||||
src/dialogs/certificatemanagementdialog.ui
|
||||
src/dialogs/certificateselectiondialog.ui
|
||||
src/dialogs/newidentitiydialog.ui
|
||||
src/dialogs/settingsdialog.ui
|
||||
src/mainwindow.ui
|
||||
src/widgets/mediaplayer.ui
|
||||
src/widgets/ssltrusteditor.ui
|
||||
src/fonts.qrc
|
||||
lib/BreezeStyleSheets/breeze.qrc
|
||||
src/builtins.qrc
|
||||
src/icons.qrc
|
||||
)
|
||||
|
||||
if(${QT_VERSION_MAJOR} GREATER_EQUAL 6)
|
||||
qt_add_executable(${PROJECT_NAME}
|
||||
MANUAL_FINALIZATION
|
||||
${PROJECT_SOURCES}
|
||||
)
|
||||
# Define target properties for Android with Qt 6 as:
|
||||
# set_property(TARGET ${PROJECT_NAME} APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR
|
||||
# ${CMAKE_CURRENT_SOURCE_DIR}/android)
|
||||
# For more information, see https://doc.qt.io/qt-6/qt-add-executable.html#target-creation
|
||||
else()
|
||||
if(ANDROID)
|
||||
add_library(${PROJECT_NAME} SHARED
|
||||
${PROJECT_SOURCES}
|
||||
)
|
||||
# Define properties for Android with Qt 5 after find_package() calls as:
|
||||
# set(ANDROID_PACKAGE_SOURCE_DIR "${CMAKE_CURRENT_SOURCE_DIR}/android")
|
||||
else()
|
||||
add_executable(${PROJECT_NAME}
|
||||
${PROJECT_SOURCES}
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
message(STATUS "Building Kristall ${KRISTALL_VERSION}")
|
||||
|
||||
target_compile_definitions(${PROJECT_NAME} PUBLIC
|
||||
KRISTALL_VERSION=${KRISTALL_VERSION})
|
||||
|
||||
add_subdirectory(lib/luis-l-gist)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE luis-l-gist)
|
||||
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_check_modules(cmark IMPORTED_TARGET cmark)
|
||||
|
||||
if(cmark_FOUND)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE PkgConfig::cmark)
|
||||
else()
|
||||
message(STATUS "Using in-tree cmark")
|
||||
add_subdirectory(lib/cmark)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE cmark)
|
||||
endif()
|
||||
|
||||
pkg_check_modules(gumbo-parser IMPORTED_TARGET gumbo)
|
||||
|
||||
if(gumbo_FOUND)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE PkgConfig::gumbo-parser)
|
||||
else()
|
||||
message(STATUS "Using in-tree gumbo-parser")
|
||||
add_subdirectory(lib/gumbo-parser)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE gumbo-parser)
|
||||
endif()
|
||||
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE
|
||||
Qt${QT_VERSION_MAJOR}::Multimedia
|
||||
Qt${QT_VERSION_MAJOR}::MultimediaWidgets
|
||||
Qt${QT_VERSION_MAJOR}::Network
|
||||
Qt${QT_VERSION_MAJOR}::Widgets)
|
||||
|
||||
target_include_directories(${PROJECT_NAME} PRIVATE src)
|
||||
|
||||
set_target_properties(${PROJECT_NAME} PROPERTIES
|
||||
MACOSX_BUNDLE_GUI_IDENTIFIER my.example.com
|
||||
MACOSX_BUNDLE_BUNDLE_VERSION ${PROJECT_VERSION}
|
||||
MACOSX_BUNDLE_SHORT_VERSION_STRING ${PROJECT_VERSION_MAJOR}.${PROJECT_VERSION_MINOR}
|
||||
MACOSX_BUNDLE TRUE
|
||||
WIN32_EXECUTABLE TRUE
|
||||
)
|
||||
|
||||
if(QT_VERSION_MAJOR EQUAL 6)
|
||||
qt_finalize_executable(${PROJECT_NAME})
|
||||
endif()
|
||||
|
||||
find_package(OpenSSL 3.0 REQUIRED)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE OpenSSL::SSL)
|
||||
|
||||
if(NOT UNIX)
|
||||
target_link_libraries(${PROJECT_NAME} PRIVATE iconv)
|
||||
endif()
|
|
@ -0,0 +1,24 @@
|
|||
cmake_minimum_required(VERSION 3.13)
|
||||
project(cmark C)
|
||||
|
||||
set(sources
|
||||
src/blocks.c
|
||||
src/buffer.c
|
||||
src/cmark.c
|
||||
src/cmark_ctype.c
|
||||
src/commonmark.c
|
||||
src/houdini_href_e.c
|
||||
src/houdini_html_e.c
|
||||
src/houdini_html_u.c
|
||||
src/inlines.c
|
||||
src/iterator.c
|
||||
src/node.c
|
||||
src/references.c
|
||||
src/render.c
|
||||
src/scanners.c
|
||||
src/utf8.c
|
||||
src/html.c
|
||||
src/xml.c)
|
||||
|
||||
add_library(${PROJECT_NAME} ${sources})
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC src)
|
|
@ -0,0 +1,17 @@
|
|||
cmake_minimum_required(VERSION 3.13)
|
||||
project(gumbo-parser C)
|
||||
set(sources
|
||||
attribute.c
|
||||
char_ref.c
|
||||
error.c
|
||||
gumbo-utf8.c
|
||||
parser.c
|
||||
string_buffer.c
|
||||
string_piece.c
|
||||
tag.c
|
||||
tokenizer.c
|
||||
util.c
|
||||
vector.c
|
||||
)
|
||||
add_library(${PROJECT_NAME} ${sources})
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC include PRIVATE .)
|
|
@ -0,0 +1,7 @@
|
|||
cmake_minimum_required(VERSION 3.13)
|
||||
project(luis-l-gist CXX)
|
||||
add_library(${PROJECT_NAME} interactiveview.cpp)
|
||||
target_include_directories(${PROJECT_NAME} PUBLIC .)
|
||||
find_package(QT NAMES Qt6 Qt5 COMPONENTS Widgets REQUIRED)
|
||||
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Widgets REQUIRED)
|
||||
target_link_libraries(${PROJECT_NAME} PUBLIC Qt${QT_VERSION_MAJOR}::Widgets)
|
Loading…
Reference in New Issue