--- /dev/null
+#! /bin/sh
+
+cd $(dirname $0)
+
+do_makefile() {
+ dir=$(dirname $1)
+ case $dir in
+ ./*/*/*) rel="../../..";;
+ ./*/*) rel="../.." ;;
+ ./*) rel=".." ;;
+ .) rel="." ;;
+ *) echo "cannot guess deepness of '$dir'"; exit 1
+ esac
+ echo "all %: ; @\$(MAKE) -s -C $rel/build/$dir \$*" > $dir/Makefile
+ echo "-include \$(wildcard *.mk)" >> $dir/Makefile
+}
+
+find . -name CMakeLists.txt | while read file; do do_makefile $file; done
+
+builddir=.build-$(hostname)-$(gcc -dumpmachine)-$(gcc -dumpversion)
+rm -rf $builddir
+mkdir -p $builddir
+ln -s $builddir build
+
+if test $# -eq 0; then
+ cd $builddir && cmake -DWITH_NNTP=1 -DWITH_IDN=1 -DUSE_HCACHE=1 -DWITH_LIBESMTP=1 --with-prefix=/usr ..
+else
+ cd $builddir && cmake "$@" ..
+fi
+++ /dev/null
-# automake sucks, badly
-all: ../lib-mime/mime-token.h \
- ../lib-mime/mime.li \
- ../lib-lua/lua-token.h \
- ../lib-lua/madmutt.li \
- ../lib-sys/mutt_ssl.li \
- ../alias.li \
- ../crypt.li \
- ../buffy.li \
- ../charset.li
-
-
-../%: ; $(MAKE) -C $(@D) $(@F)
-
-cpkg2c: cpkg2c.mll
- ocamllex $<
- $(if $(shell which ocamlopt),ocamlopt -o $@ str.cmxa,ocamlc -o $@ str.cma) $@.ml
- @$(RM) cpkg2c.ml cpkg2c.c* cpkg2c.o
-
-distclean clean:
- $(RM) cpkg2c
+++ /dev/null
-ifneq ($(filter 4.%,$(shell gcc -dumpversion)),)
- GCC4=1
-endif
-
-CFLAGS := -ggdb3
-
-# Use pipes and not temp files.
-CFLAGS += -pipe
-# optimize even more
-CFLAGS += -O2
-# let the type char be unsigned by default
-CFLAGS += -funsigned-char
-CFLAGS += -fstrict-aliasing
-# turn on all common warnings
-CFLAGS += -Wall
-# turn on extra warnings
-CFLAGS += $(if $(GCC4),-Wextra,-W)
-# treat warnings as errors
-#CFLAGS += -Werror
-CFLAGS += -Wchar-subscripts
-# warn about undefined preprocessor identifiers
-CFLAGS += -Wundef
-# warn about local variable shadowing another local variable
-CFLAGS += -Wshadow
-# warn about casting of pointers to increased alignment requirements
-CFLAGS += -Wcast-align
-# make string constants const
-CFLAGS += -Wwrite-strings
-# warn about implicit conversions with side effects
-# fgets, calloc and friends take an int, not size_t...
-#CFLAGS += -Wconversion
-# warn about comparisons between signed and unsigned values
-CFLAGS += -Wsign-compare
-# warn about unused declared stuff
-CFLAGS += -Wunused
-CFLAGS += -Wno-unused-parameter
-# warn about variable use before initialization
-CFLAGS += -Wuninitialized
-# warn about variables which are initialized with themselves
-CFLAGS += -Winit-self
-# warn about pointer arithmetic on void* and function pointers
-CFLAGS += -Wpointer-arith
-# warn about multiple declarations
-CFLAGS += -Wredundant-decls
-# warn if the format string is not a string literal
-#CFLAGS += -Wformat-nonliteral
-# do not warn about zero-length formats.
-CFLAGS += -Wno-format-zero-length
-# missing prototypes
-CFLAGS += -Wmissing-prototypes
-# warn about functions without format attribute that should have one
-CFLAGS += -Wmissing-format-attribute
-