Makefile 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. # Copyright (c) 2002-2006 MontaVista Software, Inc.
  2. # Copyright (c) 2006-2008 Red Hat, Inc.
  3. #
  4. # All rights reserved.
  5. #
  6. # This software licensed under BSD license, the text of which follows:
  7. #
  8. # Redistribution and use in source and binary forms, with or without
  9. # modification, are permitted provided that the following conditions are met:
  10. #
  11. # - Redistributions of source code must retain the above copyright notice,
  12. # this list of conditions and the following disclaimer.
  13. # - Redistributions in binary form must reproduce the above copyright notice,
  14. # this list of conditions and the following disclaimer in the documentation
  15. # and/or other materials provided with the distribution.
  16. # - Neither the name of the MontaVista Software, Inc. nor the names of its
  17. # contributors may be used to endorse or promote products derived from this
  18. # software without specific prior written permission.
  19. #
  20. # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
  21. # AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  22. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  23. # ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
  24. # LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
  25. # CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
  26. # SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
  27. # INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
  28. # CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  29. # ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
  30. # THE POSSIBILITY OF SUCH DAMAGE.
  31. # Include configuration
  32. #
  33. srcdir ?= $(CURDIR)/../
  34. subdir ?= exec/
  35. include $(srcdir)Makefile.inc
  36. override LDFLAGS += -L./ ${DYFLAGS}
  37. ifeq (${BUILD_DYNAMIC}, 1)
  38. override LDFLAGS += ${DYFLAGS}
  39. endif
  40. ifeq (${COROSYNC_COMPAT}, LINUX)
  41. override LDFLAGS += -ldl
  42. endif
  43. ifeq (${COROSYNC_COMPAT}, SOLARIS)
  44. override LDFLAGS += -lnsl -lsocket -lrt
  45. endif
  46. # Totem objects
  47. TOTEM_SRC = coropoll.c totemip.c totemnet.c totemrrp.c totemsrp.c totemmrp.c totempg.c crypto.c wthread.c
  48. TOTEM_OBJS = coropoll.o totemip.o totemnet.o totemrrp.o totemsrp.o totemmrp.o totempg.o crypto.o wthread.o
  49. LOGSYS_SRC = wthread.c logsys.c
  50. LOGSYS_OBJS = wthread.o logsys.o
  51. EXEC_LIBS = libtotem_pg.a liblogsys.a
  52. # LCR objects
  53. LCR_SRC = vsf_ykd.c objdb.c coroparse.c vsf_quorum.c
  54. LCR_OBJS = vsf_ykd.o objdb.o coroparse.o vsf_quorum.o
  55. # main executive objects
  56. MAIN_SRC = main.c mempool.c util.c sync.c apidef.c service.c ipc.c \
  57. quorum.c timer.c totemconfig.c mainconfig.c
  58. MAIN_OBJS = main.o mempool.o util.o sync.o apidef.o service.o ipc.o \
  59. quorum.o timer.o totemconfig.o mainconfig.o ../lcr/lcr_ifact.o
  60. ifeq (${BUILD_DYNAMIC}, 1)
  61. #EXEC_OBJS = $(TOTEM_OBJS) $(LOGSYS_OBJS) $(MAIN_OBJS)
  62. EXEC_OBJS = $(MAIN_OBJS)
  63. override CFLAGS += -fPIC
  64. all:libtotem_pg.a libtotem_pg.so.2.0.0 liblogsys.a liblogsys.so.2.0.0 \
  65. ../lcr/lcr_ifact.o corosync_ \
  66. objdb.lcrso vsf_ykd.lcrso coroparse.lcrso vsf_quorum.lcrso
  67. else
  68. EXEC_OBJS = $(MAIN_OBJS) $(LCR_OBJS)
  69. all: libtotem_pg.a liblogsys.a corosync
  70. endif
  71. ifeq (${COROSYNC_COMPAT}, DARWIN)
  72. objdb.lcrso: objdb.o
  73. $(CC) -bundle -bundle_loader ./corosync -bind_at_load objdb.o -o $@
  74. vsf_ykd.lcrso: vsf_ykd.o
  75. $(CC) $(LDFLAGS) -bundle $(LDFLAGS) -bundle_loader ./corosync -bind_at_load vsf_ykd.o -o $@
  76. vsf_quorum.lcrso: vsf_quorum.o
  77. $(CC) $(LDFLAGS) -bundle $(LDFLAGS) -bundle_loader ./corosync -bind_at_load vsf_quorum.o -o $@
  78. coroparse.lcrso: coroparse.o
  79. $(CC) -bundle -bundle_loader ./corosync -bind_at_load coroparse.o -o $@
  80. else
  81. vsf_ykd.lcrso: vsf_ykd.o
  82. $(CC) -shared -Wl,-soname,vsf_ykd.lcrso vsf_ykd.o -o $@
  83. vsf_quorum.lcrso: vsf_quorum.o
  84. $(CC) -shared -Wl,-soname,vsf_quorum.lcrso vsf_quorum.o -o $@
  85. objdb.lcrso: objdb.o
  86. $(CC) -shared -Wl,-soname,objdb.lcrso objdb.o -o $@
  87. testquorum.lcrso: testquorum.o
  88. $(CC) -shared -Wl,-soname,testquorum.lcrso objdb.o -o $@
  89. coroparse.lcrso: coroparse.o
  90. $(CC) -shared -Wl,-soname,coroparse.lcrso coroparse.o -o $@
  91. endif
  92. corosync_: $(EXEC_OBJS) $(EXEC_LIBS)
  93. $(CC) $(EXEC_OBJS) $(EXEC_LIBS) -o corosync $(LDFLAGS)
  94. libtotem_pg.a: $(TOTEM_OBJS)
  95. $(AR) -rc libtotem_pg.a $(TOTEM_OBJS)
  96. liblogsys.a: $(LOGSYS_OBJS)
  97. $(AR) -rc liblogsys.a $(LOGSYS_OBJS)
  98. ifeq (${COROSYNC_COMPAT}, DARWIN)
  99. libtotem_pg.so.2.0.0: $(TOTEM_OBJS)
  100. $(CC) $(LDFLAGS) -bundle -bind_at_load $(TOTEM_OBJS) -o $@
  101. liblogsys.so.2.0.0: $(LOGSYS_OBJS)
  102. $(CC) $(LDFLAGS) -bundle -bind_at_load $(LOGSYS_OBJS) -o $@
  103. else
  104. libtotem_pg.so.2.0.0: $(TOTEM_OBJS)
  105. $(CC) $(LDFLAGS) -shared -Wl,-soname,libtotem_pg.so.2 $(TOTEM_OBJS) -o $@
  106. liblogsys.so.2.0.0: $(LIBLOGSYS_OBJS)
  107. $(CC) -shared -Wl,-soname,liblogsys.so.2 $(LOGSYS_OBJS) -o $@ $(LDFLAGS)
  108. endif
  109. lint:
  110. -splint $(LINT_FLAGS) $(CFLAGS) *.c
  111. clean:
  112. rm -f corosync $(OBJS) *.o *.lcrso libtotem_pg.so* libtotem_pg.a gmon.out
  113. rm -f *.da *.bb *.bbg liblogsys.so* liblogsys.a
  114. depend:
  115. makedepend -Y -- $(CFLAGS) $(CPPFLAGS) $(EXEC_SRC) $(TOTEM_SRC) $(LOGSYS_SRC) $(LCR_SRC) > /dev/null 2>&1
  116. # - fPIC rules required for service handler shared objects
  117. ../lcr/lcr_ifact.o: $(srcdir)lcr/lcr_ifact.c
  118. $(CC) $(CFLAGS) $(CPPFLAGS) -DPREFIX='"$(PREFIX)"' -c -o $@ $<
  119. vsf_ykd.o: vsf_ykd.c
  120. $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
  121. vsf_quorum.o: vsf_quorum.c
  122. $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
  123. objdb.o: objdb.c
  124. $(CC) $(CFLAGS) -c -o $@ $<
  125. testquorum.o: testquorum.c
  126. $(CC) $(CFLAGS) -c -o $@ $<
  127. coroparse.o: coroparse.c
  128. $(CC) $(CFLAGS) -c -o $@ $<
  129. # -fPIC rules required for lib totem
  130. coropoll.o: coropoll.c
  131. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  132. totempg.o: totempg.c
  133. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  134. totemsrp.o: totemsrp.c
  135. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  136. totemrrp.o: totemrrp.c
  137. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  138. totemip.o: totemip.c
  139. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  140. totemnet.o: totemnet.c
  141. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  142. wthread.o: wthread.c
  143. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  144. crypto.o: crypto.c
  145. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  146. totemmrp.o: totemmrp.c
  147. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  148. totemconfig.o: totemconfig.c
  149. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<