Makefile 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283
  1. #
  2. # lib/Makefile
  3. #
  4. # This library is free software; you can redistribute it and/or
  5. # modify it under the terms of the GNU Lesser General Public
  6. # License as published by the Free Software Foundation version 2.1
  7. # of the License.
  8. #
  9. # Copyright (c) 2003-2006 Thomas Graf <tgraf@suug.ch>
  10. #
  11. ifeq ($(shell [ ! -r ../Makefile.opts ] && echo 1),)
  12. include ../Makefile.opts
  13. endif
  14. # Core
  15. CIN := $(wildcard *.c)
  16. # NETLINK_ROUTE
  17. CIN += $(wildcard route/*.c)
  18. # Schedulers
  19. CIN += $(wildcard route/sch/*.c)
  20. # Classifiers
  21. CIN += $(wildcard route/cls/*.c)
  22. # Link Info Modules
  23. CIN += $(wildcard route/link/*.c)
  24. # NETLINK_GENERIC
  25. CIN += $(wildcard genl/*.c)
  26. # fib lookup
  27. CIN += $(wildcard fib_lookup/*.c)
  28. # Netfilter
  29. CIN += $(wildcard netfilter/*.c)
  30. DEPS := $(CIN:%.c=%.d)
  31. OBJ := $(CIN:%.c=%.o)
  32. CFLAGS += -fPIC
  33. OUT_SLIB := $(PACKAGE_NAME).so.$(PACKAGE_VERSION)
  34. OUT_AR := $(PACKAGE_NAME).a
  35. LN_SLIB := $(PACKAGE_NAME).so
  36. LN1_SLIB := $(LN_SLIB).1
  37. export
  38. .PHONY: all clean install librtn.a $(OUT_SLIB)
  39. all:
  40. @echo " MAKE $(OUT_SLIB)"; \
  41. $(MAKE) $(OUT_SLIB); \
  42. $(MAKE) $(OUT_AR)
  43. $(OUT_SLIB): ../Makefile.opts $(OBJ)
  44. @echo " LD $(OUT_SLIB)"; \
  45. $(CC) -shared -Wl,-soname,libnl.so.1 -o $(OUT_SLIB) $(OBJ) $(LIBNL_LIB) -lc
  46. @echo " LN $(OUT_SLIB) $(LN1_SLIB)"; \
  47. rm -f $(LN1_SLIB) ; $(LN) -s $(OUT_SLIB) $(LN1_SLIB)
  48. @echo " LN $(LN1_SLIB) $(LN_SLIB)"; \
  49. rm -f $(LN_SLIB) ; $(LN) -s $(LN1_SLIB) $(LN_SLIB)
  50. $(OUT_AR): ../Makefile.opts $(OBJ)
  51. @echo " AR $(OUT_AR)"; \
  52. $(AR) crus $(OUT_AR) $(OBJ)
  53. clean:
  54. @echo " CLEAN lib"; \
  55. $(RM) -f $(OBJ) $(OUT_SLIB) $(LN_SLIB) $(LN1_SLIB); \
  56. $(RM) -f $(DEPS) $(OUT_SLIB) $(LN_SLIB) $(LN1_SLIB)
  57. distclean:
  58. @echo " DISTCLEAN lib"; \
  59. $(RM) -f $(DEPS)
  60. install:
  61. mkdir -p $(DESTDIR)$(libdir)/
  62. install -m 0755 $(OUT_SLIB) $(DESTDIR)$(libdir)
  63. rm -f $(DESTDIR)$(libdir)/$(LN1_SLIB)
  64. $(LN) -s $(OUT_SLIB) $(DESTDIR)$(libdir)/$(LN1_SLIB)
  65. rm -f $(DESTDIR)$(libdir)/$(LN_SLIB)
  66. $(LN) -s $(LN1_SLIB) $(DESTDIR)$(libdir)/$(LN_SLIB)
  67. install -m 0644 $(OUT_AR) $(DESTDIR)$(libdir)
  68. $(DEPS): ../Makefile.opts
  69. include ../Makefile.rules