Makefile 2.1 KB

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