Add build & package phase
parent
7cbafcdac4
commit
c7cd52e01c
|
@ -73,4 +73,4 @@ Thumbs.db
|
|||
|
||||
# Build folders
|
||||
build/
|
||||
build-*/
|
||||
build*/
|
||||
|
|
|
@ -2,3 +2,20 @@ image: "danger89/cmake:latest"
|
|||
|
||||
static_code_analysis:
|
||||
script: ./check.sh
|
||||
|
||||
build:
|
||||
script: ./scripts/build_prod.sh
|
||||
artifacts:
|
||||
name: "Packages + Documentation"
|
||||
expire_in: 1 week
|
||||
paths:
|
||||
- doc/doxygen/
|
||||
- build_prod/WineGUI-*.deb
|
||||
- build_prod/WineGUI-*.rpm
|
||||
- build_prod/WineGUI-*.tar.gz
|
||||
cache:
|
||||
key: "$CI_PIPELINE_ID"
|
||||
paths:
|
||||
- build_prod/bin
|
||||
policy: push
|
||||
|
||||
|
|
|
@ -1,7 +1,34 @@
|
|||
cmake_minimum_required (VERSION 3.5)
|
||||
|
||||
project (browser LANGUAGES C CXX)
|
||||
|
||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake")
|
||||
|
||||
# Get VERSION from most recent git tag
|
||||
include(git_version)
|
||||
|
||||
project (browser
|
||||
VERSION ${GIT_TAG_VERSION}
|
||||
DESCRIPTION "Browser - Decentralized WWW"
|
||||
LANGUAGES C CXX)
|
||||
|
||||
message("CMAKE_BUILD_TYPE = ${CMAKE_BUILD_TYPE}")
|
||||
message("PROJECT_VERSION = ${PROJECT_VERSION}")
|
||||
|
||||
# Production build
|
||||
if("${CMAKE_BUILD_TYPE}" STREQUAL "Release")
|
||||
add_definitions(-DPRODUCTION=1)
|
||||
|
||||
# Include CPack packaging settings
|
||||
include(packaging)
|
||||
endif()
|
||||
|
||||
add_subdirectory (lib/commonmarker/src)
|
||||
add_subdirectory (lib/commonmarker/extensions)
|
||||
add_subdirectory (src)
|
||||
add_subdirectory (src)
|
||||
|
||||
# Add desktop/images files
|
||||
install(FILES misc/browser.desktop DESTINATION share/applications)
|
||||
#install(FILES misc/browser.png DESTINATION share/icons/hicolor/48x48/apps)
|
||||
#install(FILES misc/browser.svg DESTINATION share/icons/hicolor/scalable/apps)
|
||||
#install(DIRECTORY images DESTINATION share/browser)
|
||||
|
||||
|
|
|
@ -0,0 +1,33 @@
|
|||
find_package(Git QUIET REQUIRED)
|
||||
if(GIT_FOUND)
|
||||
set_property(GLOBAL APPEND
|
||||
PROPERTY CMAKE_CONFIGURE_DEPENDS
|
||||
"${CMAKE_SOURCE_DIR}/.git/index")
|
||||
|
||||
execute_process(
|
||||
COMMAND "${GIT_EXECUTABLE}" describe --always HEAD
|
||||
WORKING_DIRECTORY "${CMAKE_SOURCE_DIR}"
|
||||
RESULT_VARIABLE res
|
||||
OUTPUT_VARIABLE GIT_HEAD_TAG
|
||||
ERROR_QUIET
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE)
|
||||
|
||||
# For debug reasons use:
|
||||
# message("GIT_HEAD_TAG = ${GIT_HEAD_TAG}")
|
||||
|
||||
if("${GIT_HEAD_TAG}" MATCHES "^v([0-9]+)\\.([0-9]+)\\.([0-9]+).*$")
|
||||
string(REGEX REPLACE "^v([0-9]+)\\.([0-9]+)\\.([0-9]+).*$"
|
||||
"\\1;\\2;\\3" _ver_parts "${GIT_HEAD_TAG}")
|
||||
list(GET _ver_parts 0 GIT_TAG_VERSION_MAJOR)
|
||||
list(GET _ver_parts 1 GIT_TAG_VERSION_MINOR)
|
||||
list(GET _ver_parts 2 GIT_TAG_VERSION_PATCH)
|
||||
else()
|
||||
set(GIT_TAG_VERSION_MAJOR "0")
|
||||
set(GIT_TAG_VERSION_MINOR "0")
|
||||
set(GIT_TAG_VERSION_PATCH "0")
|
||||
endif()
|
||||
|
||||
set(GIT_TAG_VERSION "${GIT_TAG_VERSION_MAJOR}.${GIT_TAG_VERSION_MINOR}.${GIT_TAG_VERSION_PATCH}")
|
||||
else(GIT_FOUND)
|
||||
message("GIT needs to be installed to generate GIT versioning.")
|
||||
endif(GIT_FOUND)
|
|
@ -0,0 +1,44 @@
|
|||
|
||||
# Example: https://github.com/MariaDB/server/tree/10.5/cmake
|
||||
set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "Browser - Decentralized WWW")
|
||||
set(CPACK_PACKAGE_VENDOR "Melroy van den Berg")
|
||||
set(CPACK_PACKAGE_CONTACT "Melroy van den Berg <melroy@melroy.org>")
|
||||
set(CPACK_PACKAGE_HOMEPAGE_URL "https://melroy.org")
|
||||
set(CPACK_PACKAGE_DESCRIPTION_FILE "${CMAKE_CURRENT_SOURCE_DIR}/README.md")
|
||||
set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR}/LICENSE")
|
||||
set(CPACK_PACKAGE_VERSION "${PROJECT_VERSION}")
|
||||
set(CPACK_SOURCE_PACKAGE_FILE_NAME "${PROJECT_TARGET}-${CPACK_PACKAGE_VERSION}")
|
||||
set(CPACK_DEBIAN_PACKAGE_SECTION "utils") # Change
|
||||
set(CPACK_RPM_PACKAGE_GROUP "Applications/Productivity") # Change
|
||||
set(CPACK_PACKAGE_FILE_NAME "${PROJECT_NAME}-v${CPACK_PACKAGE_VERSION}") # Without '-Linux' suffix
|
||||
|
||||
if (${CMAKE_SYSTEM_NAME} MATCHES "Linux" AND EXISTS "/etc/os-release")
|
||||
execute_process (
|
||||
COMMAND grep "^NAME=" /etc/os-release
|
||||
COMMAND sed -e "s/NAME=//g"
|
||||
COMMAND sed -e "s/\"//g"
|
||||
RESULT_VARIABLE DIFINE_LINUX_DISTRO_RESULT
|
||||
OUTPUT_VARIABLE LINUX_DISTRO
|
||||
)
|
||||
if (NOT ${DIFINE_LINUX_DISTRO_RESULT} EQUAL 0)
|
||||
message (FATAL_ERROR "Linux distro identification error")
|
||||
endif ()
|
||||
endif ()
|
||||
|
||||
if(${LINUX_DISTRO} MATCHES "openSUSE")
|
||||
# OpenSuse/Leap
|
||||
set(CPACK_RPM_PACKAGE_REQUIRES "") # Change
|
||||
else()
|
||||
# Redhat/CentOS/Fedora/etc.
|
||||
set(CPACK_RPM_PACKAGE_REQUIRES "") # Change
|
||||
endif()
|
||||
# Optional RPM packages
|
||||
set(CPACK_RPM_PACKAGE_SUGGESTS "") # Change
|
||||
|
||||
# Debian/Ubuntu/Mint Mint
|
||||
set(CPACK_DEBIAN_PACKAGE_DEPENDS "libqt5widgets5")
|
||||
# Optional deb packages
|
||||
set(CPACK_DEBIAN_PACKAGE_SUGGESTS "") # Change
|
||||
|
||||
# include CPack model once all variables are set
|
||||
include(CPack)
|
|
@ -0,0 +1,10 @@
|
|||
[Desktop Entry]
|
||||
Name=Browser
|
||||
Comment=Decentralized WWWW
|
||||
Exec=/usr/bin/browser
|
||||
Terminal=false
|
||||
Type=Application
|
||||
StartupNotify=true
|
||||
Icon=browser
|
||||
Categories=Settings;Utility;
|
||||
Keywords=Browser;Internet;WWW
|
|
@ -0,0 +1,11 @@
|
|||
#!/usr/bin/env bash
|
||||
# By: Melroy van den Berg
|
||||
# Description: Release production build + create Debian package file (.deb),
|
||||
# RPM [Red Hat] Package Manager (.rpm) and compressed file (.tgz/.tar.gz)
|
||||
rm -rf build_prod
|
||||
mkdir build_prod
|
||||
cd build_prod
|
||||
cmake -GNinja -DCMAKE_BUILD_TYPE=Release ..
|
||||
ninja &&
|
||||
echo "INFO: Building packages...";
|
||||
cpack -G "TGZ;DEB;RPM"
|
|
@ -1,12 +1,20 @@
|
|||
# TODO: Maybe move this CMake file to cmake folder and include it in the top-level Cmake file?
|
||||
set (CMAKE_INCLUDE_CURRENT_DIR ON)
|
||||
|
||||
set (CMAKE_AUTOUIC ON)
|
||||
set (CMAKE_AUTOMOC ON)
|
||||
set (CMAKE_AUTORCC ON)
|
||||
|
||||
set(CMAKE_CXX_FLAGS "-Wall -Wextra")
|
||||
set(CMAKE_CXX_FLAGS_DEBUG "-g")
|
||||
set(CMAKE_CXX_FLAGS_RELEASE "-O3 -DNDEBUG")
|
||||
|
||||
set (CMAKE_CXX_STANDARD 20)
|
||||
set (CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
set(CMAKE_RUNTIME_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/bin)
|
||||
set(PROJECT_TARGET browser)
|
||||
|
||||
# QtCreator supports the following variables for Android, which are identical to qmake Android variables.
|
||||
# Check http://doc.qt.io/qt-5/deployment-android.html for more information.
|
||||
# They need to be set before the find_package(Qt5 ...) call.
|
||||
|
@ -36,21 +44,27 @@ set(SOURCES
|
|||
scene.cc
|
||||
)
|
||||
|
||||
# TODO: Why is the executable 'browser' detetected as shared lib? I Just want to have an executable
|
||||
# Maybe because I build shared libs in other CMakeLists, .. uhm
|
||||
if(ANDROID)
|
||||
add_library (browser SHARED
|
||||
add_library (${PROJECT_TARGET} SHARED
|
||||
${SOURCES}
|
||||
)
|
||||
else()
|
||||
add_executable (browser
|
||||
add_executable (${PROJECT_TARGET}
|
||||
${SOURCES}
|
||||
)
|
||||
endif()
|
||||
|
||||
|
||||
# Get the cmark binary dir for config.h
|
||||
get_property(cmark_binary_dir GLOBAL PROPERTY COMMONMARKER_BINARY_DIR)
|
||||
include_directories(${cmark_binary_dir})
|
||||
|
||||
include_directories(lib/commonmarker/src)
|
||||
|
||||
target_link_libraries (browser LINK_PUBLIC LibCommonMarker LibCommonMarkerExtensions)
|
||||
target_link_libraries (browser PRIVATE Qt5::Widgets)
|
||||
# TODO: 1x target_link_libraries?
|
||||
target_link_libraries (${PROJECT_TARGET} LINK_PUBLIC LibCommonMarker LibCommonMarkerExtensions)
|
||||
target_link_libraries (${PROJECT_TARGET} PRIVATE Qt5::Widgets)
|
||||
|
||||
install(TARGETS ${PROJECT_TARGET} RUNTIME DESTINATION "bin" COMPONENT applications)
|
||||
|
|
Loading…
Reference in New Issue