buildsys.m4 6.87 KB
Newer Older
1
dnl
2 3
dnl Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012
dnl Jonathan Schleifer <js@webkeks.org>
4
dnl
5
dnl https://webkeks.org/git/?p=buildsys.git
6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
dnl
dnl Permission to use, copy, modify, and/or distribute this software for any
dnl purpose with or without fee is hereby granted, provided that the above
dnl copyright notice and this permission notice is present in all copies.
dnl
dnl THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
dnl AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
dnl IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
dnl ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
dnl LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
dnl CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
dnl SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
dnl INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
dnl CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
dnl ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
dnl POSSIBILITY OF SUCH DAMAGE.
dnl

24 25 26 27 28 29
AC_CONFIG_COMMANDS_PRE([
	AC_SUBST(CC_DEPENDS, $GCC)
	AC_SUBST(CXX_DEPENDS, $GXX)
	AC_SUBST(OBJC_DEPENDS, $GOBJC)
	AC_SUBST(OBJCXX_DEPENDS, $GOBJCXX)

30
	AC_PATH_PROG(TPUT, tput)
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 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73
	AS_IF([test x"$TPUT" != x""], [
		if x=$($TPUT el 2>/dev/null); then
			AC_SUBST(TERM_EL, "$x")
		else
			AC_SUBST(TERM_EL, "$($TPUT ce 2>/dev/null)")
		fi

		if x=$($TPUT sgr0 2>/dev/null); then
			AC_SUBST(TERM_SGR0, "$x")
		else
			AC_SUBST(TERM_SGR0, "$($TPUT me 2>/dev/null)")
		fi

		if x=$($TPUT bold 2>/dev/null); then
			AC_SUBST(TERM_BOLD, "$x")
		else
			AC_SUBST(TERM_BOLD, "$($TPUT md 2>/dev/null)")
		fi

		if x=$($TPUT setaf 1 2>/dev/null); then
			AC_SUBST(TERM_SETAF1, "$x")
			AC_SUBST(TERM_SETAF2, "$($TPUT setaf 2 2>/dev/null)")
			AC_SUBST(TERM_SETAF3, "$($TPUT setaf 3 2>/dev/null)")
			AC_SUBST(TERM_SETAF4, "$($TPUT setaf 4 2>/dev/null)")
			AC_SUBST(TERM_SETAF6, "$($TPUT setaf 6 2>/dev/null)")
		else
			AC_SUBST(TERM_SETAF1, "$($TPUT AF 1 2>/dev/null)")
			AC_SUBST(TERM_SETAF2, "$($TPUT AF 2 2>/dev/null)")
			AC_SUBST(TERM_SETAF3, "$($TPUT AF 3 2>/dev/null)")
			AC_SUBST(TERM_SETAF4, "$($TPUT AF 4 2>/dev/null)")
			AC_SUBST(TERM_SETAF6, "$($TPUT AF 6 2>/dev/null)")
		fi
	], [
		AC_SUBST(TERM_EL, '\033\133K')
		AC_SUBST(TERM_SGR0, '\033\133m')
		AC_SUBST(TERM_BOLD, '\033\1331m')
		AC_SUBST(TERM_SETAF1, '\033\13331m')
		AC_SUBST(TERM_SETAF2, '\033\13332m')
		AC_SUBST(TERM_SETAF3, '\033\13333m')
		AC_SUBST(TERM_SETAF4, '\033\13334m')
		AC_SUBST(TERM_SETAF6, '\033\13336m')
	])
74 75
])

76 77 78 79 80 81 82 83 84
AC_CONFIG_COMMANDS_POST([
	${as_echo:="echo"} ${as_me:="configure"}": touching .deps files"
	for i in $(find . -name Makefile); do
		DEPSFILE="$(dirname $i)/.deps"
		test -f "$DEPSFILE" && rm "$DEPSFILE"
		touch -t 0001010000 "$DEPSFILE"
	done
])

85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110
AC_DEFUN([BUILDSYS_PROG_IMPLIB], [
	AC_REQUIRE([AC_CANONICAL_HOST])
	AC_MSG_CHECKING(whether we need an implib)
	case "$host_os" in
		cygwin* | mingw*)
			AC_MSG_RESULT(yes)
			PROG_IMPLIB_NEEDED='yes'
			PROG_IMPLIB_LDFLAGS='-Wl,-export-all-symbols,--out-implib,lib${PROG}.a'
			;;
		*)
			AC_MSG_RESULT(no)
			PROG_IMPLIB_NEEDED='no'
			PROG_IMPLIB_LDFLAGS=''
			;;
	esac

	AC_SUBST(PROG_IMPLIB_NEEDED)
	AC_SUBST(PROG_IMPLIB_LDFLAGS)
])

AC_DEFUN([BUILDSYS_SHARED_LIB], [
	AC_REQUIRE([AC_CANONICAL_HOST])
	AC_MSG_CHECKING(for shared library system)
	case "$host_os" in
		darwin*)
			AC_MSG_RESULT(Darwin)
111
			LIB_CFLAGS='-fPIC -DPIC'
112
			LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}'
113 114 115
			LIB_PREFIX='lib'
			LIB_SUFFIX='.dylib'
			LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
116 117
			PLUGIN_CFLAGS='-fPIC -DPIC'
			PLUGIN_LDFLAGS='-bundle -undefined dynamic_lookup'
118
			PLUGIN_SUFFIX='.bundle'
119
			INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && install_name_tool -id ${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib && ${LN_S} -f $${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib ${DESTDIR}${libdir}/$$i'
120
			UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib'
121 122 123 124
			CLEAN_LIB=''
			;;
		solaris*)
			AC_MSG_RESULT(Solaris)
125
			LIB_CFLAGS='-fPIC -DPIC'
126
			LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}.${LIB_MINOR}'
127 128 129
			LIB_PREFIX='lib'
			LIB_SUFFIX='.so'
			LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
130 131
			PLUGIN_CFLAGS='-fPIC -DPIC'
			PLUGIN_LDFLAGS='-shared'
132
			PLUGIN_SUFFIX='.so'
133 134
			INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR} && rm -f ${DESTDIR}${libdir}/$$i && ${LN_S} $$i.${LIB_MAJOR}.${LIB_MINOR} ${DESTDIR}${libdir}/$$i'
			UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}'
135 136 137 138
			CLEAN_LIB=''
			;;
		openbsd* | mirbsd*)
			AC_MSG_RESULT(OpenBSD)
139 140
			LIB_CFLAGS='-fPIC -DPIC'
			LIB_LDFLAGS='-shared'
141 142 143
			LIB_PREFIX='lib'
			LIB_SUFFIX='.so.${LIB_MAJOR}.${LIB_MINOR}'
			LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
144 145
			PLUGIN_CFLAGS='-fPIC -DPIC'
			PLUGIN_LDFLAGS='-shared'
146
			PLUGIN_SUFFIX='.so'
147 148
			INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i'
			UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i'
149 150 151 152 153
			CLEAN_LIB=''
			;;
		cygwin* | mingw*)
			AC_MSG_RESULT(Win32)
			LIB_CFLAGS=''
154
			LIB_LDFLAGS='-shared -Wl,--out-implib,${SHARED_LIB}.a'
155 156 157 158 159 160
			LIB_PREFIX='lib'
			LIB_SUFFIX='.dll'
			LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
			PLUGIN_CFLAGS=''
			PLUGIN_LDFLAGS='-shared'
			PLUGIN_SUFFIX='.dll'
161 162
			INSTALL_LIB='&& ${MKDIR_P} ${DESTDIR}${bindir} && ${INSTALL} -m 755 $$i ${DESTDIR}${bindir}/$$i && ${INSTALL} -m 755 $$i.a ${DESTDIR}${libdir}/$$i.a'
			UNINSTALL_LIB='&& rm -f ${DESTDIR}${bindir}/$$i ${DESTDIR}${libdir}/$$i.a'
163
			CLEAN_LIB='${SHARED_LIB}.a'
164 165 166
			;;
		*)
			AC_MSG_RESULT(GNU)
167
			LIB_CFLAGS='-fPIC -DPIC'
168
			LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}'
169 170 171
			LIB_PREFIX='lib'
			LIB_SUFFIX='.so'
			LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
172 173
			PLUGIN_CFLAGS='-fPIC -DPIC'
			PLUGIN_LDFLAGS='-shared'
174
			PLUGIN_SUFFIX='.so'
175 176
			INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0 && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} && ${LN_S} -f $$i.${LIB_MAJOR}.${LIB_MINOR}.0 ${DESTDIR}${libdir}/$$i'
			UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$$i.${LIB_MAJOR} ${DESTDIR}${libdir}/$$i.${LIB_MAJOR}.${LIB_MINOR}.0'
177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192
			CLEAN_LIB=''
			;;
	esac

	AC_SUBST(LIB_CFLAGS)
	AC_SUBST(LIB_LDFLAGS)
	AC_SUBST(LIB_PREFIX)
	AC_SUBST(LIB_SUFFIX)
	AC_SUBST(LDFLAGS_RPATH)
	AC_SUBST(PLUGIN_CFLAGS)
	AC_SUBST(PLUGIN_LDFLAGS)
	AC_SUBST(PLUGIN_SUFFIX)
	AC_SUBST(INSTALL_LIB)
	AC_SUBST(UNINSTALL_LIB)
	AC_SUBST(CLEAN_LIB)
])