@@ -14,6 +14,7 @@ project(gpac_plugin VERSION 0.2.1 LANGUAGES C) # x-release-please-version
1414
1515# Options
1616option (ENABLE_TESTS "Enable and build tests" OFF )
17+ option (PACKAGE "Package the plugin" OFF )
1718
1819# Set default build type to Release
1920if (NOT CMAKE_BUILD_TYPE )
@@ -23,6 +24,13 @@ endif()
2324# Define allowed values for CMAKE_BUILD_TYPE
2425set_property (CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS Debug Release)
2526
27+ # Check if we are packaging
28+ if (PACKAGE)
29+ message (STATUS "Building for packaging " )
30+ set (CMAKE_BUILD_TYPE Release CACHE STRING "Build type (e.g., Debug, Release)" FORCE )
31+ set (ENABLE_TESTS OFF CACHE BOOL "Disable tests for packaging" FORCE )
32+ endif ()
33+
2634# clang-tidy
2735find_program (CLANG_TIDY NAMES clang-tidy )
2836
@@ -50,7 +58,10 @@ file(GLOB_RECURSE SOURCES
5058)
5159
5260add_library (${PROJECT_NAME } SHARED ${SOURCES} )
53- set_target_properties (${PROJECT_NAME } PROPERTIES EXPORT_COMPILE_COMMANDS ON )
61+ set_target_properties (${PROJECT_NAME } PROPERTIES
62+ EXPORT_COMPILE_COMMANDS ON
63+ LIBRARY_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR } /lib"
64+ )
5465target_compile_options (${PROJECT_NAME } PRIVATE
5566 -Wall -Wextra -Werror
5667 -Wcast-align
@@ -115,3 +126,51 @@ endif()
115126if (ENABLE_TESTS)
116127 add_subdirectory (tests )
117128endif ()
129+
130+ # Try to get multiarch triple
131+ execute_process (
132+ COMMAND dpkg-architecture -qDEB_HOST_MULTIARCH
133+ OUTPUT_VARIABLE DEB_MULTIARCH
134+ OUTPUT_STRIP_TRAILING_WHITESPACE
135+ )
136+
137+ # Default to plain /usr/lib if detection fails
138+ if (NOT DEB_MULTIARCH)
139+ set (DEB_MULTIARCH "unknown" )
140+ endif ()
141+
142+ # Install to GStreamer plugin directory
143+ install (TARGETS ${PROJECT_NAME }
144+ LIBRARY DESTINATION /usr/lib/${DEB_MULTIARCH} /gstreamer-1.0
145+ )
146+
147+ # Package
148+ set (CPACK_GENERATOR "DEB" )
149+ set (CPACK_PACKAGE_NAME gst-gpac-plugin
150+ CACHE STRING "The resulting package name"
151+ )
152+ set (CPACK_PACKAGE_DESCRIPTION_SUMMARY "GPAC GStreamer Plugin"
153+ CACHE STRING "A GStreamer plugin for GPAC" FORCE
154+ )
155+
156+ set (CPACK_PACKAGE_VENDOR "GPAC Project" )
157+ set (CPACK_VERBATIM_VARIABLES YES )
158+
159+ set (CPACK_PACKAGE_VERSION_MAJOR ${PROJECT_VERSION_MAJOR } )
160+ set (CPACK_PACKAGE_VERSION_MINOR ${PROJECT_VERSION_MINOR } )
161+ set (CPACK_PACKAGE_VERSION_PATCH ${PROJECT_VERSION_PATCH } )
162+
163+ set (CPACK_DEBIAN_PACKAGE_MAINTAINER "Deniz Ugur <deniz@gpac.io>" )
164+
165+ set (CPACK_RESOURCE_FILE_LICENSE "${CMAKE_CURRENT_SOURCE_DIR } /LICENSE" )
166+ set (CPACK_RESOURCE_FILE_README "${CMAKE_CURRENT_SOURCE_DIR } /README.md" )
167+
168+ set (CPACK_DEBIAN_FILE_NAME DEB-DEFAULT)
169+
170+ set (CPACK_DEBIAN_PACKAGE_SECTION "libs" )
171+ set (CPACK_DEBIAN_PACKAGE_DEPENDS "libgstreamer1.0-0, libgstreamer-plugins-base1.0-0" )
172+
173+ if (PACKAGE)
174+ message (STATUS "Packaging the plugin" )
175+ include (CPack )
176+ endif ()
0 commit comments