summaryrefslogtreecommitdiffstats
path: root/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'Makefile')
-rw-r--r--Makefile106
1 files changed, 106 insertions, 0 deletions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..58c74e0
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,106 @@
+CC = gcc
+CFLAGS ?= -O2 -pipe -Wall -Wextra -Wno-variadic-macros -Wno-strict-aliasing
+STRIP = strip
+INSTALL = install
+SED = sed
+
+LUA_VERSION = 5.1
+DESTDIR =
+PREFIX = /usr/local
+BINDIR = $(PREFIX)/bin
+LIBDIR = $(PREFIX)/lib/lua/$(LUA_VERSION)/lem
+INCDIR = $(PREFIX)/include
+
+programs = lem utils.so
+headers = lem.h config.h macros.h lua/luaconf.h lua/lua.h lua/lauxlib.h libev/ev.h
+
+ifdef NDEBUG
+DEFINES += -DNDEBUG
+endif
+
+ifdef V
+M=@\#
+O=
+else
+M=@
+O=@
+endif
+
+# From lua/Makefile
+CORE_O= lapi.o lcode.o ldebug.o ldo.o ldump.o lfunc.o lgc.o llex.o lmem.o \
+ lobject.o lopcodes.o lparser.o lstate.o lstring.o ltable.o ltm.o \
+ lundump.o lvm.o lzio.o
+LIB_O= lauxlib.o lbaselib.o ldblib.o liolib.o lmathlib.o loslib.o ltablib.o \
+ lstrlib.o loadlib.o linit.o
+
+.PHONY: all lua strip install clean
+.PRECIOUS: %.pic.o
+
+all: $(programs)
+
+config.h: config.in
+ $Mecho ' SED $@'
+ $O$(SED) -e 's|@PREFIX@|$(PREFIX)/|' $< > $@
+
+event.o: event.c config.h
+ $Mecho ' CC $@'
+ $O$(CC) $(CFLAGS) -Iinclude -w $(DEFINES) -c $<
+
+%.pic.o: %.c config.h
+ $Mecho ' CC $@'
+ $O$(CC) $(CFLAGS) -Iinclude -fPIC -nostartfiles $(DEFINES) -c $< -o $@
+
+%.o: %.c %.h config.h
+ $Mecho ' CC $@'
+ $O$(CC) $(CFLAGS) -Iinclude $(DEFINES) -c $< -o $@
+
+%.o: %.c config.h
+ $Mecho ' CC $@'
+ $O$(CC) $(CFLAGS) -Iinclude $(DEFINES) -c $< -o $@
+
+lem: $(CORE_O:%=lua/%) $(LIB_O:%=lua/%) event.o lem.o
+ $Mecho ' LD $@'
+ $O$(CC) -rdynamic -lm -ldl $(LDFLAGS) $^ -o $@
+
+utils.so: utils.pic.o
+ $Mecho ' LD $@'
+ $O$(CC) -shared $(LDFLAGS) $^ -o $@
+
+%-strip: %
+ $Mecho ' STRIP $<'
+ $O$(STRIP) $<
+
+strip: $(programs:%=%-strip)
+
+bindir-install:
+ $Mecho " INSTALL -d $(BINDIR)"
+ $O$(INSTALL) -d $(DESTDIR)$(BINDIR)
+
+lem-install: lem bindir-install
+ $Mecho " INSTALL $<"
+ $O$(INSTALL) $< $(DESTDIR)$(BINDIR)/$<
+
+incdir-install:
+ $Mecho " INSTALL -d $(INCDIR)/lem"
+ $O$(INSTALL) -d $(DESTDIR)$(INCDIR)/lem
+
+lem.h-install: lem.h incdir-install
+ $Mecho " INSTALL $<"
+ $O$(INSTALL) $< $(DESTDIR)$(INCDIR)/$<
+
+%.h-install: %.h incdir-install
+ $Mecho " INSTALL $(notdir $<)"
+ $O$(INSTALL) $< $(DESTDIR)$(INCDIR)/lem/$(notdir $<)
+
+libdir-install:
+ $Mecho " INSTALL -d $(LIBDIR)"
+ $O$(INSTALL) -d $(DESTDIR)$(LIBDIR)
+
+%.so-install: %.so libdir-install
+ $Mecho " INSTALL $<"
+ $O$(INSTALL) $< $(DESTDIR)$(LIBDIR)/$<
+
+install: $(programs:%=%-install) $(headers:%=%-install)
+
+clean:
+ rm -f config.h $(programs) *.o lua/*.o *.c~ *.h~