Skip to content

Commit 67ba9b8

Browse files
committed
feat: Add pkg-config support
- Added support for generating and installing a .pc file for pkg-config - Controlled by the SENTRY_INSTALL_PKGCONFIG CMake option - Uses CMAKE_INSTALL_LIBDIR and CMAKE_INSTALL_INCLUDEDIR to support non-standard layouts (e.g., lib64) - Removed unconditional -lstdc++ to avoid forcing C++ linkage on C projects - Installs the generated file to the standard pkg-config directory
1 parent 5d60bff commit 67ba9b8

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed

CMakeLists.txt

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -819,3 +819,30 @@ if(SENTRY_BUILD_SHARED_LIBS)
819819
"$<$<PLATFORM_ID:Android>:-Wl,-z,max-page-size=16384>"
820820
)
821821
endif()
822+
823+
# Generate and install pkg-config file
824+
if(SENTRY_INSTALL_PKGCONFIG)
825+
set(PROJECT_VERSION "${SENTRY_VERSION_FULL}")
826+
set(PREFIX "${CMAKE_INSTALL_PREFIX}")
827+
include(GNUInstallDirs)
828+
# Use absolute paths for libdir and includedir to support non-standard layouts (e.g., lib64)
829+
if(IS_ABSOLUTE "${CMAKE_INSTALL_LIBDIR}")
830+
set(PKGCONFIG_LIBDIR "${CMAKE_INSTALL_LIBDIR}")
831+
else()
832+
set(PKGCONFIG_LIBDIR "\${prefix}/${CMAKE_INSTALL_LIBDIR}")
833+
endif()
834+
if(IS_ABSOLUTE "${CMAKE_INSTALL_INCLUDEDIR}")
835+
set(PKGCONFIG_INCLUDEDIR "${CMAKE_INSTALL_INCLUDEDIR}")
836+
else()
837+
set(PKGCONFIG_INCLUDEDIR "\${prefix}/${CMAKE_INSTALL_INCLUDEDIR}")
838+
endif()
839+
configure_file(
840+
"${CMAKE_CURRENT_SOURCE_DIR}/sentry.pc.in"
841+
"${CMAKE_CURRENT_BINARY_DIR}/sentry.pc"
842+
@ONLY
843+
)
844+
install(
845+
FILES "${CMAKE_CURRENT_BINARY_DIR}/sentry.pc"
846+
DESTINATION "${CMAKE_INSTALL_LIBDIR}/pkgconfig"
847+
)
848+
endif()

sentry.pc.in

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
prefix=@PREFIX@
2+
exec_prefix=${prefix}
3+
libdir=@PKGCONFIG_LIBDIR@
4+
includedir=@PKGCONFIG_INCLUDEDIR@
5+
6+
Name: sentry
7+
Description: Sentry SDK for C, C++ and native applications
8+
Version: @PROJECT_VERSION@
9+
URL: https://sentry.io/
10+
Libs: -L${libdir} -lsentry
11+
Cflags: -I${includedir}

0 commit comments

Comments
 (0)