host_vendor
host_os
MODFLAGS
+MODULES
+MODLINK
MODTARGET
NOSSL
PERL
fi
}
+appendMod () {
+ if test "$MODFLAGS" != ""; then
+ MODFLAGS="$MODFLAGS $*"
+ else
+ MODFLAGS=$*
+ fi
+}
+
appendLD () {
if test "$LDFLAGS" != ""; then
LDFLAGS="$LDFLAGS $*"
freebsd*)
appendCXX -I/usr/local/include
appendLib -L/usr/local/lib -lcompat
- MODFLAGS="$MODFLAGS -L/usr/local/lib"
+ appendMod -L/usr/local/lib
;;
solaris*)
appendLib -lsocket -lnsl
cygwin)
ISCYGWIN=1
;;
+ darwin*)
+ ISDARWIN=1
+ ;;
esac
# cygwin
fi
appendCXX -D_MODULES
- MODFLAGS="$MODFLAGS $CXXFLAGS"
- if test -z "$ISSUN"; then
+ appendMod "$CXXFLAGS"
+
+ if test -z "$ISSUN" -a -z "$ISDARWIN"; then
+ # This is an unknown compiler flag on some OS
appendLD -Wl,--export-dynamic
fi
MODTARGET="modules"
- # FIXME why don't we do this for sun?
+ # FIXME why do we need this for sun?
if test -n "$ISSUN"; then
- MODFLAGS="$MODFLAGS -mimpure-text"
+ appendMod -mimpure-text
+ fi
+
+ if test -z "$ISDARWIN"; then
+ MODLINK="-shared"
+ else
+ # Mac OS X differentiates between shared libs (-dynamiclib)
+ # and loadable modules (-bundle).
+ MODLINK="-bundle -flat_namespace -undefined suppress"
+ # TODO test if -twolevel_namespace and/or
+ # -undefined dynamic_lookup work
+ # (dynamic_lookup might only work on 10.4 and later)
fi
appendCXX "-D_MODDIR_=\\\"${MODDIR}\\\""
+
+
ac_config_files="$ac_config_files Makefile"
ac_config_files="$ac_config_files znc-config"
host_vendor!$host_vendor$ac_delim
host_os!$host_os$ac_delim
MODFLAGS!$MODFLAGS$ac_delim
+MODULES!$MODULES$ac_delim
+MODLINK!$MODLINK$ac_delim
MODTARGET!$MODTARGET$ac_delim
NOSSL!$NOSSL$ac_delim
PERL!$PERL$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 61; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 63; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
fi
}
+appendMod () {
+ if test "$MODFLAGS" != ""; then
+ MODFLAGS="$MODFLAGS $*"
+ else
+ MODFLAGS=$*
+ fi
+}
+
appendLD () {
if test "$LDFLAGS" != ""; then
LDFLAGS="$LDFLAGS $*"
freebsd*)
appendCXX -I/usr/local/include
appendLib -L/usr/local/lib -lcompat
- MODFLAGS="$MODFLAGS -L/usr/local/lib"
+ appendMod -L/usr/local/lib
;;
solaris*)
appendLib -lsocket -lnsl
cygwin)
ISCYGWIN=1
;;
+ darwin*)
+ ISDARWIN=1
+ ;;
esac
# cygwin
fi
appendCXX -D_MODULES
- MODFLAGS="$MODFLAGS $CXXFLAGS"
- if test -z "$ISSUN"; then
+ appendMod "$CXXFLAGS"
+
+ if test -z "$ISSUN" -a -z "$ISDARWIN"; then
+ # This is an unknown compiler flag on some OS
appendLD -Wl,--export-dynamic
fi
MODTARGET="modules"
- # FIXME why don't we do this for sun?
+ # FIXME why do we need this for sun?
if test -n "$ISSUN"; then
- MODFLAGS="$MODFLAGS -mimpure-text"
+ appendMod -mimpure-text
+ fi
+
+ if test -z "$ISDARWIN"; then
+ MODLINK="-shared"
+ else
+ # Mac OS X differentiates between shared libs (-dynamiclib)
+ # and loadable modules (-bundle).
+ MODLINK="-bundle -flat_namespace -undefined suppress"
+ # TODO test if -twolevel_namespace and/or
+ # -undefined dynamic_lookup work
+ # (dynamic_lookup might only work on 10.4 and later)
fi
appendCXX "-D_MODDIR_=\\\"${MODDIR}\\\""
AC_SUBST([MODFLAGS])
AC_SUBST([LDFLAGS])
AC_SUBST([LIBS])
+AC_SUBST([MODLINK])
AC_SUBST([MODTARGET])
AC_SUBST([NOSSL])
AC_SUBST([PERL])
CXX := @CXX@
# CXXFLAGS are for the main binary, so don't use them here, use MODFLAGS instead
MODFLAGS := @CPPFLAGS@ @MODFLAGS@ -I$(srcdir)/..
+MODLINK := @MODLINK@
LDFLAGS := @LDFLAGS@
# LIBS are not and should not be used in here.
# The znc binary links already against those.
%.so: %.cpp Makefile
@mkdir -p .depend
- $(CXX) $(MODFLAGS) $(LDFLAGS) -shared -o $@ $< $($(basename $@)FLAGS) -MMD -MF .depend/$@.dep
+ $(CXX) $(MODFLAGS) $(LDFLAGS) $(MODLINK) -o $@ $< $($(basename $@)FLAGS) -MMD -MF .depend/$@.dep
modperl_install: create_install_dir
for i in $(srcdir)/*.pm; do \
CXX="@CXX@"
CXXFLAGS="@CPPFLAGS@ @MODFLAGS@ -I@prefix@/include/znc"
+MODLINK="@MODLINK@"
# LIBS="@LIBS@"
# No libs needed, ZNC links against $LIBS and thus modules don't need to.
LIBS=""
echo "USAGE: $0 <flag>"
echo " --cxx [$CXX]"
echo " --cflags [$CXXFLAGS]"
+ echo " --modlink [$MODLINK]"
echo " --libs [$LIBS]"
echo " --moddir [$MODDIR]"
echo " --datadir [$DATADIR]"
echo $CXX;;
--cflags)
echo $CXXFLAGS;;
+ --modlink)
+ echo $MODLINK;;
--include)
# Left here for backwards compatibility
;;