summaryrefslogtreecommitdiff
path: root/m4/buildsys.m4
diff options
context:
space:
mode:
Diffstat (limited to 'm4/buildsys.m4')
-rw-r--r--m4/buildsys.m4235
1 files changed, 153 insertions, 82 deletions
diff --git a/m4/buildsys.m4 b/m4/buildsys.m4
index 6a9af41..b63a58f 100644
--- a/m4/buildsys.m4
+++ b/m4/buildsys.m4
@@ -1,8 +1,8 @@
dnl
-dnl Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012
-dnl Jonathan Schleifer <js@webkeks.org>
+dnl Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016, 2017
+dnl Jonathan Schleifer <js@heap.zone>
dnl
-dnl https://webkeks.org/git/?p=buildsys.git
+dnl https://heap.zone/git/?p=buildsys.git
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
@@ -21,67 +21,83 @@ dnl ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
dnl POSSIBILITY OF SUCH DAMAGE.
dnl
-AC_CONFIG_COMMANDS_PRE([
- AC_SUBST(CC_DEPENDS, $GCC)
- AC_SUBST(CXX_DEPENDS, $GXX)
- AC_SUBST(OBJC_DEPENDS, $GOBJC)
- AC_SUBST(OBJCXX_DEPENDS, $GOBJCXX)
+AC_DEFUN([BUILDSYS_INIT], [
+ AC_CONFIG_COMMANDS_PRE([
+ AC_SUBST(CC_DEPENDS, $GCC)
+ AC_SUBST(CXX_DEPENDS, $GXX)
+ AC_SUBST(OBJC_DEPENDS, $GOBJC)
+ AC_SUBST(OBJCXX_DEPENDS, $GOBJCXX)
- AC_PATH_PROG(TPUT, tput)
+ AC_PATH_PROG(TPUT, tput)
- 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
+ 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 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 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')
+ 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)")
+ dnl OpenBSD seems to want 3 parameters for terminals
+ dnl ending in -256color, but the additional two
+ dnl parameters don't seem to do anything, so we set
+ dnl them to 0.
+ elif x=$($TPUT setaf 1 0 0 2>/dev/null); then
+ AC_SUBST(TERM_SETAF1, "$x")
+ AC_SUBST(TERM_SETAF2,
+ "$($TPUT setaf 2 0 0 2>/dev/null)")
+ AC_SUBST(TERM_SETAF3,
+ "$($TPUT setaf 3 0 0 2>/dev/null)")
+ AC_SUBST(TERM_SETAF4,
+ "$($TPUT setaf 4 0 0 2>/dev/null)")
+ AC_SUBST(TERM_SETAF6,
+ "$($TPUT setaf 6 0 0 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')
+ ])
])
])
-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
-])
-
AC_DEFUN([BUILDSYS_PROG_IMPLIB], [
AC_REQUIRE([AC_CANONICAL_HOST])
AC_MSG_CHECKING(whether we need an implib)
@@ -89,7 +105,7 @@ AC_DEFUN([BUILDSYS_PROG_IMPLIB], [
cygwin* | mingw*)
AC_MSG_RESULT(yes)
PROG_IMPLIB_NEEDED='yes'
- PROG_IMPLIB_LDFLAGS='-Wl,-export-all-symbols,--out-implib,lib${PROG}.a'
+ PROG_IMPLIB_LDFLAGS='-Wl,--export-all-symbols,--out-implib,lib${PROG}.a'
;;
*)
AC_MSG_RESULT(no)
@@ -108,36 +124,39 @@ AC_DEFUN([BUILDSYS_SHARED_LIB], [
case "$host_os" in
darwin*)
AC_MSG_RESULT(Darwin)
- LIB_CFLAGS='-fPIC -DPIC -mmacosx-version-min=10.7'
- LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR} -mmacosx-version-min=10.7 -install_name "${libdir}/$$(i=${SHARED_LIB}; echo $${i%${LIB_SUFFIX}}).${LIB_MAJOR}${LIB_SUFFIX}"'
+ LIB_CFLAGS='-fPIC -DPIC'
+ LIB_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}'
+ LIB_LDFLAGS_INSTALL_NAME='-Wl,-install_name,${libdir}/$${out%.dylib}.${LIB_MAJOR}.dylib'
LIB_PREFIX='lib'
LIB_SUFFIX='.dylib'
LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
- PLUGIN_CFLAGS='-fPIC -DPIC -mmacosx-version-min=10.7'
- PLUGIN_LDFLAGS='-bundle -undefined dynamic_lookup -mmacosx-version-min=10.7'
+ PLUGIN_CFLAGS='-fPIC -DPIC'
+ PLUGIN_LDFLAGS='-bundle -undefined dynamic_lookup'
PLUGIN_SUFFIX='.bundle'
INSTALL_LIB='&& ${INSTALL} -m 755 $$i ${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'
UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.dylib ${DESTDIR}${libdir}/$${i%.dylib}.${LIB_MAJOR}.${LIB_MINOR}.dylib'
CLEAN_LIB=''
;;
- solaris*)
- AC_MSG_RESULT(Solaris)
- LIB_CFLAGS='-fPIC -DPIC'
- LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}.${LIB_MINOR}'
+ mingw* | cygwin*)
+ AC_MSG_RESULT(MinGW / Cygwin)
+ LIB_CFLAGS=''
+ LIB_LDFLAGS='-shared -Wl,--export-all-symbols,--out-implib,${SHARED_LIB}.a'
+ LIB_LDFLAGS_INSTALL_NAME=''
LIB_PREFIX='lib'
- LIB_SUFFIX='.so'
+ LIB_SUFFIX='.dll'
LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
- PLUGIN_CFLAGS='-fPIC -DPIC'
+ PLUGIN_CFLAGS=''
PLUGIN_LDFLAGS='-shared'
- PLUGIN_SUFFIX='.so'
- 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}'
- CLEAN_LIB=''
+ PLUGIN_SUFFIX='.dll'
+ 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'
+ CLEAN_LIB='${SHARED_LIB}.a'
;;
openbsd* | mirbsd*)
AC_MSG_RESULT(OpenBSD)
LIB_CFLAGS='-fPIC -DPIC'
LIB_LDFLAGS='-shared'
+ LIB_LDFLAGS_INSTALL_NAME=''
LIB_PREFIX='lib'
LIB_SUFFIX='.so.${LIB_MAJOR}.${LIB_MINOR}'
LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
@@ -148,24 +167,41 @@ AC_DEFUN([BUILDSYS_SHARED_LIB], [
UNINSTALL_LIB='&& rm -f ${DESTDIR}${libdir}/$$i'
CLEAN_LIB=''
;;
- cygwin* | mingw*)
- AC_MSG_RESULT(Win32)
- LIB_CFLAGS=''
- LIB_LDFLAGS='-shared -Wl,--out-implib,${SHARED_LIB}.a'
+ solaris*)
+ AC_MSG_RESULT(Solaris)
+ LIB_CFLAGS='-fPIC -DPIC'
+ LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}.${LIB_MINOR}'
+ LIB_LDFLAGS_INSTALL_NAME=''
LIB_PREFIX='lib'
- LIB_SUFFIX='.dll'
+ LIB_SUFFIX='.so'
LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
- PLUGIN_CFLAGS=''
+ PLUGIN_CFLAGS='-fPIC -DPIC'
PLUGIN_LDFLAGS='-shared'
- PLUGIN_SUFFIX='.dll'
- 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'
- CLEAN_LIB='${SHARED_LIB}.a'
+ PLUGIN_SUFFIX='.so'
+ 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}'
+ CLEAN_LIB=''
+ ;;
+ *-android*)
+ AC_MSG_RESULT(Android)
+ LIB_CFLAGS='-fPIC -DPIC'
+ LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}'
+ LIB_LDFLAGS_INSTALL_NAME=''
+ LIB_PREFIX='lib'
+ LIB_SUFFIX='.so'
+ LDFLAGS_RPATH=''
+ PLUGIN_CFLAGS='-fPIC -DPIC'
+ PLUGIN_LDFLAGS='-shared'
+ PLUGIN_SUFFIX='.so'
+ 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'
+ CLEAN_LIB=''
;;
*)
- AC_MSG_RESULT(GNU)
+ AC_MSG_RESULT(ELF)
LIB_CFLAGS='-fPIC -DPIC'
LIB_LDFLAGS='-shared -Wl,-soname=${SHARED_LIB}.${LIB_MAJOR}'
+ LIB_LDFLAGS_INSTALL_NAME=''
LIB_PREFIX='lib'
LIB_SUFFIX='.so'
LDFLAGS_RPATH='-Wl,-rpath,${libdir}'
@@ -180,6 +216,7 @@ AC_DEFUN([BUILDSYS_SHARED_LIB], [
AC_SUBST(LIB_CFLAGS)
AC_SUBST(LIB_LDFLAGS)
+ AC_SUBST(LIB_LDFLAGS_INSTALL_NAME)
AC_SUBST(LIB_PREFIX)
AC_SUBST(LIB_SUFFIX)
AC_SUBST(LDFLAGS_RPATH)
@@ -190,3 +227,37 @@ AC_DEFUN([BUILDSYS_SHARED_LIB], [
AC_SUBST(UNINSTALL_LIB)
AC_SUBST(CLEAN_LIB)
])
+
+AC_DEFUN([BUILDSYS_FRAMEWORK], [
+ AC_REQUIRE([AC_CANONICAL_HOST])
+ AC_REQUIRE([BUILDSYS_SHARED_LIB])
+
+ AC_CHECK_TOOL(CODESIGN, codesign)
+
+ case "$host_os" in
+ darwin*)
+ AC_MSG_CHECKING(whether host is iOS)
+ AC_EGREP_CPP(yes, [
+ #include <TargetConditionals.h>
+
+ #if (defined(TARGET_OS_IPHONE) && \
+ TARGET_OS_IPHONE) || \
+ (defined(TARGET_OS_SIMULATOR) && \
+ TARGET_OS_SIMULATOR)
+ yes
+ #endif
+ ], [
+ AC_MSG_RESULT(yes)
+ FRAMEWORK_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}'
+ FRAMEWORK_LDFLAGS_INSTALL_NAME='-Wl,-install_name,@executable_path/Frameworks/$$out/$${out%.framework}'
+ ], [
+ AC_MSG_RESULT(no)
+ FRAMEWORK_LDFLAGS='-dynamiclib -current_version ${LIB_MAJOR}.${LIB_MINOR} -compatibility_version ${LIB_MAJOR}'
+ FRAMEWORK_LDFLAGS_INSTALL_NAME='-Wl,-install_name,@executable_path/../Frameworks/$$out/$${out%.framework}'
+ ])
+
+ AC_SUBST(FRAMEWORK_LDFLAGS)
+ AC_SUBST(FRAMEWORK_LDFLAGS_INSTALL_NAME)
+ ;;
+ esac
+])