diff options
-rw-r--r-- | build/autoconf/Make.config.in | 34 | ||||
-rw-r--r-- | build/autoconf/Makefile | 140 | ||||
-rw-r--r-- | build/autoconf/acinclude.m4 | 95 | ||||
-rw-r--r-- | build/autoconf/configure.ac | 430 |
4 files changed, 699 insertions, 0 deletions
diff --git a/build/autoconf/Make.config.in b/build/autoconf/Make.config.in new file mode 100644 index 0000000..e1748db --- /dev/null +++ b/build/autoconf/Make.config.in @@ -0,0 +1,34 @@ +LIBNAME =@LIBNAME@ + +# when build as a library this holds a pre-processor define +# (e.g. "-DZEXY_LIBRARY") +# when build as single externals this is empty +BUILDLIBRARY =@BUILDLIBRARY@ + +PREFIX =@prefix@@PDLIBDIR@ + +INSTALL_BIN=$(DESTDIR)$(PREFIX)/lib/pd/extra/$(LIBNAME) +INSTALL_DOC=$(DESTDIR)$(PREFIX)/lib/pd/@REFERENCEPATH@$(LIBNAME) + +EXT = @EXT@ +DEFS = @DFLAGS@ @DEFS@ +IFLAGS = -I. @INCLUDES@ + +CC = @CC@ +LD = @LD@ +STRIP = @STRIP@ +STRIPFLAGS= @STRIPFLAGS@ + +AFLAGS = +LFLAGS = @LFLAGS@ +WFLAGS = + +TARNAME = $(LIBNAME)-@LIBRARY_VERSION@.tgz + +# ICCFLAGS=-march=pentiumiii -axK +Z_CFLAGS = $(IFLAGS) $(DEFS) $(BUILDLIBRARY) -DPD $(WFLAGS) @CFLAGS@ $(CFLAGS) + +MAKEDEP_FLAGS = @MAKEDEP_FLAGS@ +CONFIGUREFLAGS = @CONFIGUREFLAGS@ + +LIBS = @LIBS@ diff --git a/build/autoconf/Makefile b/build/autoconf/Makefile new file mode 100644 index 0000000..86a472d --- /dev/null +++ b/build/autoconf/Makefile @@ -0,0 +1,140 @@ +default: all + +.PHONEY: default all everything dist \ + clean realclean distclean \ + install install-bin install-doc install-abs \ + tests + + +TESTDIR=../tests + +HELPERSOURCES=z_zexy.c zexy.c winNT_portio.c + +OBJECTSOURCES=$(sort $(filter-out $(HELPERSOURCES), $(filter %.c, $(wildcard *.c)))) + +SOURCES=$(OBJECTSOURCES) $(HELPERSOURCES) + +zexyconf.h: zexyconf.h.in configure + ./configure $(CONFIGUREFLAGS) + +configure: configure.ac aclocal.m4 + autoconf + +aclocal.m4: acinclude.m4 + aclocal + +-include $(SOURCES:.c=.d) + +Make.config: Make.config.in configure + ./configure $(CONFIGUREFLAGS) + +z_zexy.c z_zexy.h: + ./makesource.sh + +-include Make.config + +## 2nd only generate depend-files when we have Make.config included +## and thus MAKEDEP_FLAGS defined +ifdef MAKEDEP_FLAGS +## dependencies: as proposed by the GNU-make documentation +## see http://www.gnu.org/software/make/manual/html_node/make_47.html#SEC51 +%.d: %.c + @set -e; rm -f $@; \ + $(CPP) $(MAKEDEP_FLAGS) $(Z_CFLAGS) $< > $@.$$$$; \ + sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ + rm -f $@.$$$$ +endif + +.SUFFIXES: .$(EXT) + +TARGETS = $(SOURCES:.c=.o) + +OBJECTS = $(OBJECTSOURCES:.c=.$(EXT)) + +## if $(BUILDLIBRARY) is defined, we build everything as a single library +## else we build separate externals +ifneq "$(BUILDLIBRARY)" "" +all: $(LIBNAME) + cp $(LIBNAME).$(EXT) .. +else +all: $(OBJECTS) +endif + +$(OBJECTS): %.$(EXT) : %.o + $(LD) $(LFLAGS) -o $@ $*.o $(LIBS) + $(STRIP) $(STRIPFLAGS) $@ + +$(LIBNAME): $(TARGETS) z_zexy.c z_zexy.h + $(LD) $(LFLAGS) -o $@.$(EXT) *.o $(LIBS) + $(STRIP) $(STRIPFLAGS) $@.$(EXT) + +$(TARGETS): %.o : %.c + $(CC) $(Z_CFLAGS) -c -o $@ $*.c + +externals: $(OBJECTS) + +clean: + -rm -f *.$(EXT) *.o + +realclean: clean alias-clean + -rm -f *~ _* config.* + -rm -f *.d *.d.* + +distclean: realclean + -rm -f Make.config zexyconf.h ../*.$(EXT) + -rm -f zexy.exp zexy.lib zexy.ncb \ + zexy.opt zexy.plg + -rm -rf autom4te.cache/ + +tests: all + make -C $(TESTDIR) + +alias: alias-bin alias-abs + +alias-bin: all + ./makealias.sh ../src/alias ../src ../reference + +alias-abs: + ./makealias.sh ../abs/alias ../abs + +alias-clean: alias-clean-bin alias-clean-abs + +alias-clean-bin: + ./makealias.sh -clean ../src/alias ../src ../reference + +alias-clean-abs: + ./makealias.sh -clean ../abs/alias ../abs + +install: all alias install-abs install-bin install-doc + +install-bin: + -install -d $(INSTALL_BIN) + -install -m 644 $(LIBNAME).$(EXT) $(INSTALL_BIN) + +install-doc: + -install -d $(INSTALL_DOC) + -install -m 644 ../reference/*.pd $(INSTALL_DOC) + +install-abs: + -install -d $(INSTALL_BIN) + -install -m 644 ../abs/*.pd $(INSTALL_BIN) + + +uninstall-bin: + -install -d $(INSTALL_BIN) + -install -m 644 $(LIBNAME).$(EXT) $(INSTALL_BIN) + +uninstall-doc: + -install -d $(INSTALL_DOC) + -install -m 644 ../reference/*.pd $(INSTALL_DOC) + +uninstall-abs: + -install -d $(INSTALL_BIN) + -install -m 644 ../abs/*.pd $(INSTALL_BIN) + + +dist: all realclean + (cd ../..;tar czvf $(TARNAME) $(LIBNAME)) + +everything: clean all install distclean + diff --git a/build/autoconf/acinclude.m4 b/build/autoconf/acinclude.m4 new file mode 100644 index 0000000..772fecf --- /dev/null +++ b/build/autoconf/acinclude.m4 @@ -0,0 +1,95 @@ +dnl Copyright (C) 2005-2006 IOhannes m zmölnig +dnl This file is free software; IOhannes m zmölnig +dnl gives unlimited permission to copy and/or distribute it, +dnl with or without modifications, as long as this notice is preserved. + +# AC_CHECK_CXXFLAGS(ADDITIONAL-CXXFLAGS, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) +# +# checks whether the $(CXX) compiler accepts the ADDITIONAL-CXXFLAGS +# if so, they are added to the CXXFLAGS +AC_DEFUN([AC_CHECK_CXXFLAGS], +[ + AC_MSG_CHECKING([whether $CXX accepts "$1"]) +cat > conftest.c++ << EOF +int main(){ + return 0; +} +EOF +if $CXX $CPPFLAGS $CXXFLAGS -o conftest.o conftest.c++ [$1] > /dev/null 2>&1 +then + AC_MSG_RESULT([yes]) + CXXFLAGS="${CXXFLAGS} [$1]" + [$2] +else + AC_MSG_RESULT([no]) + [$3] +fi +])# AC_CHECK_CXXFLAGS + +# AC_CHECK_CFLAGS(ADDITIONAL-CFLAGS, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) +# +# checks whether the $(C) compiler accepts the ADDITIONAL-CFLAGS +# if so, they are added to the CFLAGS +AC_DEFUN([AC_CHECK_CFLAGS], +[ + AC_MSG_CHECKING([whether $CC accepts "$1"]) +cat > conftest.c << EOF +int main(){ + return 0; +} +EOF +if $CC $CFLAGS [$1] -o conftest.o conftest.c > /dev/null 2>&1 +then + AC_MSG_RESULT([yes]) + CFLAGS="${CFLAGS} [$1]" + [$2] +else + AC_MSG_RESULT([no]) + [$3] +fi +])# AC_CHECK_CFLAGS + +# AC_CHECK_FRAMEWORK(FRAMEWORK, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) +# +# +AC_DEFUN([AC_CHECK_FRAMEWORK], +[ + AC_MSG_CHECKING([for "$1"-framework]) + + temp_check_ldflags_org="${LDFLAGS}" + LDFLAGS="-framework [$1] ${LDFLAGS}" + + AC_LINK_IFELSE(AC_LANG_PROGRAM(,), [temp_check_ldflags_success="yes"],[temp_check_ldflags_success="no"]) + + if test "x$temp_check_ldflags_success" = "xyes"; then + AC_MSG_RESULT([yes]) + [$2] + else + AC_MSG_RESULT([no]) + LDFLAGS="$temp_check_ldflags_org" + [$3] + fi +])# AC_CHECK_FRAMEWORK + +# AC_CHECK_LDFLAGS(ADDITIONAL-LDFLAGS, ACTION-IF-FOUND, ACTION-IF-NOT-FOUND) +# +# checks whether the $(LD) linker accepts the ADDITIONAL-LDFLAGS +# if so, they are added to the LDFLAGS +AC_DEFUN([AC_CHECK_LDFLAGS], +[ + AC_MSG_CHECKING([whether linker accepts "$1"]) + temp_check_ldflags_org="${LDFLAGS}" + LDFLAGS="$1 ${LDFLAGS}" + + AC_LINK_IFELSE(AC_LANG_PROGRAM(,), [temp_check_ldflags_success="yes"],[temp_check_ldflags_success="no"]) + + if test "x$temp_check_ldflags_success" = "xyes"; then + AC_MSG_RESULT([yes]) + [$2] + else + AC_MSG_RESULT([no]) + LDFLAGS="$temp_check_ldflags_org" + [$3] + fi +])# AC_CHECK_LDFLAGS + diff --git a/build/autoconf/configure.ac b/build/autoconf/configure.ac new file mode 100644 index 0000000..eef1db3 --- /dev/null +++ b/build/autoconf/configure.ac @@ -0,0 +1,430 @@ +dnl Process this file with autoconf to produce a configure script. +AC_INIT([zexy.h]) +AC_CONFIG_HEADER([zexyconf.h]) + +LIBNAME=zexy + + +dnl Checks for programs. +AC_PROG_CC + +AC_SUBST(STK) +AC_SUBST(CFLAGS) +AC_SUBST(DEFS) +AC_SUBST(DFLAGS) +AC_SUBST(LFLAGS) +AC_SUBST(EXT) +AC_SUBST(LD) +AC_SUBST(STRIP) +AC_SUBST(STRIPFLAGS) +AC_SUBST(LIBRARY_VERSION) +AC_SUBST(BUILDLIBRARY) +AC_SUBST(REFERENCEPATH) +AC_SUBST(PDLIBDIR) +AC_SUBST(INCLUDES) +AC_SUBST(SOURCES) +AC_SUBST(LIBNAME) +AC_SUBST(CONFIGUREFLAGS) + +## store the flags passed to us +## is there no way to get the flags without quotes? +#CONFIGUREFLAGS=${ac_configure_args} +## and is this solution portable? time will show.... +CONFIGUREFLAGS=$(echo ${ac_configure_args} | sed "s/'//g") + +AC_ARG_WITH(pdversion,[ --with-pdversion=<ver> enforce a certain pd-version (e.g. 0.37)]) +AC_ARG_WITH(version, [ --with-version=<ver> enforce a certain zexy-version (e.g. 2.0)]) +AC_ARG_WITH(extension,[ --with-extension=<ext> enforce a certain extension for the dynamic library (e.g. dll)]) +AC_ARG_WITH(pdpath, [ --with-pd=</path/to/pd> where to look for pd-headers and and -libs]) +AC_ARG_ENABLE(PIC, [ --disable-PIC disable compilation with PIC-flag]) +AC_ARG_ENABLE(PIC, [ --disable-exportdynamic disable linkage with the export_dynamic-flag]) +AC_ARG_ENABLE(icc, [ --enable-icc enable ICC-support]) +AC_ARG_ENABLE(lpt, [ --enable-lpt enable parallelport-support]) +AC_ARG_ENABLE(library,[ --disable-library split the library into single externals]) + +if test "x" = "x${enable_PIC}" ; then + enable_PIC="${with_PIC}" +fi + +if test "x" = "x${enable_lpt}" ; then + enable_lpt="${with_lpt}" +fi + +if test "x" = "x${enable_icc}" ; then + enable_icc="${with_icc}" +fi + +if test "xno" != "x${enable_library}" ; then +dnl LATER: find a more generic way to generate the .._LIBRARY define + BUILDLIBRARY="-DZEXY_LIBRARY" +fi + +if test `uname | sed -e 's/^MINGW.*/NT/'` = NT ; +then + LD=${CC} +# LDFLAGS="-shared pd.dll" + EXT=dll + if test "x" = "x${enable_exportdynamic}" ; then + enable_exportdynamic="no" + fi +fi + + + +if test "x$with_pd" != "x"; then + if test -d "${with_pd}/src"; then + AC_MSG_RESULT([adding ${with_pd}/src to INCLUDES]) + INCLUDES="-I${with_pd}/src ${INCLUDES}" + fi + if test -d "${with_pd}/bin"; then + AC_MSG_RESULT([adding ${with_pd}/bin to LDFLAGS]) + LDFLAGS="-L${with_pd}/bin ${LDFLAGS}" + fi +fi + +if test $includedir +then + for id in $includedir + do + if test -d $id; then INCLUDES="-I$id $INCLUDES"; fi + done +fi +if test $libdir +then + for id in $libdir + do + if test -d $id; then LDFLAGS="-L$id $LDFLAGS"; fi + done +fi + + +CFLAGS="${INCLUDES} ${CFLAGS}" +CPPFLAGS="${INCLUDES} ${CPPFLAGS}" +INCLUDES="" + +dnl Checks for libraries. +dnl Replace `main' with a function in -lc: +AC_CHECK_LIB(c, main) +AC_CHECK_LIB(crtdll, fclose) + +AC_CHECK_LIB(coldname, lseek) +AC_CHECK_LIB(kernel32, main) +AC_CHECK_LIB(user32, main) +AC_CHECK_LIB(gdi32, main) + +dnl Replace `main' with a function in -lm: +AC_CHECK_LIB(m, main) +dnl Replace `main' with a function in -lpthread: +dnl AC_CHECK_LIB(pthread, main) +dnl Replace `main' with a function in -lstk: +dnl AC_CHECK_LIB(stk, main, STK=yes) + + +dnl for now i can test ICC only on linux +dnl LATER we might want to use it for other platforms (namely:windoze) too + +if test `uname -s` = Linux; +then + AC_ARG_ENABLE(icc, [ --enable-icc enable ICC-support]) + if test "$enable_icc" = "yes"; then + CC=icc + LD=icc + fi +fi + +AC_CHECK_LIB(pd, nullfn) + +AC_CHECK_LIB(regex, regcomp) + + +dnl Checks for header files. +AC_HEADER_STDC +AC_CHECK_HEADERS(stdlib.h stdio.h string.h math.h time.h sys/time.h regex.h alloca.h) + +dnl Checks for typedefs, structures, and compiler characteristics. +AC_HEADER_TIME + +### make-depend flags +if test "x$ac_cv_c_compiler_gnu" = "xyes"; then + AC_SUBST(MAKEDEP_FLAGS, "-MM") +else + AC_SUBST(MAKEDEP_FLAGS, "-M") +fi + + +dnl Checks for library functions. +AC_FUNC_MMAP +AC_CHECK_FUNCS(select socket strerror) + +dnl check for "-mms-bitfields" cflag +dnl why is there no generic compiler-check for a given flag ? +dnl it would make things so easy: AC_CHECK_FLAG([-mms-bitfields],,) +AC_CHECK_CFLAGS([-mms-bitfields]) + +if test "x$enable_PIC" != "xno"; then + AC_CHECK_CFLAGS([-fPIC]) +fi + +AC_CHECK_CFLAGS([-mfpmath=sse -msse]) + +dnl if we don't have $LD set, we set it to $(CC) +dnl LD=${LD:=$CC} +if test "x$LD" = "x" +then + if test "x$host" != "x" + then + LD=${host}-ld + if $(which ${LD} > /dev/null) + then + : + else + LD="" + fi + fi +fi +LD=${LD:=$CC} + + + +dnl if we don't have $STRIP set, we set it to ${host}-strip or strip +if test "x$STRIP" = "x" +then + if test "x$host" != "x" + then + STRIP=${host}-strip + if $(which ${host}-strip > /dev/null) + then + : + else + STRIP="echo fake strip" + fi + else + STRIP=strip + fi +fi +dnl STRIP=${STRIP:=strip} + + +dnl Checks for pd-version, to set the correct help-path +AC_MSG_CHECKING("pd>=0.37") + +if test "$with_pdversion" != "" +then + echo -n "($with_pdversion)... " + PD_VERSION="$with_pdversion" +else + if test "x$cross_compiling" = "xno" + then + +cat > conftest.c << EOF +#include <stdio.h> +#include "m_pd.h" +int main(){ + printf("%d.%d\n", PD_MAJOR_VERSION, PD_MINOR_VERSION); + return 0; +} +EOF + if $CC $CFLAGS -o conftest.o conftest.c > /dev/null 2>&1 + then + PD_VERSION=`./conftest.o` + else + PD_VERSION="" + fi + else + dnl we are cross-compiling... + echo -n "(X)..." + PD_VERSION="0.38" + fi +fi + +let PD_MAJORVERSION=`echo $PD_VERSION | cut -d"." -f1`+0 +let PD_MINORVERSION=`echo $PD_VERSION | cut -d"." -f2`+0 + +if test "$PD_MAJORVERSION" -gt 0 || test "$PD_MINORVERSION" -ge 37 +then + REFERENCEPATH=extra/ + echo "yes" +else + REFERENCEPATH=doc/5.reference/ + echo "no" +fi + +dnl check for zexy-version (but why...) +AC_MSG_CHECKING("zexy-version") + +if test "$with_version" != "" +then + echo -n "($with_version)...forced " + LIBRARY_VERSION="$with_version" +else + if test "x$cross_compiling" = "xno" + then +cat > conftest.c << EOF +#include <stdio.h> +#include "zexy.h" +int main(){ + printf("%s\n", VERSION); + return 0; +} +EOF + + if $CC $CFLAGS $LDFLAGS -o conftest.o conftest.c > /dev/null 2>&1 + then + LIBRARY_VERSION=$(./conftest.o) + echo "$LIBRARY_VERSION" + else + LIBRARY_VERSION="X" + echo "(unknown)" + fi + else + LIBRARY_VERSION="X" + echo "(X)" + fi +fi + + +dnl +dnl OK, checks which machines are here now +dnl this needs some rethinking when cross-compiling (?) +dnl +dnl AC_CHECK_LDFLAGS([-export_dynamic -shared]) + +if test "x$enable_exportdynamic" != "xno"; then + AC_CHECK_LDFLAGS([-export_dynamic]) +fi + +AC_CHECK_LDFLAGS([-shared]) + +if test `uname -s` = Linux; +then + EXT=pd_linux + STRIPFLAGS="--strip-unneeded" + if test "$enable_icc" = "yes"; then + CC=icc + fi + + if test $CC = "icc" + then + LD=$CC + AC_CHECK_LDFLAGS([-ip -ipo_obj]) + AC_CHECK_CFLAGS([-ip -ipo_obj]) + fi +fi + +dnl This should use '-bundle_loader /path/to/pd/bin/pd' instead of'-undefined suppress' +dnl then strip might do something +if test `uname -s` = Darwin; +then + LD=${CC} + EXT=pd_darwin + STRIP="echo faking strip" + STRIPFLAGS= + + if test "$enable_lpt" = "yes"; then + AC_MSG_ERROR("lpt not supported on this platform"); + fi + if test "$enable_lpt" = ""; then + AC_MSG_WARN("lpt not supported on this platform - disabling"); + enable_lpt="no"; + fi +fi + +#AC_CHECK_LDFLAGS([-dynamiclib -mmacosx-version-min=10.3 -undefined dynamic_lookup], +# , + AC_CHECK_LDFLAGS([-bundle -undefined suppress -flat_namespace]) +# ) + +AC_CHECK_LDFLAGS([-shared pd.dll]) + +if test `uname -s` = IRIX64; +then + LDFLAGS="-n32 -DUNIX -DIRIX -DN32 -woff 1080,1064,1185 \ + -OPT:roundoff=3 -OPT:IEEE_arithmetic=3 -OPT:cray_ivdep=true \ + -shared -rdata_shared" + EXT=pd_irix6 + dnl DFLAGS="-DUNIX -DIRIX6" + STRIPFLAGS="--strip-unneeded" + if test "$enable_lpt" = "yes"; then + AC_MSG_ERROR("lpt not supported on this platform"); + fi + if test "$enable_lpt" = ""; then + AC_MSG_WARN("lpt not supported on this platform - disabling"); + enable_lpt="no"; + fi +fi + +if test `uname -s` = IRIX32; +then + LDFLAGS="-o32 -DUNIX -DIRIX -O2 + -shared -rdata_shared" + EXT=pd_irix5 + dnl DFLAGS="-DUNIX -DIRIX5" + STRIPFLAGS="--strip-unneeded" + if test "$enable_lpt" = "yes"; then + AC_MSG_ERROR("lpt not supported on this platform"); + fi + if test "$enable_lpt" = ""; then + AC_MSG_WARN("lpt not supported on this platform - disabling"); + enable_lpt="no"; + fi +fi + + +if test "x$with_extension" != "x" +then + EXT=$with_extension +fi + +AC_CHECK_HEADERS(linux/ppdev.h, [ have_ppdev="yes" ], [ have_ppdev="no" ]) + +dnl check for LPT +AC_MSG_CHECKING("parallel-port") +if test "$enable_lpt" != "no" +then + if test "$enable_lpt" = "yes" + then + AC_DEFINE([Z_WANT_LPT]) + echo "yes (forced)" + else + +cat > conftest.c << EOF +# include <sys/io.h> +int main(){ + ioperm(0x3bc, 8, 1); + outb(0, 0x3bc); + ioperm(0x3bc, 8, 0); + return 0; +} +EOF + + if $CC $CFLAGS -o conftest.o conftest.c > /dev/null 2>&1 + then + AC_DEFINE([Z_WANT_LPT]) + if test "x$have_ppdev" = "xyes" + then + echo "yes (with device-support)" + else + echo "yes" + fi + else + echo "no" + fi + fi +else + echo "no (ignored)" +fi + + +AC_CHECK_HEADERS(m_pd.h, , + cat config.log + AC_ERROR([m_pd.h is desperately needed! + install pd and/or use + "--with-pd=</path/to/pd/>" or + "--includedir=</path/to/pd/src/>"])) + +LFLAGS=${LDFLAGS} +AC_OUTPUT(Make.config) + +touch zexyconf.h + +#rm -f conftest.* |