[geany/geany-plugins] 086fe3: autotools: Don't allow undefined symbols in plugins when possible
Colomban Wendling
git-noreply at xxxxx
Mon Oct 13 14:46:35 UTC 2014
Branch: refs/heads/master
Author: Colomban Wendling <ban at herbesfolles.org>
Committer: Colomban Wendling <ban at herbesfolles.org>
Date: Mon, 13 Oct 2014 14:46:35 UTC
Commit: 086fe3d11106edbc2261b8a8f634d2653a1ecf80
https://github.com/geany/geany-plugins/commit/086fe3d11106edbc2261b8a8f634d2653a1ecf80
Log Message:
-----------
autotools: Don't allow undefined symbols in plugins when possible
Tell the linker not to allow undefined symbols in built plugins it
possible.
This avoids use of non-plugin API functions from plugins as using those
would lead to undefined symbols. This works even as we don't link to a
"libgeany" or the like because Geany plugin API is hidden behind macros
indirection.
Modified Paths:
--------------
build/ldflags.m4
build/vars.build.mk
configure.ac
Modified: build/ldflags.m4
40 lines changed, 40 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,40 @@
+dnl GP_CHECK_LDFLAG(FLAG, [ACTION-IF-TRUE], [ACTION-IF-FALSE])
+dnl Checks whether the linker understands FLAG
+AC_DEFUN([GP_CHECK_LDFLAG],
+[
+ gp_check_ldflag_LDFLAGS="$LDFLAGS"
+ LDFLAGS="$1"
+ AC_MSG_CHECKING([whether the linker understands $LDFLAGS])
+ AC_LANG_PUSH(C)
+ AC_LINK_IFELSE([AC_LANG_SOURCE([int main(void) {return 0;}])],
+ [AC_MSG_RESULT([yes])
+ $2],
+ [AC_MSG_RESULT([no])
+ $3])
+ AC_LANG_POP(C)
+ LDFLAGS="$gp_check_ldflag_LDFLAGS"
+])
+
+dnl GP_CHECK_LDFLAGS
+dnl Checks for default Geany-Plugins LDFLAGS and defines GP_LDFLAGS
+AC_DEFUN([GP_CHECK_LDFLAGS],
+[
+ AC_ARG_ENABLE([extra-ld-flags],
+ AS_HELP_STRING([--disable-extra-ld-flags],
+ [Disable extra linker flags]),
+ [enable_extra_ld_flags=$enableval],
+ [enable_extra_ld_flags=yes])
+
+ GP_LDFLAGS=
+ AS_IF([test "x$enable_extra_ld_flags" != xno],
+ [
+ enable_extra_ld_flags=yes
+ for flag in -Wl,-z,defs # do not allow undefined symbols in object files
+ do
+ GP_CHECK_LDFLAG([$flag], [GP_LDFLAGS="${GP_LDFLAGS} $flag"])
+ done
+ ])
+ AC_SUBST([GP_LDFLAGS])
+ GP_STATUS_BUILD_FEATURE_ADD([Extra linker options],
+ [$enable_extra_c_warnings])
+])
Modified: build/vars.build.mk
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -9,7 +9,7 @@ AM_CFLAGS = \
$(GEANY_CFLAGS) \
$(GP_CFLAGS)
-AM_LDFLAGS = -module -avoid-version
+AM_LDFLAGS = -module -avoid-version $(GP_LDFLAGS)
COMMONLIBS = \
$(GEANY_LIBS) \
Modified: configure.ac
1 lines changed, 1 insertions(+), 0 deletions(-)
===================================================================
@@ -23,6 +23,7 @@ GP_CHECK_UNITTESTS(0.9.4)
GP_CHECK_GTK_VERSION
GP_CHECK_CPPCHECK
GP_CHECK_CFLAGS
+GP_CHECK_LDFLAGS
dnl plugin checks
GP_CHECK_ADDONS
--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).
More information about the Plugins-Commits
mailing list