Index: buildsys.mk.in ================================================================== --- buildsys.mk.in +++ buildsys.mk.in @@ -148,16 +148,23 @@ else \ ${LINK_FAILED}; \ fi ${LIB} ${LIB_NOINST}: ${EXT_DEPS} ${OBJS} - ${LINK_STATUS} - if ${LD} -o $@ ${OBJS} ${LIB_LDFLAGS} ${LDFLAGS} ${LIBS}; then \ - ${LINK_OK}; \ - else \ - ${LINK_FAILED}; \ - fi + case $@ in \ + *.a) \ + ${MAKE} ${MFLAGS} STATIC_LIB=${LIB} LIB= $@ || exit 1 \ + ;; \ + *) \ + ${LINK_STATUS}; \ + if ${LD} -o $@ ${OBJS} ${LIB_LDFLAGS} ${LDFLAGS} ${LIBS}; then \ + ${LINK_OK}; \ + else \ + ${LINK_FAILED}; \ + fi \ + ;; \ + esac ${PLUGIN} ${PLUGIN_NOINST}: ${EXT_DEPS} ${OBJS} ${LINK_STATUS} if ${LD} -o $@ ${OBJS} ${PLUGIN_LDFLAGS} ${LDFLAGS} ${LIBS}; then \ ${LINK_OK}; \ @@ -395,11 +402,11 @@ for i in ${SUBDIRS}; do \ ${DIR_ENTER}; \ ${MAKE} ${MFLAGS} clean || exit 1; \ ${DIR_LEAVE}; \ done - + for i in ${OBJS} ${CLEAN} ${CLEAN_LIB} ${DEPS}; do \ if test -f $$i -o -d $$i; then \ if rm -fr $$i; then \ ${DELETE_OK}; \ else \ @@ -412,11 +419,11 @@ for i in ${SUBDIRS}; do \ ${DIR_ENTER}; \ ${MAKE} ${MFLAGS} distclean || exit 1; \ ${DIR_LEAVE}; \ done - + for i in ${PROG} ${PROG_NOINST} ${LIB} ${LIB_NOINST} ${STATIC_LIB} ${STATIC_LIB_NOINST} ${PLUGIN} ${PLUGIN_NOINST} ${DISTCLEAN} .deps *~; do \ if test -f $$i -o -d $$i; then \ if rm -fr $$i; then \ ${DELETE_OK}; \ else \ Index: configure.ac ================================================================== --- configure.ac +++ configure.ac @@ -6,19 +6,18 @@ AC_PROG_CC AC_PROG_OBJC AC_PROG_CPP AC_PROG_LN_S -AC_PATH_PROG(AR, ar) AC_PROG_EGREP CFLAGS="$CFLAGS -Wall" OBJCFLAGS="$OBJCFLAGS -Wall -fobjc-exceptions" AC_DEFINE(OF_CONFIG_H, 1, [Define so that we know we got our config.h]) -BUILDSYS_SHARED_LIB +BUILDSYS_LIB AC_C_BIGENDIAN([AC_DEFINE(OF_BIG_ENDIAN, 1, [Whether we are big endian])]) AC_MSG_CHECKING(for SIZE_MAX) AC_EGREP_CPP(yes, [ #include Index: m4/buildsys.m4 ================================================================== --- m4/buildsys.m4 +++ m4/buildsys.m4 @@ -17,10 +17,22 @@ 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 + +AC_DEFUN([BUILDSYS_LIB], [ + AC_ARG_ENABLE(shared, + [ --disable-shared don't build shared libraries], + enable_shared="$enableval") + + if test x"$enableval" = x"no"; then + BUILDSYS_STATIC_LIB_ONLY + else + BUILDSYS_SHARED_LIB + fi +]) AC_DEFUN([BUILDSYS_PROG_IMPLIB], [ AC_MSG_CHECKING(whether we need an implib) case "$target" in *-*-cygwin* | *-*-mingw*) @@ -32,11 +44,11 @@ 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], [ @@ -126,10 +138,33 @@ AC_SUBST(LIB_SUFFIX) AC_SUBST(PLUGIN_CPPFLAGS) AC_SUBST(PLUGIN_CFLAGS) AC_SUBST(PLUGIN_LDFLAGS) AC_SUBST(PLUGIN_SUFFIX) + AC_SUBST(INSTALL_LIB) + AC_SUBST(UNINSTALL_LIB) + AC_SUBST(CLEAN_LIB) +]) + +AC_DEFUN([BUILDSYS_STATIC_LIB_ONLY], [ + AC_PATH_PROG(AR, ar) + AC_PROG_RANLIB + + LIB_CPPFLAGS='' + LIB_CFLAGS='' + LIB_LDFLAGS='' + LIB_PREFIX='lib' + LIB_SUFFIX='.a' + INSTALL_LIB='${INSTALL} -m 644 $$i ${DESTDIR}${libdir}/$$i' + UNINSTALL_LIB='rm -f ${DESTDIR}${libdir}/$$i' + CLEAN_LIB='' + + AC_SUBST(LIB_CPPFLAGS) + AC_SUBST(LIB_CFLAGS) + AC_SUBST(LIB_LDFLAGS) + AC_SUBST(LIB_PREFIX) + AC_SUBST(LIB_SUFFIX) AC_SUBST(INSTALL_LIB) AC_SUBST(UNINSTALL_LIB) AC_SUBST(CLEAN_LIB) ]) Index: src/Makefile ================================================================== --- src/Makefile +++ src/Makefile @@ -14,11 +14,12 @@ OFString.m \ OFTCPSocket.m \ OFXMLFactory.m \ ${ASPRINTF} -INCLUDES = ${SRCS:.m=.h} \ +INCLUDESTMP = ${SRCS:.c=.h} +INCLUDES = ${INCLUDESTMP:.m=.h} \ OFMacros.h \ OFStream.h include ../buildsys.mk Index: tests/OFTCPSocket/OFTCPSocket.m ================================================================== --- tests/OFTCPSocket/OFTCPSocket.m +++ tests/OFTCPSocket/OFTCPSocket.m @@ -16,10 +16,11 @@ #import #import "OFTCPSocket.h" #import "OFExceptions.h" +#ifndef _WIN32 /* FIXME */ inline uint16_t get_port() { uint16_t port = (uint16_t)random(); if (port < 1024) @@ -27,14 +28,16 @@ printf("Using port %d...\n", port); return port; } +#endif int main() { +#ifndef _WIN32 /* FIXME */ uint16_t port; srandom(time(NULL)); @try { @@ -106,8 +109,9 @@ [server free]; } @catch(OFException *e) { printf("EXCEPTION: %s\n", [e cString]); return 1; } +#endif return 0; }