On Mon Apr 15, 2019 at 10:18:20PM -0400, Brad Smith wrote: > On 4/15/2019 4:00 PM, Rafael Sadowski wrote: > > > Please find attached update diffs for the following ports: > > > > - multimedia/libmatroska > > - textproc/libebml > > > > Simple updates to the latest stable versions. Both projects switched to > > cmake as build-system. > > > > - multimedia/mkvtoolnix > > > > As always nothing special but depends on the new libmatroska and libebml > > versions. > > > > Comments? OK? > I have had updates for libmatroska and libebml sitting in my tree for awhile > now. I'm > a little annoyed at the half baked CMake conversion. > > https://github.com/Matroska-Org/libmatroska/issues/17 > > Is there anyone that knows CMake well that might be able to take a look at > what is > there and fix the CMake bits so both shared and static libs are built? >
I accepted the challenge. ;) New diff attached with an option to build and install shared and static libs. Tested with all combinations. Feel free to push it upstream. OK?
Index: Makefile =================================================================== RCS file: /cvs/ports/textproc/libebml/Makefile,v retrieving revision 1.22 diff -u -p -u -p -r1.22 Makefile --- Makefile 24 Oct 2018 14:28:11 -0000 1.22 +++ Makefile 16 Apr 2019 19:10:32 -0000 @@ -2,13 +2,12 @@ COMMENT= Extensible Binary Meta Language library -DISTNAME= libebml-1.3.5 +DISTNAME= libebml-1.3.7 CATEGORIES= textproc MASTER_SITES= https://dl.matroska.org/downloads/libebml/ EXTRACT_SUFX= .tar.xz -REVISION= 0 -SHARED_LIBS= ebml 3.1 +SHARED_LIBS= ebml 3.2 HOMEPAGE= http://www.matroska.org/ @@ -17,10 +16,12 @@ MAINTAINER= Brad Smith <[email protected] # LGPLv2.1+ PERMIT_PACKAGE_CDROM= Yes -WANTLIB= m ${COMPILER_LIBCXX} +WANTLIB += ${COMPILER_LIBCXX} m -COMPILER = base-clang ports-gcc base-gcc +COMPILER = base-clang ports-gcc base-gcc -CONFIGURE_STYLE= gnu +MODULES += devel/cmake + +NO_TEST = Yes .include <bsd.port.mk> Index: distinfo =================================================================== RCS file: /cvs/ports/textproc/libebml/distinfo,v retrieving revision 1.12 diff -u -p -u -p -r1.12 distinfo --- distinfo 4 Sep 2017 08:01:05 -0000 1.12 +++ distinfo 16 Apr 2019 19:10:32 -0000 @@ -1,2 +1,2 @@ -SHA256 (libebml-1.3.5.tar.xz) = 2BhBP2B0LC8Da6b1gsXgMg0Sv/7BsPwPwXo5i28EqgA= -SIZE (libebml-1.3.5.tar.xz) = 274184 +SHA256 (libebml-1.3.7.tar.xz) = 4yRMh/WE1/yMNxiBprewZYPMBB+I4uP66aIV2cpY6fQ= +SIZE (libebml-1.3.7.tar.xz) = 69460 Index: patches/patch-CMakeLists_txt =================================================================== RCS file: patches/patch-CMakeLists_txt diff -N patches/patch-CMakeLists_txt --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-CMakeLists_txt 16 Apr 2019 19:10:32 -0000 @@ -0,0 +1,106 @@ +$OpenBSD$ + +Add options for building and installing shared, static libraries + +Index: CMakeLists.txt +--- CMakeLists.txt.orig ++++ CMakeLists.txt +@@ -4,6 +4,8 @@ project(ebml VERSION 1.3.7) + + option(DISABLE_PKGCONFIG "Disable PkgConfig module generation" OFF) + option(DISABLE_CMAKE_CONFIG "Disable CMake package config module generation" OFF) ++option(DISABLE_SHARED_LIBS "Disable build and install shared libraries" OFF) ++option(DISABLE_STATIC_LIBS "Disable build and install static libraries" OFF) + + include(GNUInstallDirs) + +@@ -63,40 +65,54 @@ set(libebml_PUBLIC_HEADERS + + set(libebml_C_PUBLIC_HEADERS ebml/c/libebml_t.h) + +-add_library(ebml ${libebml_SOURCES} ${libebml_PUBLIC_HEADERS} ${libebml_C_PUBLIC_HEADERS}) +-if(WIN32) +- include(CheckIncludeFile) +- check_include_file(winapifamily.h HAVE_WINAPIFAMILY_H) +- if(HAVE_WINAPIFAMILY_H) +- target_compile_definitions(ebml PUBLIC HAVE_WINAPIFAMILY_H) +- endif() ++foreach (TYPE IN ITEMS STATIC SHARED) ++ if (NOT DISABLE_${TYPE}_LIBS) ++ string (TOLOWER "${TYPE}" type) ++ add_library(ebml-${type} ${TYPE} ${libebml_SOURCES} ${libebml_PUBLIC_HEADERS} ${libebml_C_PUBLIC_HEADERS}) ++ set_target_properties(ebml-${type} PROPERTIES ++ VERSION 4.0.0 ++ SOVERSION 4) ++ target_include_directories(ebml-${type} PUBLIC ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> ++ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) ++ if(MSVC) ++ target_compile_definitions(ebml-${type} PRIVATE _CRT_SECURE_NO_WARNINGS) ++ endif() ++ if(WIN32) ++ include(CheckIncludeFile) ++ check_include_file(winapifamily.h HAVE_WINAPIFAMILY_H) ++ if(HAVE_WINAPIFAMILY_H) ++ target_compile_definitions(ebml-${type} PUBLIC HAVE_WINAPIFAMILY_H) ++ endif() + endif() +-set_target_properties(ebml PROPERTIES +- VERSION 4.0.0 +- SOVERSION 4) +-target_include_directories(ebml PUBLIC +- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> +- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) +-if(MSVC) +- target_compile_definitions(ebml PRIVATE _CRT_SECURE_NO_WARNINGS) +-endif() +-if(BUILD_SHARED_LIBS) +- set_target_properties(ebml ++ endif() ++endforeach() ++ ++if(NOT DISABLE_SHARED_LIBS) ++ set_target_properties(ebml-shared + PROPERTIES + DEFINE_SYMBOL "EBML_DLL_EXPORT" + C_VISIBILITY_PRESET hidden +- VISIBILITY_INLINES_HIDDEN 1) +- target_compile_definitions(ebml ++ VISIBILITY_INLINES_HIDDEN 1 ++ OUTPUT_NAME ebml) ++ target_compile_definitions(ebml-shared + PUBLIC EBML_DLL + PRIVATE EBML_DLL_EXPORT) ++ install(TARGETS ebml-shared ++ EXPORT EbmlTargets ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() + +-install(TARGETS ebml +- EXPORT EbmlTargets +- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) ++if(NOT DISABLE_STATIC_LIBS) ++ set_target_properties(ebml-static PROPERTIES OUTPUT_NAME ebml) ++ install(TARGETS ebml-static ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) ++endif() + ++ + install(FILES ${libebml_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ebml) + install(FILES ${libebml_C_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/ebml/c) + +@@ -118,7 +134,9 @@ if(NOT DISABLE_CMAKE_CONFIG) + endif() + include(CMakePackageConfigHelpers) + write_basic_package_version_file(EbmlConfigVersion.cmake COMPATIBILITY SameMajorVersion) ++if(NOT DISABLE_SHARED_LIBS) + install(EXPORT EbmlTargets DESTINATION ${CMAKE_INSTALL_PACKAGEDIR}) ++endif() + install(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/EbmlConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/EbmlConfigVersion.cmake Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/textproc/libebml/pkg/PLIST,v retrieving revision 1.3 diff -u -p -u -p -r1.3 PLIST --- pkg/PLIST 27 May 2015 21:16:51 -0000 1.3 +++ pkg/PLIST 16 Apr 2019 19:10:32 -0000 @@ -29,7 +29,12 @@ include/ebml/SafeReadIOCallback.h include/ebml/StdIOCallback.h include/ebml/c/ include/ebml/c/libebml_t.h +lib/cmake/ +lib/cmake/ebml/ +lib/cmake/ebml/EbmlConfig.cmake +lib/cmake/ebml/EbmlConfigVersion.cmake +lib/cmake/ebml/EbmlTargets${MODCMAKE_BUILD_SUFFIX} +lib/cmake/ebml/EbmlTargets.cmake lib/libebml.a -lib/libebml.la @lib lib/libebml.so.${LIBebml_VERSION} lib/pkgconfig/libebml.pc
Index: Makefile =================================================================== RCS file: /cvs/ports/multimedia/libmatroska/Makefile,v retrieving revision 1.25 diff -u -p -u -p -r1.25 Makefile --- Makefile 24 Oct 2018 14:28:08 -0000 1.25 +++ Makefile 16 Apr 2019 19:19:33 -0000 @@ -2,13 +2,12 @@ COMMENT= extensible open standard audio/video container library -DISTNAME= libmatroska-1.4.8 +DISTNAME= libmatroska-1.5.0 CATEGORIES= multimedia MASTER_SITES= http://dl.matroska.org/downloads/libmatroska/ EXTRACT_SUFX= .tar.xz -REVISION= 0 -SHARED_LIBS= matroska 4.2 +SHARED_LIBS= matroska 4.4 HOMEPAGE= http://www.matroska.org/ @@ -17,14 +16,14 @@ MAINTAINER= Brad Smith <[email protected] # LGPLv2.1+ PERMIT_PACKAGE_CDROM= Yes -WANTLIB= ebml m ${COMPILER_LIBCXX} +WANTLIB += ${COMPILER_LIBCXX} ebml m -COMPILER = base-clang ports-gcc base-gcc +COMPILER = base-clang ports-gcc base-gcc -LIB_DEPENDS= textproc/libebml>=1.3.5 +MODULES += devel/cmake -USE_GMAKE= Yes -USE_LIBTOOL= Yes -CONFIGURE_STYLE= gnu +LIB_DEPENDS += textproc/libebml>=1.3.7 + +NO_TEST = Yes .include <bsd.port.mk> Index: distinfo =================================================================== RCS file: /cvs/ports/multimedia/libmatroska/distinfo,v retrieving revision 1.14 diff -u -p -u -p -r1.14 distinfo --- distinfo 5 Nov 2017 10:14:54 -0000 1.14 +++ distinfo 16 Apr 2019 19:19:33 -0000 @@ -1,2 +1,2 @@ -SHA256 (libmatroska-1.4.8.tar.xz) = 2McrINTFv4iHdohLCFT5XnQTm1JnSU+uHzlfchLXyZI= -SIZE (libmatroska-1.4.8.tar.xz) = 286284 +SHA256 (libmatroska-1.5.0.tar.xz) = 8O/cGCf6gBKhbXZKRe2E1UTZKiAnETJF9SL14fcTrR4= +SIZE (libmatroska-1.5.0.tar.xz) = 64596 Index: patches/patch-CMakeLists_txt =================================================================== RCS file: patches/patch-CMakeLists_txt diff -N patches/patch-CMakeLists_txt --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ patches/patch-CMakeLists_txt 16 Apr 2019 19:19:33 -0000 @@ -0,0 +1,94 @@ +$OpenBSD$ + +Add options for building and installing shared, static libraries + +Index: CMakeLists.txt +--- CMakeLists.txt.orig ++++ CMakeLists.txt +@@ -4,6 +4,8 @@ project(matroska VERSION 1.5.0) + + option(DISABLE_PKGCONFIG "Disable PkgConfig module generation" OFF) + option(DISABLE_CMAKE_CONFIG "Disable CMake package config module generation" OFF) ++option(DISABLE_SHARED_LIBS "Disable build and install shared libraries" OFF) ++option(DISABLE_STATIC_LIBS "Disable build and install static libraries" OFF) + + find_package(Ebml 1.3.7 REQUIRED) + +@@ -59,28 +61,44 @@ set (libmatroska_C_PUBLIC_HEADERS + matroska/c/libmatroska.h + matroska/c/libmatroska_t.h) + +-add_library(matroska ${libmatroska_SOURCES} ${limatroska_PUBLIC_HEADERS} ${libmatroska_C_PUBLIC_HEADERS}) +-target_link_libraries(matroska PUBLIC ebml) +-set_target_properties(matroska PROPERTIES +- VERSION 6.0.0 +- SOVERSION 6) +-target_include_directories(matroska PUBLIC +- $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> +- $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) +-if(MSVC) +- target_compile_definitions(matroska PRIVATE _CRT_SECURE_NO_WARNINGS) ++foreach (TYPE IN ITEMS STATIC SHARED) ++ if (NOT DISABLE_${TYPE}_LIBS) ++ string (TOLOWER "${TYPE}" type) ++ add_library(matroska-${type} ${TYPE} ${libmatroska_SOURCES} ${limatroska_PUBLIC_HEADERS} ${libmatroska_C_PUBLIC_HEADERS}) ++ set_target_properties(matroska-${type} PROPERTIES ++ VERSION 6.0.0 ++ SOVERSION 6) ++ target_link_libraries(matroska-${type} PUBLIC ebml) ++ target_include_directories(matroska-${type} PUBLIC ++ $<BUILD_INTERFACE:${CMAKE_CURRENT_SOURCE_DIR}> ++ $<INSTALL_INTERFACE:${CMAKE_INSTALL_INCLUDEDIR}>) ++ endif() ++endforeach() ++ ++if(NOT DISABLE_SHARED_LIBS) ++ if(MSVC) ++ target_compile_definitions(matroska-shared PRIVATE _CRT_SECURE_NO_WARNINGS) ++ endif() ++ ++ target_compile_definitions(matroska-shared PUBLIC MATROSKA_DLL) ++ set_target_properties(matroska-shared PROPERTIES DEFINE_SYMBOL "MATROSKA_DLL_EXPORT" OUTPUT_NAME matroska) ++ ++ install(TARGETS matroska-shared ++ EXPORT MatroskaTargets ++ RENAME matroska ++ RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() +-if(BUILD_SHARED_LIBS) +- target_compile_definitions(matroska PUBLIC MATROSKA_DLL) +- set_target_properties(matroska PROPERTIES DEFINE_SYMBOL "MATROSKA_DLL_EXPORT") ++ ++if(NOT DISABLE_STATIC_LIBS) ++ set_target_properties(matroska-static PROPERTIES OUTPUT_NAME matroska) ++ install(TARGETS matroska-static ++ RENAME matroska ++ ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} ++ LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) + endif() + +-install(TARGETS matroska +- EXPORT MatroskaTargets +- RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR} +- ARCHIVE DESTINATION ${CMAKE_INSTALL_LIBDIR} +- LIBRARY DESTINATION ${CMAKE_INSTALL_LIBDIR}) +- + install(FILES ${libmatroska_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/matroska) + install(FILES ${libmatroska_C_PUBLIC_HEADERS} DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/matroska/c) + +@@ -102,9 +120,12 @@ if(NOT DISABLE_CMAKE_CONFIG) + endif() + include(CMakePackageConfigHelpers) + write_basic_package_version_file(MatroskaConfigVersion.cmake COMPATIBILITY SameMajorVersion) +- install(EXPORT MatroskaTargets DESTINATION ${CMAKE_INSTALL_PACKAGEDIR}) ++ if(NOT DISABLE_SHARED_LIBS) ++ install(EXPORT MatroskaTargets DESTINATION ${CMAKE_INSTALL_PACKAGEDIR}) ++ endif() + install(FILES + ${CMAKE_CURRENT_SOURCE_DIR}/MatroskaConfig.cmake + ${CMAKE_CURRENT_BINARY_DIR}/MatroskaConfigVersion.cmake + DESTINATION ${CMAKE_INSTALL_PACKAGEDIR}) + endif() ++ Index: pkg/PLIST =================================================================== RCS file: /cvs/ports/multimedia/libmatroska/pkg/PLIST,v retrieving revision 1.6 diff -u -p -u -p -r1.6 PLIST --- pkg/PLIST 27 May 2015 21:17:51 -0000 1.6 +++ pkg/PLIST 16 Apr 2019 19:19:33 -0000 @@ -30,7 +30,11 @@ include/matroska/KaxVersion.h include/matroska/c/ include/matroska/c/libmatroska.h include/matroska/c/libmatroska_t.h +lib/cmake/matroska/ +lib/cmake/matroska/MatroskaConfig.cmake +lib/cmake/matroska/MatroskaConfigVersion.cmake +lib/cmake/matroska/MatroskaTargets${MODCMAKE_BUILD_SUFFIX} +lib/cmake/matroska/MatroskaTargets.cmake lib/libmatroska.a -lib/libmatroska.la @lib lib/libmatroska.so.${LIBmatroska_VERSION} lib/pkgconfig/libmatroska.pc
