Skip to content

Make it easier to set alternative SONAME for pjproject libraries.#4905

Open
jkroonza wants to merge 1 commit intopjsip:masterfrom
jkroonza:soname
Open

Make it easier to set alternative SONAME for pjproject libraries.#4905
jkroonza wants to merge 1 commit intopjsip:masterfrom
jkroonza:soname

Conversation

@jkroonza
Copy link
Copy Markdown
Contributor

@jkroonza jkroonza commented Apr 2, 2026

No description provided.

@jkroonza
Copy link
Copy Markdown
Contributor Author

jkroonza commented Apr 2, 2026

Since pjproject doesn't modify the so version on ABI changes, it's often difficult to detect breakage due to ABI changes. This makes it easier for packagers of pjproject to use an alternative SONAME resulting in distribution mechanisms like preserved-rebuild on Gentoo to maintain package consistency during upgrade processes.

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces an overridable SONAME-version variable to allow customizing the shared-library version suffix, and updates selected component build Makefiles to use it when naming shared libraries.

Changes:

  • Add PJ_SONAME_VERSION (defaulting to PJ_VERSION_MAJOR) in version.mak.
  • Switch PJSIP shared library filename suffixes to $(PJ_SONAME_VERSION).
  • Switch PJMEDIA shared library filename suffixes to $(PJ_SONAME_VERSION).

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

File Description
version.mak Adds an exported, overridable PJ_SONAME_VERSION variable.
pjsip/build/Makefile Uses PJ_SONAME_VERSION for PJSIP-related shared library filenames.
pjmedia/build/Makefile Uses PJ_SONAME_VERSION for PJMEDIA-related shared library filenames.

@jkroonza jkroonza force-pushed the soname branch 2 times, most recently from f722bc2 to e592816 Compare April 2, 2026 19:56
Signed-off-by: Jaco Kroon <jaco@uls.co.za>
Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 18 out of 18 changed files in this pull request and generated 1 comment.

else
APP_THIRD_PARTY_LIBS += -lwebrtc-aec3
APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libwebrtc-aec3.$(SHLIB_SUFFIX).$(PJ_VERSION_MAJOR) $(PJ_DIR)/third_party/lib/libwebrtc.$(SHLIB_SUFFIX)
APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libwebrtc-aec3.$(SHLIB_SUFFIX).$(PJ_SONAME_VERSION) $(PJ_DIR)/third_party/lib/libwebrtc.$(SHLIB_SUFFIX)
Copy link

Copilot AI Apr 3, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the webrtc-aec3 shared-library branch, APP_THIRD_PARTY_LIB_FILES lists the unversioned file as libwebrtc.$(SHLIB_SUFFIX) instead of libwebrtc-aec3.$(SHLIB_SUFFIX). This is inconsistent with the library name used elsewhere (libwebrtc-aec3) and will point to the wrong file when webrtc-aec3 is enabled with shared libs. Update the second path to reference libwebrtc-aec3.$(SHLIB_SUFFIX).

Suggested change
APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libwebrtc-aec3.$(SHLIB_SUFFIX).$(PJ_SONAME_VERSION) $(PJ_DIR)/third_party/lib/libwebrtc.$(SHLIB_SUFFIX)
APP_THIRD_PARTY_LIB_FILES += $(PJ_DIR)/third_party/lib/libwebrtc-aec3.$(SHLIB_SUFFIX).$(PJ_SONAME_VERSION) $(PJ_DIR)/third_party/lib/libwebrtc-aec3.$(SHLIB_SUFFIX)

Copilot uses AI. Check for mistakes.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants