~haaaad/geany/master

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
dnl checks whether the compiler supports GCC4-style visibility
AC_DEFUN([GCC4_VISIBILITY],
[
	have_gcc4_visibility=no
	AC_MSG_CHECKING([whether compiler supports GCC4-style visibility])
	gcc_visibility_backup_cflags=$CFLAGS
	CFLAGS=-fvisibility=hidden
	AC_LINK_IFELSE([AC_LANG_SOURCE([[__attribute__((visibility("default")))
									 int main(int argc, char **argv) { return 0; }]])],
				   [have_gcc4_visibility=yes])
	AC_MSG_RESULT([$have_gcc4_visibility])
	CFLAGS="${gcc_visibility_backup_cflags}"
])

dnl Checks and fills LIBGEANY_EXPORT_CFLAGS
AC_DEFUN([GEANY_EXPORT],
[
	AC_REQUIRE([GEANY_CHECK_MINGW])
	AC_REQUIRE([GCC4_VISIBILITY])

	dnl FIXME: better way to detect Windows?
	AM_COND_IF([MINGW], [win32=yes], [win32=false])

	export_CFLAGS=
	AS_IF([test x$win32 = xyes],
		  [export_CFLAGS='-DGEANY_EXPORT_SYMBOL="__declspec(dllexport)"'],
		  [test x$have_gcc4_visibility = xyes],
		  [export_CFLAGS='-fvisibility=hidden -DGEANY_EXPORT_SYMBOL="__attribute__((visibility(\"default\")))"'],
		  [dnl GEANY_EXPORT_SYMBOL expands to nothing
		   export_CFLAGS='-DGEANY_EXPORT_SYMBOL'])

	LIBGEANY_EXPORT_CFLAGS="${export_CFLAGS} -DGEANY_API_SYMBOL=GEANY_EXPORT_SYMBOL"

	AC_SUBST([LIBGEANY_EXPORT_CFLAGS])
])

AC_DEFUN([GEANY_LIB_INIT],
[
	AC_REQUIRE([GEANY_EXPORT])

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

	LIBGEANY_CFLAGS="${LIBGEANY_EXPORT_CFLAGS}"
	LIBGEANY_LDFLAGS="-version-info ${libgeany_current}:${libgeany_revision}:${libgeany_age}"

	AC_SUBST([LIBGEANY_CFLAGS])
	AC_SUBST([LIBGEANY_LDFLAGS])

dnl Check for utilities needed to do codegen
	AC_PATH_PROG([SORT], [sort], [
		AC_MSG_ERROR([The 'sort' utility is required, is it installed?])])
	AC_PATH_PROG([UNIQ], [uniq], [
		AC_MSG_ERROR([The 'uniq' utility is required, is it installed?])])
])