Makefile.lib 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. # $Id: Makefile 357 2007-06-26 14:28:49Z pkun $
  2. include ../Rules.make
  3. ifdef VERSION_SCRIPT
  4. LDFLAGS += --version-script=$(VERSION_SCRIPT)
  5. endif
  6. CFLAGS += $(CFLAGS_SO)
  7. WL := -Wl,
  8. WL_RPATH_LINK := $(WL)-rpath-link,
  9. I := $(addprefix -I, $(INC_PATH))
  10. L := $(addprefix -L, $(LIB_PATH))
  11. WL_L := $(addprefix $(WL_RPATH_LINK), $(LIB_PATH))
  12. WL_LDFLAGS := $(addprefix $(WL), $(LDFLAGS))
  13. A := lib$(NAME).a
  14. LDSO := lib$(NAME).so
  15. SONAME := $(LDSO).$(MAJOR)
  16. SO := $(SONAME).$(MINOR)
  17. OBJ := $(patsubst %.c, %.o, $(SRC))
  18. ifndef NO_SO
  19. ALL += $(SO)
  20. endif
  21. ifndef NO_A
  22. ALL += $(A)
  23. endif
  24. ############################################
  25. all: locale_all_pre $(ALL) locale_all locale_all_post
  26. $(SO): $(OBJ)
  27. $(CC) -Wl,-soname,$(SONAME) -shared -o $(@) $(^) $(LOBJS) $(LIBS) $(L) $(WL_L) $(WL_LDFLAGS)
  28. ln -sf $(@) $(SONAME)
  29. ln -sf $(SONAME) $(LDSO)
  30. $(A): $(OBJ)
  31. for l in $(LIBS_STATIC); do\
  32. objs=`$(AR) t $$l`;\
  33. $(AR) x $$l;\
  34. $(AR) $(ARFLAGS) $(@) $$objs;\
  35. rm $$objs;\
  36. done;\
  37. $(AR) $(ARFLAGS) $(@) $(^)
  38. $(OBJ): %.o : %.c
  39. $(CC) -c $(<) $(I) $(CFLAGS) $(CPPFLAGS)
  40. include $(wildcard *.d)
  41. clean: locale_clean
  42. $(RM) *.o *.d *.a *.so *.so.*
  43. install: all locale_install_pre install_lib locale_install locale_install_post
  44. install_lib:
  45. ifndef NO_INSTALL
  46. install -d $(INSTALL_LIB_DIR)
  47. ifndef NO_A
  48. install $(A) $(INSTALL_LIB_DIR)
  49. endif
  50. ifndef NO_SO
  51. install -m 0755 $(SO) $(INSTALL_LIB_DIR)
  52. ln -sf $(SO) $(INSTALL_LIB_DIR)/$(SONAME)
  53. ln -sf $(SONAME) $(INSTALL_LIB_DIR)/$(LDSO)
  54. endif
  55. endif
  56. .PHONY: all clean install locale_all_pre locale_all locale_all_post locale_install_pre locale_install locale_install_post locale_clean