Skip to content

Commit

Permalink
graphics/qcustomplot: add support for Qt5 and Qt6 flavors
Browse files Browse the repository at this point in the history
- Add support for Qt5 and Qt6 flavors
- Switch to cmake using patches from Debian

Differential Revision:	https://reviews.freebsd.org/D43969
  • Loading branch information
MaxBrazhnikov committed Feb 19, 2024
1 parent 6751c32 commit ddd7c2b
Show file tree
Hide file tree
Showing 8 changed files with 153 additions and 25 deletions.
2 changes: 1 addition & 1 deletion audio/polyphone/Makefile
Expand Up @@ -14,7 +14,7 @@ LIB_DEPENDS= libFLAC.so:audio/flac \
libjack.so:audio/jack \
libogg.so:audio/libogg \
libportaudio.so:audio/portaudio \
libQCustomPlot-qt5.so:graphics/qcustomplot \
libQCustomPlot-qt5.so:graphics/qcustomplot@qt5 \
librtmidi.so:audio/rtmidi \
libstk.so:audio/stk \
libvorbisfile.so:audio/libvorbis
Expand Down
2 changes: 1 addition & 1 deletion devel/hotspot/Makefile
Expand Up @@ -13,7 +13,7 @@ LICENSE_FILE= ${WRKSRC}/LICENSE.GPL.txt

BUILD_DEPENDS= ${LOCALBASE}/lib/librustc_demangle.a:devel/rustc-demangle
LIB_DEPENDS= libdw.so:devel/elfutils \
libQCustomPlot-qt5.so:graphics/qcustomplot \
libQCustomPlot-qt5.so:graphics/qcustomplot@qt5 \
libkddockwidgets.so:x11-toolkits/kddockwidgets \
libzstd.so:archivers/zstd

Expand Down
40 changes: 18 additions & 22 deletions graphics/qcustomplot/Makefile
@@ -1,8 +1,9 @@
PORTNAME= qcustomplot
DISTVERSION= 2.1.1
PORTREVISION= 1
CATEGORIES= graphics
MASTER_SITES= https://www.qcustomplot.com/release/${PORTVERSION}/
PKGNAMESUFFIX= ${SUFFIX}
PKGNAMESUFFIX= -${FLAVOR}
DISTNAME= QCustomPlot
DIST_SUBDIR= ${PORTNAME}-${DISTVERSION}

Expand All @@ -13,30 +14,25 @@ WWW= https://www.qcustomplot.com
LICENSE= GPLv3
LICENSE_FILE= ${WRKSRC}/GPL.txt

USES= compiler:c++11-lang pkgconfig qt:5
USE_QT= core gui widgets printsupport buildtools:build
FLAVORS= qt5 qt6
FLAVOR?= qt5

USES= cmake compiler:c++11-lang qt:${FLAVOR:S/qt//}
USE_QT= ${_USE_QT_${FLAVOR}}
USE_LDCONFIG= yes
_USE_QT_qt5= core gui printsupport widgets buildtools:build qmake:build
_USE_QT_qt6= base tools:build

CMAKE_ARGS= -DUSE_QT_VERSION=${FLAVOR:S/qt//}

WRKSRC= ${WRKDIR}/${PORTNAME}

SUFFIX= -qt5

PLIST_FILES= include/qcustomplot.h \
lib/libQCustomPlot${SUFFIX}.so

do-build:
@cd ${WRKSRC} && \
${MOC} qcustomplot.h > qcustomplot_moc.cpp && \
${CXX} ${CXXFLAGS} -shared -fPIC \
-I${PREFIX}/include \
`pkg-config --cflags --libs Qt5Core Qt5Gui Qt5Widgets Qt5PrintSupport` \
qcustomplot.cpp \
qcustomplot_moc.cpp \
-o ${WRKSRC}/libQCustomPlot${SUFFIX}.so \
-Wl,-soname,libQCustomPlot${SUFFIX}.so

do-install:
${INSTALL_DATA} ${WRKSRC}/qcustomplot.h ${STAGEDIR}${PREFIX}/include
${INSTALL_LIB} ${WRKSRC}/libQCustomPlot${SUFFIX}.so ${STAGEDIR}${PREFIX}/lib
PLIST_SUB= SHLIB_VER=${DISTVERSION}

${FLAVOR}_PLIST= ${.CURDIR}/pkg-plist.${FLAVOR}

post-patch:
${CP} ${FILESDIR}/CMakeLists.txt ${FILESDIR}/Config.cmake.in \
${WRKSRC}

.include <bsd.port.mk>
113 changes: 113 additions & 0 deletions graphics/qcustomplot/files/CMakeLists.txt
@@ -0,0 +1,113 @@
cmake_minimum_required(VERSION 3.18.4)

SET(QCustomPlot_MAJOR_VERSION "2")
SET(QCustomPlot_MINOR_VERSION "1")
SET(QCustomPlot_PATCH_VERSION "1")

set(QCustomPlot_VERSION "${QCustomPlot_MAJOR_VERSION}.${QCustomPlot_MINOR_VERSION}.${QCustomPlot_PATCH_VERSION}")
set(QCustomPlot_SOVERSION "${QCustomPlot_MAJOR_VERSION}")

PROJECT(QCustomPlot LANGUAGES CXX VERSION ${QCustomPlot_VERSION})

set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)

include(GNUInstallDirs)
include(FeatureSummary)

#-----------------------------------------------------------#
# Dependencies
#-----------------------------------------------------------#

set(REQUIRED_QT_COMPONENTS Core Widgets PrintSupport)

set(MIN_REQUIRED_QT5_VERSION "5.12")
set(MIN_REQUIRED_QT6_VERSION "6.2.0")


find_package(Qt${USE_QT_VERSION} ${MIN_REQUIRED_QT${USE_QT_VERSION}_VERSION}
COMPONENTS ${REQUIRED_QT_COMPONENTS} REQUIRED)
set(QT_VERSION_MAJOR ${USE_QT_VERSION})


#-----------------------------------------------------------#
# Definitions
#-----------------------------------------------------------#

set(LIB5_SUFFIX "-qt5")
set(LIB6_SUFFIX "Qt6")
set(LIB_SUFFIX "${LIB${QT_VERSION_MAJOR}_SUFFIX}")

set(LIB_NAME QCustomPlot${LIB_SUFFIX})
set(CMAKE_CONFIG_FILE_NAME ${LIB_NAME}Config.cmake)
set(CMAKE_CONFIG_LIB_NAMES ${LIB_NAME} lib${LIB_NAME})

set(INC5_SUBDIR "")
set(INC6_SUBDIR "${LIB_NAME}")
set(QCUSTOMPLOT_INSTALL_INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}/${INC${QT_VERSION_MAJOR}_SUBDIR}")


#-----------------------------------------------------------#
# Compiler Settings
#-----------------------------------------------------------#

#set(CMAKE_CXX_STANDARD 17)

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

# Only enable strict warnings in debug mode
set(CMAKE_CXX_FLAGS_DEBUG "${CMAKE_CXX_FLAGS_DEBUG} -Wall -Wextra -Werror -pedantic")

# As per the author of the library, we should export the symbols under
# MS-Windows.
add_definitions(-DQCUSTOMPLOT_COMPILE_LIBRARY)

#-----------------------------------------------------------#
# Sources
#-----------------------------------------------------------#

add_library(${LIB_NAME} SHARED qcustomplot.cpp)

set_target_properties(${LIB_NAME} PROPERTIES
VERSION ${QCustomPlot_VERSION}
SOVERSION ${QCustomPlot_SOVERSION})

target_link_libraries(${LIB_NAME}
Qt${QT_VERSION_MAJOR}::Widgets
Qt${QT_VERSION_MAJOR}::PrintSupport)

#-----------------------------------------------------------#
# Installation
#-----------------------------------------------------------#

install(TARGETS ${LIB_NAME}
EXPORT ${LIB_NAME}Targets
LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}
ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR}
RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}
INCLUDES DESTINATION ${QCUSTOMPLOT_INSTALL_INCLUDEDIR})

install(FILES qcustomplot.h DESTINATION "${QCUSTOMPLOT_INSTALL_INCLUDEDIR}")

install(EXPORT ${LIB_NAME}Targets
FILE ${LIB_NAME}Targets.cmake
NAMESPACE ${LIB_NAME}::
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${LIB_NAME})

include(CMakePackageConfigHelpers)

configure_package_config_file(${CMAKE_CURRENT_SOURCE_DIR}/Config.cmake.in
"${CMAKE_CURRENT_BINARY_DIR}/${LIB_NAME}Config.cmake"
INSTALL_DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${LIB_NAME})

install(FILES
"${CMAKE_CURRENT_BINARY_DIR}/${LIB_NAME}Config.cmake"
DESTINATION ${CMAKE_INSTALL_LIBDIR}/cmake/${LIB_NAME})

#-----------------------------------------------------------#
# Summary
#-----------------------------------------------------------#

feature_summary(FATAL_ON_MISSING_REQUIRED_PACKAGES WHAT ALL)

5 changes: 5 additions & 0 deletions graphics/qcustomplot/files/Config.cmake.in
@@ -0,0 +1,5 @@
@PACKAGE_INIT@

include("${CMAKE_CURRENT_LIST_DIR}/@LIB_NAME@Targets.cmake")

check_required_components(@LIB_NAME@)
7 changes: 7 additions & 0 deletions graphics/qcustomplot/pkg-plist.qt5
@@ -0,0 +1,7 @@
include/qcustomplot.h
lib/cmake/QCustomPlot-qt5/QCustomPlot-qt5Config.cmake
lib/cmake/QCustomPlot-qt5/QCustomPlot-qt5Targets-%%CMAKE_BUILD_TYPE%%.cmake
lib/cmake/QCustomPlot-qt5/QCustomPlot-qt5Targets.cmake
lib/libQCustomPlot-qt5.so
lib/libQCustomPlot-qt5.so.2
lib/libQCustomPlot-qt5.so.%%SHLIB_VER%%
7 changes: 7 additions & 0 deletions graphics/qcustomplot/pkg-plist.qt6
@@ -0,0 +1,7 @@
include/QCustomPlotQt6/qcustomplot.h
lib/cmake/QCustomPlotQt6/QCustomPlotQt6Config.cmake
lib/cmake/QCustomPlotQt6/QCustomPlotQt6Targets-%%CMAKE_BUILD_TYPE%%.cmake
lib/cmake/QCustomPlotQt6/QCustomPlotQt6Targets.cmake
lib/libQCustomPlotQt6.so
lib/libQCustomPlotQt6.so.2
lib/libQCustomPlotQt6.so.%%SHLIB_VER%%
2 changes: 1 addition & 1 deletion misc/nn-insight/Makefile
Expand Up @@ -18,7 +18,7 @@ BUILD_DEPENDS= avir>0:graphics/avir \
png++>0:graphics/png++
LIB_DEPENDS= libcgraph.so:graphics/graphviz \
libpng.so:graphics/png \
libQCustomPlot-qt5.so:graphics/qcustomplot \
libQCustomPlot-qt5.so:graphics/qcustomplot@qt5 \
libtcmalloc.so:devel/google-perftools

USES= compiler:c++17-lang cmake pkgconfig qt:5
Expand Down

0 comments on commit ddd7c2b

Please sign in to comment.