[geany/geany] eb3650: Improve Autotools build system for libgeany

Matthew Brush git-noreply at xxxxx
Fri Apr 10 15:06:58 UTC 2015


Branch:      refs/heads/master
Author:      Matthew Brush <matt at geany.org>
Committer:   Thomas Martitz <kugel at rockbox.org>
Date:        Tue, 10 Mar 2015 22:10:06 UTC
Commit:      eb36500ac425c2b4f038bbcb1d3e38f353f0402c
             https://github.com/geany/geany/commit/eb36500ac425c2b4f038bbcb1d3e38f353f0402c

Log Message:
-----------
Improve Autotools build system for libgeany

Checks if the compiler supports -fvisibility and the linker supports
-dynamic-list arguments and use them instead of hardcoding. The new
geany-lib.m4 also accomodates future use of Libtool versioning.


Modified Paths:
--------------
    configure.ac
    m4/geany-lib.m4
    scintilla/Makefile.am
    src/Makefile.am
    tagmanager/ctags/Makefile.am
    tagmanager/mio/Makefile.am
    tagmanager/src/Makefile.am

Modified: configure.ac
3 lines changed, 3 insertions(+), 0 deletions(-)
===================================================================
@@ -122,6 +122,9 @@ AC_SUBST([pkgdatadir])
 GEANY_CHECK_DOCUTILS
 GEANY_CHECK_DOXYGEN
 
+# libgeany
+GEANY_LIB_INIT
+
 # Output
 AC_CONFIG_FILES([
 		Makefile


Modified: m4/geany-lib.m4
48 lines changed, 48 insertions(+), 0 deletions(-)
===================================================================
@@ -0,0 +1,48 @@
+AC_DEFUN([GEANY_LIB_INIT],
+[
+
+dnl In the future, if we want to use libtool/library versioning, we can
+dnl set these variables accordingly. For now its the same as if not specified (0:0:0)
+	libgeany_current=0
+	libgeany_revision=0
+	libgeany_age=0
+
+dnl Try and see if we can use -fvisibility compiler option and GCC`s
+dnl `__attribute__((visibility(...)))` extension and use it if so.
+	AC_MSG_CHECKING([whether compiler supports -fvisibility])
+	libgeany_backup_cflags=$CFLAGS
+	CFLAGS=-fvisibility=hidden
+	AC_TRY_COMPILE([], [
+			__attribute__ ((visibility ("default")))
+			int main(int argc, char **argv) { return 0; }
+		], [
+			LIBGEANY_CFLAGS="${CFLAGS}"
+			AC_MSG_RESULT([yes])
+		], [
+			LIBGEANY_CFLAGS=""
+			AC_MSG_RESULT([no])
+		])
+	CFLAGS="${libgeany_backup_cflags}"
+
+dnl Try and see if we can use our list of dynamically exported symbols with
+dnl the linker and use it if so.
+	AC_MSG_CHECKING([whether linker supports --dynamic-list])
+	libgeany_backup_ldflags=$LDFLAGS
+	LDFLAGS=-Wl,--dynamic-list="${srcdir}/src/dynamicsymbols.list"
+	AC_LINK_IFELSE([
+			AC_LANG_PROGRAM([], [])
+		], [
+			LIBGEANY_LIBS="-Wl,--dynamic-list=\"\$(top_srcdir)/src/dynamicsymbols.list\""
+			AC_MSG_RESULT([yes])
+		], [
+			LIBGEANY_LIBS=""
+			AC_MSG_RESULT([no])
+		])
+	LDFLAGS="${libgeany_backup_ldflags}"
+
+	LIBGEANY_LIBS="${LIBGEANY_LIBS} -version-info ${libgeany_current}:${libgeany_revision}:${libgeany_age}"
+
+	AC_SUBST([LIBGEANY_CFLAGS])
+	AC_SUBST([LIBGEANY_LIBS])
+
+])


Modified: scintilla/Makefile.am
5 lines changed, 3 insertions(+), 2 deletions(-)
===================================================================
@@ -140,9 +140,10 @@ src/XPM.h \
 $(LEXER_SRCS)
 
 libscintilla_la_SOURCES = $(SRCS)
+libscintilla_la_LDFLAGS = @LIBGEANY_LIBS@
 
-AM_CPPFLAGS = -I$(top_srcdir) -I$(srcdir)/include -I$(srcdir)/src -I$(srcdir)/lexlib @GTK_CFLAGS@ \
-	-fvisibility=hidden
+AM_CPPFLAGS = -I$(top_srcdir) -I$(srcdir)/include -I$(srcdir)/src -I$(srcdir)/lexlib \
+	@GTK_CFLAGS@ @LIBGEANY_CFLAGS@
 
 marshallers: gtk/scintilla-marshal.list
 	glib-genmarshal --prefix scintilla_marshal gtk/scintilla-marshal.list --header > gtk/scintilla-marshal.h


Modified: src/Makefile.am
21 lines changed, 10 insertions(+), 11 deletions(-)
===================================================================
@@ -102,11 +102,11 @@ AM_CPPFLAGS = \
 	-I$(top_srcdir) \
 	-I$(top_srcdir)/scintilla/include \
 	-I$(top_srcdir)/tagmanager/src \
-	@GTK_CFLAGS@ @GTHREAD_CFLAGS@ $(MAC_INTEGRATION_CFLAGS)
+	@GTK_CFLAGS@ @GTHREAD_CFLAGS@ $(MAC_INTEGRATION_CFLAGS) @LIBGEANY_CFLAGS@
 
 # tell automake we have a C++ file so it uses the C++ linker we need for Scintilla
 nodist_EXTRA_geany_SOURCES = dummy.cxx
-
+nodist_EXTRA_libgeany_la_SOURCES = dummy1.cxx
 
 if MINGW
 # build Geany for Windows on non-Windows systems (cross-compile)
@@ -121,8 +121,10 @@ libgeany_la_LIBADD = \
 	@GTK_LIBS@ \
 	@GTHREAD_LIBS@ \
 	$(INTLLIBS) \
-	-lole32 -luuid -lwsock32 -lcomdlg32
+	@LIBGEANY_LIBS@ \
+	-lole32 -lwsock32 -lcomdlg32
 
+libgeany_la_LDFLAGS = -Wl,-luuid $(AM_LDFLAGS)
 geany_LDADD += geany_private.res  -lcomdlg32
 
 AM_CFLAGS = -DGEANY_DATADIR=\"data\" \
@@ -132,10 +134,9 @@ AM_CFLAGS = -DGEANY_DATADIR=\"data\" \
 			-DGEANY_PREFIX=\"\" \
 			-DGEANY_PRIVATE \
 			-DGTK \
-			-DG_LOG_DOMAIN=\""Geany"\" \
-			-fvisibility=hidden
+			-DG_LOG_DOMAIN=\""Geany"\"
 
-libgeany_la_LDFLAGS =	-mwindows -mms-bitfields -no-undefined
+libgeany_la_LDFLAGS +=	-mwindows -mms-bitfields -no-undefined
 
 WINDRES = $(host_alias)-windres
 
@@ -158,9 +159,8 @@ libgeany_la_LIBADD = \
 	@GTK_LIBS@ \
 	@GTHREAD_LIBS@ \
 	$(MAC_INTEGRATION_LIBS) \
-	$(INTLLIBS)
-
-libgeany_la_LDFLAGS = -Wl,--dynamic-list="$(srcdir)/dynamicsymbols.list"
+	$(INTLLIBS) \
+	@LIBGEANY_LIBS@
 
 AM_CFLAGS = -DGEANY_DATADIR=\""$(datadir)"\" \
 			-DGEANY_DOCDIR=\""$(docdir)"\" \
@@ -169,8 +169,7 @@ AM_CFLAGS = -DGEANY_DATADIR=\""$(datadir)"\" \
 			-DGEANY_PREFIX=\""$(prefix)"\" \
 			-DGEANY_PRIVATE \
 			-DGTK \
-			-DG_LOG_DOMAIN=\""Geany"\" \
-			-fvisibility=hidden
+			-DG_LOG_DOMAIN=\""Geany"\"
 
 clean-local:
 


Modified: tagmanager/ctags/Makefile.am
3 lines changed, 2 insertions(+), 1 deletions(-)
===================================================================
@@ -4,7 +4,7 @@ AM_CPPFLAGS = \
 	-DG_LOG_DOMAIN=\"CTags\"
 AM_CFLAGS = \
 	$(GTK_CFLAGS) \
-	-fvisibility=hidden
+	@LIBGEANY_CFLAGS@
 
 EXTRA_DIST = \
 	makefile.win32
@@ -84,3 +84,4 @@ libctags_la_SOURCES = \
 	vstring.h \
 	$(parsers)
 
+libctags_la_LDFLAGS = @LIBGEANY_LIBS@


Modified: tagmanager/mio/Makefile.am
3 lines changed, 2 insertions(+), 1 deletions(-)
===================================================================
@@ -1,9 +1,10 @@
 noinst_LTLIBRARIES = libmio.la
 
 AM_CPPFLAGS = -DG_LOG_DOMAIN=\"MIO\" #-DMIO_DEBUG
-AM_CFLAGS   = $(GTK_CFLAGS) -fvisibility=hidden
+AM_CFLAGS   = $(GTK_CFLAGS) @LIBGEANY_CFLAGS@
 
 libmio_la_SOURCES = mio.c
+libmio_la_LDFLAGS = @LIBGEANY_LIBS@
 
 EXTRA_DIST = \
 	mio.h \


Modified: tagmanager/src/Makefile.am
4 lines changed, 3 insertions(+), 1 deletions(-)
===================================================================
@@ -6,7 +6,7 @@ AM_CPPFLAGS = \
 	-DG_LOG_DOMAIN=\"Tagmanager\"
 AM_CFLAGS = \
 	$(GTK_CFLAGS) \
-	-fvisibility=hidden
+	@LIBGEANY_CFLAGS@
 
 EXTRA_DIST = \
 	makefile.win32
@@ -30,3 +30,5 @@ libtagmanager_la_SOURCES =\
 	tm_tag.c \
 	tm_workspace.h \
 	tm_workspace.c
+
+libtagmanager_la_LDFLAGS = @LIBGEANY_LIBS@



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Commits mailing list