Makefile.am 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  1. #
  2. # Copyright (c) 2009 Red Hat, Inc.
  3. #
  4. # Authors: Andrew Beekhof
  5. # Steven Dake (sdake@redhat.com)
  6. #
  7. # This software licensed under BSD license, the text of which follows:
  8. #
  9. # Redistribution and use in source and binary forms, with or without
  10. # modification, are permitted provided that the following conditions are met:
  11. #
  12. # - Redistributions of source code must retain the above copyright notice,
  13. # this list of conditions and the following disclaimer.
  14. # - Redistributions in binary form must reproduce the above copyright notice,
  15. # this list of conditions and the following disclaimer in the documentation
  16. # and/or other materials provided with the distribution.
  17. # - Neither the name of the MontaVista Software, Inc. nor the names of its
  18. # contributors may be used to endorse or promote products derived from this
  19. # software without specific prior written permission.
  20. #
  21. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  22. # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  23. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  24. # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  25. # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  26. # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  27. # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  28. # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  29. # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  30. # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  31. # THE POSSIBILITY OF SUCH DAMAGE.
  32. # Functions
  33. uc=$(shell echo $1 | tr a-z A-Z)
  34. get_soname=$(if $($(call uc,$1)_SONAME),$($(call uc,$1)_SONAME),$(SONAME))
  35. get_major=$(firstword $(subst ., ,$(call get_soname,$1)))
  36. get_sharedlibs=$(foreach lib,$(SHARED_LIBS_SO:lib%.so=%),lib$(lib).so.$(call get_soname,$(lib)))
  37. get_sharedlibs_two=$(foreach lib,$(SHARED_LIBS_SO:lib%.so=%),lib$(lib).so.$(call get_major,$(lib)))
  38. get_linker_add=$(if $($(call uc,$1)_LINKER_ADD),$($(call uc,$1)_LINKER_ADD))
  39. MAINTAINERCLEANFILES = Makefile.in
  40. AM_CFLAGS = -fPIC
  41. AM_LDFLAGS = -lpthread
  42. INCLUDES = -I$(top_builddir)/include -I$(top_srcdir)/include
  43. lib_LIBRARIES = libcpg.a libconfdb.a libquorum.a libevs.a libcfg.a \
  44. libvotequorum.a libpload.a libsam.a
  45. SHARED_LIBS_SO = $(lib_LIBRARIES:%.a=%.so)
  46. libcpg_a_SOURCES = cpg.c
  47. libcfg_a_SOURCES = cfg.c
  48. libevs_a_SOURCES = evs.c
  49. libpload_a_SOURCES = pload.c
  50. libquorum_a_SOURCES = quorum.c
  51. libvotequorum_a_SOURCES = votequorum.c
  52. libconfdb_a_SOURCES = confdb.c sa-confdb.c
  53. libconfdb_a_LIBADD = ../lcr/lcr_ifact.o
  54. CONFDB_LINKER_ADD = $(OS_DYFLAGS) $(OS_LDL)
  55. SAM_LINKER_ADD = -L. -lquorum -lconfdb
  56. libsam_a_SOURCES = sam.c
  57. noinst_HEADERS = sa-confdb.h util.h \
  58. libcfg.versions libconfdb.versions \
  59. libcpg.versions \
  60. libevs.versions libpload.versions \
  61. libquorum.versions libvotequorum.versions \
  62. libsam.versions
  63. ../lcr/lcr_ifact.o:
  64. $(MAKE) -C ../lcr lcr_ifact.o
  65. if BUILD_DARWIN
  66. lib%.so: lib%.a $(LIBQB_LIBS)
  67. $(CC) $(DARWIN_OPTS) $(call get_linker_add,$*) -Wl,-whole-archive $^ -Wl,-no-whole-archive -o $@
  68. ln -sf lib$*.so.$(call get_soname,$*) lib$*.so
  69. ln -sf lib$*.so.$(call get_soname,$*) lib$*.so.$(call get_major,$*)
  70. else
  71. if BUILD_SOLARIS
  72. lib%.so.$(SONAME): lib%.a
  73. $(LD) $(SOLARIS_OPTS) $(call get_linker_add,$*) -G -whole-archive $^ -no-whole-archive -o $@
  74. ln -sf lib$*.so.$(call get_soname,$*) lib$*.so
  75. ln -sf lib$*.so.$(call get_soname,$*) lib$*.so.$(call get_major,$*)
  76. else
  77. lib%.so: lib%.a
  78. $(CC) -shared -o $@.$(call get_soname,$*) \
  79. -Wl,-soname=lib$*.so.$(call get_major,$*) \
  80. -Wl,-version-script=$(srcdir)/lib$*.versions \
  81. -Wl,-whole-archive $^ -Wl,-no-whole-archive $(LDFLAGS) $(LIBQB_LIBS) $(AM_LDFLAGS) $(call get_linker_add,$*)
  82. ln -sf lib$*.so.$(call get_soname,$*) lib$*.so
  83. ln -sf lib$*.so.$(call get_soname,$*) lib$*.so.$(call get_major,$*)
  84. endif
  85. endif
  86. all-local: $(get_explicit_sharedlibs) $(SHARED_LIBS_SO)
  87. @echo Built shared libs
  88. install-exec-local:
  89. $(INSTALL) -d $(DESTDIR)/$(libdir)
  90. $(INSTALL) -m 755 $(get_sharedlibs) $(DESTDIR)/$(libdir)
  91. $(CP) -a $(SHARED_LIBS_SO) $(get_sharedlibs_two) $(DESTDIR)/$(libdir)
  92. uninstall-local:
  93. cd $(DESTDIR)/$(libdir)/ && \
  94. rm -f $(get_sharedlibs) $(SHARED_LIBS_SO) $(get_sharedlibs_two)
  95. clean-local:
  96. rm -f *.o *.a *.so* *.da *.bb *.bbg