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

Reply via email to