summaryrefslogtreecommitdiff
path: root/B/generic
diff options
context:
space:
mode:
Diffstat (limited to 'B/generic')
-rw-r--r--B/generic/Makefile91
-rwxr-xr-xB/generic/build.sh69
-rwxr-xr-xB/generic/build_freestanding.sh8
-rwxr-xr-xB/generic/build_gcc.sh25
-rwxr-xr-xB/generic/clean.sh7
5 files changed, 200 insertions, 0 deletions
diff --git a/B/generic/Makefile b/B/generic/Makefile
new file mode 100644
index 0000000..acddb04
--- /dev/null
+++ b/B/generic/Makefile
@@ -0,0 +1,91 @@
+# Copyright (C) 1996-2011 Markus F.X.J. Oberhumer
+#
+# this is modelled after build.sh; needs GNU make 3.80 or better
+
+SHELL = /bin/sh
+
+##
+## setup flags
+##
+
+##top_srcdir ?= ../..
+top_srcdir ?= $(dir $(word $(words $(MAKEFILE_LIST)),$(MAKEFILE_LIST)))../..
+AR ?= ar
+CC ?= cc
+CFLAGS ?= -O
+
+CFI = -I$(top_srcdir)/include -I$(top_srcdir) -I$(top_srcdir)/src
+BNAME = lzo2
+BLIB = lib$(BNAME).a
+
+CF = $(CPPFLAGS) $(CFI) $(CFLAGS)
+LF = $(LDFLAGS) $(LZO_EXTRA_LDFLAGS)
+LL = $(BLIB) $(LIBS) $(LZO_EXTRA_LIBS)
+
+
+##
+## setup files
+##
+
+__map = $(foreach __map_v,$(2),$(call $(1),$(__map_v)))
+__object_filename = $(addsuffix .o,$(basename $(notdir $(1))))
+
+BLIB_SOURCES := $(wildcard $(top_srcdir)/src/*.c)
+BLIB_SOURCES += $(LZO_EXTRA_SOURCES)
+BLIB_OBJECTS := $(call __map,__object_filename,$(BLIB_SOURCES))
+PROGRAMS = dict.out lzopack.out precomp.out precomp2.out simple.out lzotest.out
+
+
+##
+## rules
+##
+
+all.targets ?= $(BLIB) $(PROGRAMS) testmini.out
+all: $(all.targets)
+
+clean:
+ rm -f *.d *.o $(BLIB) $(PROGRAMS) testmini.out
+
+$(BLIB): $(BLIB_OBJECTS) $(LZO_EXTRA_OBJECTS)
+ rm -f $@
+ $(AR) rcs $@ $^
+
+# dynamically construct object rules
+define BLIB_OBJECT_template
+ $(call __object_filename,$(1)) : $(1) ; $$(CC) $$(CF) $$(LZO_EXTRA_CPPFLAGS) $$(LZO_EXTRA_CFLAGS) -c $$<
+endef
+$(foreach s,$(BLIB_SOURCES),$(eval $(call BLIB_OBJECT_template,$(s))))
+
+dict.out: $(top_srcdir)/examples/dict.c
+ $(CC) $(CF) $(LF) -o $@ $< $(LL)
+lzopack.out: $(top_srcdir)/examples/lzopack.c
+ $(CC) $(CF) $(LF) -o $@ $< $(LL)
+precomp.out: $(top_srcdir)/examples/precomp.c
+ $(CC) $(CF) $(LF) -o $@ $< $(LL)
+precomp2.out: $(top_srcdir)/examples/precomp2.c
+ $(CC) $(CF) $(LF) -o $@ $< $(LL)
+simple.out: $(top_srcdir)/examples/simple.c
+ $(CC) $(CF) $(LF) -o $@ $< $(LL)
+lzotest.out: $(top_srcdir)/lzotest/lzotest.c
+ $(CC) $(CF) $(LF) -o $@ $< $(LL)
+
+testmini.out: $(top_srcdir)/minilzo/testmini.c $(top_srcdir)/minilzo/minilzo.c
+ $(CC) $(CF) $(LF) -I$(top_srcdir)/include/lzo -o $@ $^ $(LIBS)
+
+
+# dependencies
+$(PROGRAMS): $(BLIB)
+# object dependencies are generated via -MMD
+-include *.d
+
+
+# debug
+show_vars:
+ @echo "BLIB_SOURCES = $(BLIB_SOURCES)"
+ @echo "BLIB_OBJECTS = $(BLIB_OBJECTS)"
+ @echo "PROGRAMS = $(PROGRAMS)"
+ @echo "LZO_EXTRA_SOURCES = $(LZO_EXTRA_SOURCES)"
+ @echo "LZO_EXTRA_OBJECTS = $(LZO_EXTRA_OBJECTS)"
+
+.PHONY: all clean show_vars
+
diff --git a/B/generic/build.sh b/B/generic/build.sh
new file mode 100755
index 0000000..1bf5585
--- /dev/null
+++ b/B/generic/build.sh
@@ -0,0 +1,69 @@
+#! /bin/sh
+# vi:ts=4:et
+set -e
+echo "// Copyright (C) 1996-2011 Markus F.X.J. Oberhumer"
+echo "//"
+echo "// Generic Posix/Unix system"
+echo "// Generic C compiler"
+
+test "X${top_srcdir}" = X && top_srcdir=`echo "$0" | sed 's,[^/]*$,,'`../..
+
+test "X${AR}" = X && AR="ar"
+test "X${CC}" = X && CC="cc"
+test "X${CFLAGS+set}" = Xset || CFLAGS="-O"
+# CPPFLAGS, LDFLAGS, LIBS
+# LZO_EXTRA_CPPFLAGS, LZO_EXTRA_CFLAGS, LZO_EXTRA_LDFLAGS
+# LZO_EXTRA_SOURCES, LZO_EXTRA_OBJECTS, LZO_EXTRA_LIBS
+
+CFI="-I${top_srcdir}/include -I${top_srcdir} -I${top_srcdir}/src"
+BNAME=lzo2
+BLIB=lib${BNAME}.a
+
+CF="$CPPFLAGS $CFI $CFLAGS"
+# info: we restrict ourselves to pure ANSI C library functions for the examples
+CF="-DLZO_LIBC_ISOC90=1 $CF"
+# info: we do not use _any_ external functions in freestanding mode
+test -z "$LZO_CFG_FREESTANDING" || CF="-DLZO_CFG_FREESTANDING=1 $CF"
+LF="$LDFLAGS $LZO_EXTRA_LDFLAGS"
+LL="$BLIB $LIBS $LZO_EXTRA_LIBS"
+
+. $top_srcdir/B/generic/clean.sh
+
+for f in $top_srcdir/src/*.c $LZO_EXTRA_SOURCES; do
+ echo $CC $CF $LZO_EXTRA_CPPFLAGS $LZO_EXTRA_CFLAGS -c $f
+ $CC $CF $LZO_EXTRA_CPPFLAGS $LZO_EXTRA_CFLAGS -c $f
+done
+
+echo $AR rcs $BLIB *.o $LZO_EXTRA_OBJECTS
+ $AR rcs $BLIB *.o $LZO_EXTRA_OBJECTS
+
+
+if test -n "$LZO_CFG_FREESTANDING"; then
+
+echo "//"
+echo "// Building $BLIB in freestanding mode was successful. All done."
+echo "// Now try 'nm --extern-only $BLIB'"
+
+else
+
+for f in dict lzopack precomp precomp2 simple; do
+ echo $CC $CF $LF -o $f.out $top_srcdir/examples/$f.c $LL
+ $CC $CF $LF -o $f.out $top_srcdir/examples/$f.c $LL
+done
+echo $CC $CF $LF -o lzotest.out $top_srcdir/lzotest/lzotest.c $LL
+ $CC $CF $LF -o lzotest.out $top_srcdir/lzotest/lzotest.c $LL
+
+for f in minilzo.c testmini.c; do
+ XF="-I$top_srcdir/include/lzo $CF $LZO_EXTRA_CPPFLAGS $LZO_EXTRA_CFLAGS"
+ echo $CC $XF -c $top_srcdir/minilzo/$f
+ $CC $XF -c $top_srcdir/minilzo/$f
+done
+echo $CC $CF $LF -o testmini.out testmini.o minilzo.o $LIBS $LZO_EXTRA_LIBS
+ $CC $CF $LF -o testmini.out testmini.o minilzo.o $LIBS $LZO_EXTRA_LIBS
+
+
+echo "//"
+echo "// Building LZO was successful. All done."
+
+fi
+true
diff --git a/B/generic/build_freestanding.sh b/B/generic/build_freestanding.sh
new file mode 100755
index 0000000..9473dd6
--- /dev/null
+++ b/B/generic/build_freestanding.sh
@@ -0,0 +1,8 @@
+#! /bin/sh
+# vi:ts=4:et
+
+test "X${top_srcdir}" = X && top_srcdir=`echo "$0" | sed 's,[^/]*$,,'`../..
+
+LZO_CFG_FREESTANDING=1
+
+. $top_srcdir/B/generic/build.sh
diff --git a/B/generic/build_gcc.sh b/B/generic/build_gcc.sh
new file mode 100755
index 0000000..179d8c0
--- /dev/null
+++ b/B/generic/build_gcc.sh
@@ -0,0 +1,25 @@
+#! /bin/sh
+# vi:ts=4:et
+set -e
+echo "// Using GNU C compiler."
+echo "//"
+
+test "X${top_srcdir}" = X && top_srcdir=`echo "$0" | sed 's,[^/]*$,,'`../..
+UNAME_MACHINE=unknown
+
+CC="gcc -fPIC"
+CC="gcc -static"
+CC="gcc"
+CFLAGS="-Wall -O2 -fomit-frame-pointer"
+
+# delete the next line to disable assembler support
+UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
+case $UNAME_MACHINE in
+ i[34567]86)
+ CC="$CC -m32"
+ CPPFLAGS="-DLZO_USE_ASM"
+ LZO_EXTRA_SOURCES=$top_srcdir/asm/i386/src_gas/*.S
+ ;;
+esac
+
+. $top_srcdir/B/generic/build.sh
diff --git a/B/generic/clean.sh b/B/generic/clean.sh
new file mode 100755
index 0000000..11c2395
--- /dev/null
+++ b/B/generic/clean.sh
@@ -0,0 +1,7 @@
+#! /bin/sh
+# vi:ts=4:et
+# Copyright (C) 1996-2011 Markus F.X.J. Oberhumer
+
+rm -f *.o liblzo2.a dict.out lzopack.out precomp.out precomp2.out simple.out lzotest.out testmini.out
+
+true