Makefile 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. VERSION=0.6
  2. # optional features
  3. PLUGIN_SUPPORT=1
  4. DEBUG=0
  5. DEBUG_TYPECAST=0
  6. include Makefile.inc
  7. LIBS=-lc
  8. SHLIB_FILE=libuci.$(SHLIB_EXT).$(VERSION)
  9. define add_feature
  10. @echo "$(if $(findstring 1,$($(1))),#define UCI_$(1) 1,#undef UCI_$(1))" >> $@.tmp
  11. endef
  12. LIBUCI_DEPS=file.c history.c list.c util.c uci.h uci_config.h uci_internal.h
  13. all: uci-static uci libuci.$(SHLIB_EXT) libucimap.a
  14. cli.o: cli.c uci.h uci_config.h
  15. ucimap.o: ucimap.c uci.h uci_config.h ucimap.h uci_list.h
  16. uci_config.h: FORCE
  17. @rm -f "$@.tmp"
  18. $(call add_feature,PLUGIN_SUPPORT)
  19. $(call add_feature,DEBUG)
  20. $(call add_feature,DEBUG_TYPECAST)
  21. @if [ \! -f "$@" ] || ! cmp "$@.tmp" "$@" >/dev/null; then \
  22. mv "$@.tmp" "$@"; \
  23. else \
  24. rm -f "$@.tmp"; \
  25. fi
  26. uci: cli.o libuci.$(SHLIB_EXT)
  27. $(CC) -o $@ $< -L. -luci
  28. uci-static: cli.o libuci.a
  29. $(CC) $(CFLAGS) -o $@ $^
  30. libuci-static.o: libuci.c $(LIBUCI_DEPS)
  31. $(CC) $(CFLAGS) -c -o $@ $<
  32. libuci-shared.o: libuci.c $(LIBUCI_DEPS)
  33. $(CC) $(CFLAGS) $(FPIC) -c -o $@ $<
  34. libuci.a: libuci-static.o
  35. rm -f $@
  36. $(AR) rc $@ $^
  37. $(RANLIB) $@
  38. libucimap.a: ucimap.o
  39. rm -f $@
  40. $(AR) rc $@ $^
  41. $(RANLIB) $@
  42. libuci.$(SHLIB_EXT): libuci-shared.o
  43. $(LINK) $(SHLIB_FLAGS) -o $(SHLIB_FILE) $^ $(LIBS)
  44. ln -sf $(SHLIB_FILE) $@
  45. clean:
  46. rm -f uci uci-static *.[oa] *.so* *.dylib* uci_config.h
  47. install: install-bin install-dev
  48. install-dev: all
  49. $(MKDIR) -p $(DESTDIR)$(prefix)/lib
  50. $(MKDIR) -p $(DESTDIR)$(prefix)/include
  51. $(INSTALL) -m0644 libuci.a libucimap.a $(DESTDIR)$(prefix)/lib/
  52. $(INSTALL) -m0644 uci_config.h uci.h uci_list.h ucimap.h $(DESTDIR)$(prefix)/include/
  53. install-bin: all
  54. $(INSTALL) -m0755 $(SHLIB_FILE) $(DESTDIR)$(prefix)/lib/
  55. ln -sf $(SHLIB_FILE) $(DESTDIR)$(prefix)/lib/libuci.$(SHLIB_EXT)
  56. $(MKDIR) -p $(DESTDIR)$(prefix)/bin
  57. $(INSTALL) -m0755 uci $(DESTDIR)$(prefix)/bin/
  58. test: all
  59. make -C test
  60. FORCE: ;
  61. .PHONY: FORCE