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.
This commit is contained in:
parent
d33758da92
commit
eb36500ac4
@ -122,6 +122,9 @@ AC_SUBST([pkgdatadir])
|
||||
GEANY_CHECK_DOCUTILS
|
||||
GEANY_CHECK_DOXYGEN
|
||||
|
||||
# libgeany
|
||||
GEANY_LIB_INIT
|
||||
|
||||
# Output
|
||||
AC_CONFIG_FILES([
|
||||
Makefile
|
||||
|
||||
48
m4/geany-lib.m4
Normal file
48
m4/geany-lib.m4
Normal file
@ -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])
|
||||
|
||||
])
|
||||
@ -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
|
||||
|
||||
@ -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:
|
||||
|
||||
|
||||
@ -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@
|
||||
|
||||
@ -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 \
|
||||
|
||||
@ -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@
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user