lua: use uci_foreach_element_safe in uci_lua_foreach() - patch by jow
[project/uci.git] / lua / Makefile
index 29d7fbd..ba5205f 100644 (file)
@@ -1,27 +1,44 @@
-CC=gcc
-LD=ld
-CFLAGS=-O2 -Wall -Werror -pedantic --std=gnu99 -Wno-unused
-CPPFLAGS=-I..
-LIBS=-L.. -luci
-OS=$(shell uname)
-LINK=$(CC)
+include ../Makefile.inc
+LUA_VERSION=5.1
+PREFIX_SEARCH=/usr /usr/local /opt/local
+LUA_PLUGINDIR=$(firstword \
+       $(foreach ldir,$(subst ;, ,$(shell lua -e 'print(package.cpath)')), \
+               $(if $(findstring lib/lua/,$(ldir)),$(patsubst %/?.so,%,$(ldir))) \
+       ) \
+)
+
+# find lua prefix
+LUA_PREFIX=$(firstword \
+       $(foreach prefix,$(PREFIX_SEARCH),\
+               $(if $(wildcard $(prefix)/include/lua.h),$(prefix)) \
+       ) \
+)
+
+libdir=$(prefix)/libs
+luadir=$(if $(LUA_PLUGINDIR),$(LUA_PLUGINDIR),$(libdir)/lua/$(LUA_VERSION))
+luainc=$(shell pkg-config --silence-errors --cflags lua$(LUA_VERSION))
+
+CPPFLAGS=-I.. $(if $(luainc),$(luainc), -I$(LUA_PREFIX)/include)
+LIBS=-L.. -luci $(shell pkg-config --silence-errors --libs lua$(LUA_VERSION))
+
+PLUGIN_LD=$(CC)
 ifeq ($(OS),Darwin)
-  SHLIB_FLAGS=-bundle -undefined dynamic_lookup
+  PLUGIN_LDFLAGS=-bundle -undefined dynamic_lookup
 else
-  SHLIB_FLAGS=-shared -Wl,-soname,$(SHLIB_FILE)
+  PLUGIN_LDFLAGS=-shared -Wl,-soname,$(SHLIB_FILE)
 endif
 
 all: uci.so
 
 uci.so: uci.o
-       $(LINK) $(SHLIB_FLAGS) -o $@ $^ $(LIBS)
+       $(PLUGIN_LD) $(PLUGIN_LDFLAGS) -o $@ $^ $(LIBS)
 
 %.o: %.c
-       $(CC) $(CPPFLAGS) $(CFLAGS) -c -o $@ $<
+       $(CC) $(CPPFLAGS) $(CFLAGS) $(FPIC) -c -o $@ $<
 
 install:
-       mkdir -p $(DESTDIR)/usr/lib/lua
-       install -m0644 uci.so $(DESTDIR)/usr/lib/lua/
+       mkdir -p $(DESTDIR)$(luadir)
+       $(INSTALL) -m0644 uci.so $(DESTDIR)$(luadir)/
 
 clean:
        rm -f *.so *.o uci.so