]> granicus.if.org Git - libmatroska/commitdiff
Add CMake project
authorevpobr <evpobr@gmail.com>
Sun, 3 Sep 2017 10:12:58 +0000 (15:12 +0500)
committerevpobr <evpobr@gmail.com>
Tue, 5 Sep 2017 03:22:23 +0000 (08:22 +0500)
.gitignore
CMakeLists.txt [new file with mode: 0644]
Makefile.am
cmake/MatroskaConfig.cmake [new file with mode: 0644]

index 0a6232451d42f0ad0b4a097bdc581fb3018c9153..34945c9dbe3f1cb8c3572224bce6d5e720cc56a9 100644 (file)
@@ -2,8 +2,12 @@
 .libs/
 *.a
 *.la
+*.dll
+*.exe
 *.lo
+*.lib
 *.o
+*.obj
 *.pc
 Makefile
 Makefile.in
@@ -16,3 +20,26 @@ Makefile.in
 /configure
 /libtool
 /stamp-h1
+
+[Dd]ebug/
+[Dd]ebugPublic/
+[Rr]elease/
+[Rr]eleases/
+x64/
+x86/
+bld/
+[Bb]in/
+[Oo]bj/
+[Ll]og/
+.vs/
+
+CMakeCache.txt
+CMakeFiles
+CMakeScripts
+Testing
+Makefile
+cmake_install.cmake
+install_manifest.txt
+compile_commands.json
+CMakeSettings.json
+CTestTestfile.cmake
diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644 (file)
index 0000000..fdcbb21
--- /dev/null
@@ -0,0 +1,111 @@
+cmake_minimum_required(VERSION 3.1.2)
+
+project(matroska VERSION 1.4.7)
+
+option(DISABLE_PKGCONFIG "Disable PkgConfig module generation" OFF)
+option(DISABLE_CMAKE_CONFIG "Disable CMake package config module generation" OFF)
+
+set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/")
+find_package(ebml 1.3.5 REQUIRED)
+
+include(GNUInstallDirs)
+
+set(libmatroska_SOURCES
+  src/FileKax.cpp
+  src/KaxAttached.cpp
+  src/KaxAttachments.cpp
+  src/KaxBlock.cpp
+  src/KaxBlockData.cpp
+  src/KaxCluster.cpp
+  src/KaxContexts.cpp
+  src/KaxCues.cpp
+  src/KaxCuesData.cpp
+  src/KaxInfoData.cpp
+  src/KaxSeekHead.cpp
+  src/KaxSegment.cpp
+  src/KaxSemantic.cpp
+  src/KaxTracks.cpp
+  src/KaxVersion.cpp)
+
+set(libmatroska_PUBLIC_HEADERS
+  matroska/FileKax.h
+  matroska/KaxAttached.h
+  matroska/KaxAttachments.h
+  matroska/KaxBlockData.h
+  matroska/KaxBlock.h
+  matroska/KaxChapters.h
+  matroska/KaxClusterData.h
+  matroska/KaxCluster.h
+  matroska/KaxConfig.h
+  matroska/KaxContentEncoding.h
+  matroska/KaxContexts.h
+  matroska/KaxCuesData.h
+  matroska/KaxCues.h
+  matroska/KaxDefines.h
+  matroska/KaxInfoData.h
+  matroska/KaxInfo.h
+  matroska/KaxSeekHead.h
+  matroska/KaxSegment.h
+  matroska/KaxSemantic.h
+  matroska/KaxTag.h
+  matroska/KaxTags.h
+  matroska/KaxTrackAudio.h
+  matroska/KaxTrackEntryData.h
+  matroska/KaxTracks.h
+  matroska/KaxTrackVideo.h
+  matroska/KaxTypes.h
+  matroska/KaxVersion.h)
+
+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)
+endif()
+if(BUILD_SHARED_LIBS)
+  target_compile_definitions(matroska PUBLIC MATROSKA_DLL)
+  set_target_properties(matroska PROPERTIES DEFINE_SYMBOL "MATROSKA_DLL_EXPORT")
+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)
+
+if(NOT DISABLE_PKGCONFIG)
+  set(prefix ${CMAKE_INSTALL_PREFIX})
+  set(exec_prefix "\$\{prefix\}")
+  set(libdir "\$\{prefix\}/${CMAKE_INSTALL_LIBDIR}")
+  set(includedir "\$\{prefix\}/${CMAKE_INSTALL_INCLUDEDIR}")
+  set(PACKAGE_VERSION ${PROJECT_VERSION})
+  configure_file(libmatroska.pc.in libmatroska.pc @ONLY)
+  install(FILES ${CMAKE_CURRENT_BINARY_DIR}/libmatroska.pc DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig)
+endif()
+
+if(NOT DISABLE_CMAKE_CONFIG)
+  if(WIN32)
+    set(CMAKE_INSTALL_PACKAGEDIR cmake)
+  elseif(WIN32)
+    set(CMAKE_INSTALL_PACKAGEDIR ${CMAKE_INSTALL_LIBDIR}/cmake/${PROJECT_NAME})
+  endif()
+  include(CMakePackageConfigHelpers)
+  write_basic_package_version_file(MatroskaConfigVersion.cmake COMPATIBILITY SameMajorVersion)
+  install(EXPORT MatroskaTargets DESTINATION ${CMAKE_INSTALL_PACKAGEDIR})
+  install(FILES
+    ${CMAKE_CURRENT_SOURCE_DIR}/cmake/MatroskaConfig.cmake
+    ${CMAKE_CURRENT_BINARY_DIR}/MatroskaConfigVersion.cmake
+    DESTINATION ${CMAKE_INSTALL_PACKAGEDIR})
+endif()
index c6a728d62b623ffaddedd61e32e220f7caed387a..f79b30bcacc820abb58dc4284e51ac0996a4cb4b 100644 (file)
@@ -64,3 +64,5 @@ pkgconfigdir = ${libdir}/pkgconfig
 pkgconfig_DATA = libmatroska.pc
 
 ${pkgconfig_DATA}: config.status
+
+EXTRA_DIST = CMakeLists.txt cmake\MatroskaConfig.cmake
diff --git a/cmake/MatroskaConfig.cmake b/cmake/MatroskaConfig.cmake
new file mode 100644 (file)
index 0000000..e9a88bd
--- /dev/null
@@ -0,0 +1 @@
+include(${CMAKE_CURRENT_LIST_DIR}/MatroskaTargets.cmake)