--- /dev/null
+*.o
+/greeter.[ch]
+/greet
--- /dev/null
+### -*-makefile-*-
+
+SOD = sod
+
+.SUFFIXES: .sod .c .h
+.sod.c:; $(SOD) -tc $<
+.sod.h:; $(SOD) -th $<
+.PRECIOUS: %.c %.h
+
+all::
+.PHONY: all
+
+clean::; rm -f *.o
+.PHONY: clean
+
+all:: greet
+greet: greeter.o greet.o
+ $(CC) -o greet $^ -lsod
+greet.o greeter.o: greeter.h
+clean::; rm -f greet greeter.c greeter.h
--- /dev/null
+/* -*-c-*- */
+
+#include "greeter.h"
+
+int main(void)
+{
+ SOD_DECL(Greeter, g, NO_KWARGS);
+
+ Greeter_greet(g, stdout);
+ return (0);
+}
--- /dev/null
+/* -*-sod-*- */
+
+code c: includes {
+#include "greeter.h"
+}
+
+code h: includes {
+#include <stdio.h>
+#include <sod/sod.h>
+}
+
+typename FILE;
+
+class Greeter: SodObject {
+ void greet(FILE *fp) {
+ fputs("Hello, world!\n", fp);
+ }
+}