Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Port to CMake #4

Merged
merged 2 commits into from Apr 23, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
47 changes: 47 additions & 0 deletions CMakeLists.txt
@@ -0,0 +1,47 @@
cmake_minimum_required(VERSION 3.6.0)

project(glacierapp
VERSION 0.4.0
DESCRIPTION "Glacier applications wrapper library")

set(CMAKE_AUTOMOC ON)
set(CMAKE_AUTORCC ON)
set(CMAKE_AUTOUIC ON)

set(CMAKE_INCLUDE_CURRENT_DIR ON)

option(BUILD_EXAMPLES "Build the example projects" OFF)

include(FindPkgConfig)
include(FeatureSummary)
include(GNUInstallDirs)

set(QT_MIN_VERSION "5.6.0")
find_package(Qt5 COMPONENTS Gui Qml Quick REQUIRED)

find_package(PkgConfig)
pkg_check_modules(MLITE5 mlite5 IMPORTED_TARGET)
pkg_check_modules(BOOSTABLE qtdeclarative5-boostable IMPORTED_TARGET)

if(MLITE5_FOUND)
set_property(GLOBAL APPEND PROPERTY PACKAGES_FOUND mlite5)
else()
set_property(GLOBAL APPEND PROPERTY PACKAGES_NOT_FOUND mlite5)
endif()
if(BOOSTABLE_FOUND)
set_property(GLOBAL APPEND PROPERTY PACKAGES_FOUND
qtdeclarative5-boostable)
else()
set_property(GLOBAL APPEND PROPERTY PACKAGES_NOT_FOUND
qtdeclarative5-boostable)
message(WARNING
"qdeclarative-boostable not available; startup times will be slower")
endif()

add_subdirectory(src)

if(BUILD_EXAMPLES)
add_subdirectory(examples)
endif()

feature_summary(WHAT ALL FATAL_ON_MISSING_REQUIRED_PACKAGES)
12 changes: 12 additions & 0 deletions examples/CMakeLists.txt
@@ -0,0 +1,12 @@
set(SRC main.cpp)

add_executable(glacierexample ${SRC})
target_link_libraries(glacierexample
Qt5::Qml
Qt5::Quick
Glacier::App)

install(TARGETS glacierexample RUNTIME
DESTINATION ${CMAKE_INSTALL_BINDIR})
install(FILES glacierexample.qml
DESTINATION ${CMAKE_INSTALL_DATADIR}/glacierexample/qml)
23 changes: 0 additions & 23 deletions examples/examples.pro

This file was deleted.

6 changes: 0 additions & 6 deletions libglacierapp.pro

This file was deleted.

19 changes: 15 additions & 4 deletions rpm/libglacierapp.spec
Expand Up @@ -6,12 +6,13 @@
Name: libglacierapp
Summary: Glacier Application library
Version: 0.4.0
Release: 1
Release: 2
Group: System/Libraries
License: LGPL
URL: https://github.com/nemomobile-ux/libglacierapp
Source0: %{name}-%{version}.tar.bz2

BuildRequires: cmake
BuildRequires: pkgconfig(mlite5)
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5Qml)
Expand Down Expand Up @@ -41,12 +42,21 @@ Development files for %{name}
%setup -q -n %{name}-%{version}

%build
%qtc_qmake5 VERSION=%{version}
%qtc_make
mkdir build
cd build
cmake \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=%{_prefix} \
-DCMAKE_INSTALL_LIBDIR=%{_lib} \
-DBUILD_EXAMPLES=ON \
-DCMAKE_VERBOSE_MAKEFILE=ON \
..
cmake --build .

%install
cd build
rm -rf %{buildroot}
%qmake5_install
DESTDIR=%{buildroot} cmake --build . --target install

%post -p /sbin/ldconfig

Expand All @@ -59,6 +69,7 @@ rm -rf %{buildroot}
%files devel
%{_libdir}/lib*.so
%{_libdir}/pkgconfig/glacierapp.pc
%{_libdir}/cmake/glacierapp/*.cmake
%{_includedir}/%{name}

%files examples
Expand Down
77 changes: 77 additions & 0 deletions src/CMakeLists.txt
@@ -0,0 +1,77 @@
set(SRC glacierapp.cpp)
set(HEADERS glacierapp.h)

add_library(glacierapp SHARED ${SRC} ${HEADERS})
add_library(Glacier::App ALIAS glacierapp)

target_link_libraries(glacierapp PUBLIC
Qt5::Gui
Qt5::Qml
Qt5::Quick)

if(MLITE5_FOUND)
add_definitions(-DHAS_MLITE5)
target_link_libraries(glacierapp PRIVATE
PkgConfig::MLITE5)
endif()

if(BOOSTABLE_FOUND)
add_definitions(-DHAVE_CACHE=1)
set(BOOSTABLE_REQUIRES "qdeclarative5-boostable")
target_link_libraries(glacierapp PRIVATE
PkgConfig::BOOSTABLE)
endif()

target_include_directories(glacierapp PUBLIC
$<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}>
$<INSTALL_INTERFACE:include/libglacierapp>)

set_target_properties(glacierapp PROPERTIES
EXPORT_NAME App
SOVERSION ${PROJECT_VERSION_MAJOR}
VERSION ${PROJECT_VERSION})

# Install the library
install(TARGETS glacierapp
EXPORT GlacierTargets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR})

# Install headers
install(FILES ${HEADERS}
DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/libglacierapp
COMPONENT Devel)

# Configure and install the pkgconfig file
configure_file(libglacierapp.pc.in
${CMAKE_CURRENT_BINARY_DIR}/glacierapp.pc
@ONLY)
install(FILES ${CMAKE_CURRENT_BINARY_DIR}/glacierapp.pc
DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)

# Configure and install the CMake Config file
include(CMakePackageConfigHelpers)
set(CMAKECONFIG_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}/cmake/glacierapp/)

configure_package_config_file(
"GlacierConfig.cmake.in"
"${CMAKE_CURRENT_BINARY_DIR}/GlacierConfig.cmake"
INSTALL_DESTINATION ${CMAKECONFIG_INSTALL_DIR}
PATH_VARS CMAKE_INSTALL_PREFIX CMAKE_INSTALL_INCLUDEDIR
CMAKE_INSTALL_LIBDIR NO_CHECK_REQUIRED_COMPONENTS_MACRO)
write_basic_package_version_file(${CMAKE_CURRENT_BINARY_DIR}/GlacierConfigVersion.cmake
VERSION ${glacierapp_VERSION}
COMPATIBILITY AnyNewerVersion)

install(EXPORT GlacierTargets
DESTINATION ${CMAKECONFIG_INSTALL_DIR}
NAMESPACE Glacier::
COMPONENT Devel)

install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/GlacierConfig.cmake"
"${CMAKE_CURRENT_BINARY_DIR}/GlacierConfigVersion.cmake"
DESTINATION ${CMAKECONFIG_INSTALL_DIR}
COMPONENT Devel)
#export(TARGETS glacierapp
# NAMESPACE Glacier::
# FILE GlacierTargets.cmake)
10 changes: 10 additions & 0 deletions src/GlacierConfig.cmake.in
@@ -0,0 +1,10 @@
@PACKAGE_INIT@

include(CMakeFindDependencyMacro)
find_dependency(Qt5Gui @REQUIRED_QT_VERSION@)
find_dependency(Qt5Qml @REQUIRED_QT_VERSION@)

set(glacierapp_HAVE_MLITE5 "@MLITE5_FOUND@")

include("${CMAKE_CURRENT_LIST_DIR}/GlacierTargets.cmake")
@PACKAGE_INCLUDE_QCHTARGETS@
11 changes: 11 additions & 0 deletions src/libglacierapp.pc.in
@@ -0,0 +1,11 @@
prefix=@CMAKE_INSTALL_PREFIX@
exec_prefix=${prefix}
libdir=${prefix}/@CMAKE_INSTALL_LIBDIR@
includedir=${prefix}/@CMAKE_INSTALL_INCLUDEDIR@/libglacierapp

Name: glacierapp
Description: @PROJECT_DESCRIPTION@
Version: @PROJECT_VERSION@
Libs: -lglacierapp
Cflags: -I${includedir}
Requires: @BOOSTABLE_REQUIRES@
52 changes: 0 additions & 52 deletions src/src.pro

This file was deleted.