Makefile 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  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. LDFLAGS += -L./
  37. ifeq (${BUILD_DYNAMIC}, 1)
  38. override LDFLAGS += ${DYFLAGS}
  39. endif
  40. ifeq (${OPENAIS_COMPAT}, LINUX)
  41. override LDFLAGS += -ldl
  42. endif
  43. ifeq (${OPENAIS_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
  54. LCR_OBJS =aisparser.o vsf_ykd.o objdb.o coroparse.o
  55. # main executive objects
  56. MAIN_SRC = main.c mempool.c util.c sync.c apidef.c service.c ipc.c flow.c \
  57. timer.c totemconfig.c mainconfig.c
  58. MAIN_OBJS = main.o mempool.o util.o sync.o apidef.o service.o ipc.o flow.o \
  59. 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
  67. else
  68. EXEC_OBJS = $(MAIN_OBJS) $(LCR_OBJS)
  69. all: libtotem_pg.a liblogsys.a corosync
  70. endif
  71. ifeq (${OPENAIS_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. coroparse.lcrso: coroparse.o
  77. $(CC) -bundle -bundle_loader ./corosync -bind_at_load coroparse.o -o $@
  78. else
  79. vsf_ykd.lcrso: vsf_ykd.o
  80. $(CC) -shared -Wl,-soname,vsf_ykd.lcrso vsf_ykd.o -o $@
  81. objdb.lcrso: objdb.o
  82. $(CC) -shared -Wl,-soname,objdb.lcrso objdb.o -o $@
  83. coroparse.lcrso: coroparse.o
  84. $(CC) -shared -Wl,-soname,coroparse.lcrso coroparse.o -o $@
  85. endif
  86. corosync: $(EXEC_OBJS) $(EXEC_LIBS)
  87. $(CC) $(EXEC_OBJS) $(EXEC_LIBS) -o corosync $(LDFLAGS)
  88. libtotem_pg.a: $(TOTEM_OBJS)
  89. $(AR) -rc libtotem_pg.a $(TOTEM_OBJS)
  90. liblogsys.a: $(LOGSYS_OBJS)
  91. $(AR) -rc liblogsys.a $(LOGSYS_OBJS)
  92. ifeq (${OPENAIS_COMPAT}, DARWIN)
  93. libtotem_pg.so.2.0.0: $(TOTEM_OBJS)
  94. $(CC) $(LDFLAGS) -bundle -bind_at_load $(TOTEM_OBJS) -o $@
  95. liblogsys.so.2.0.0: $(LOGSYS_OBJS)
  96. $(CC) $(LDFLAGS) -bundle -bind_at_load $(LOGSYS_OBJS) -o $@
  97. else
  98. libtotem_pg.so.2.0.0: $(TOTEM_OBJS)
  99. $(CC) $(LDFLAGS) -shared -Wl,-soname,libtotem_pg.so.2 $(TOTEM_OBJS) -o $@
  100. liblogsys.so.2.0.0: $(LIBLOGSYS_OBJS)
  101. $(CC) -shared -Wl,-soname,liblogsys.so.2 $(LOGSYS_OBJS) -o $@ $(LDFLAGS)
  102. endif
  103. clean:
  104. rm -f corosync $(OBJS) *.o *.lcrso libtotem_pg.so* libtotem_pg.a gmon.out
  105. rm -f *.da *.bb *.bbg liblogsys.so* liblogsys.a
  106. depend:
  107. makedepend -Y -- $(CFLAGS) $(CPPFLAGS) $(EXEC_SRC) $(TOTEM_SRC) $(LOGSYS_SRC) $(LCR_SRC) > /dev/null 2>&1
  108. # - fPIC rules required for service handler shared objects
  109. ../lcr/lcr_ifact.o: $(srcdir)lcr/lcr_ifact.c
  110. $(CC) $(CFLAGS) $(CPPFLAGS) -DPREFIX='"$(PREFIX)"' -DLCRSODIR='"$(LCRSODIR)"' -I../lcr -c -o $@ $<
  111. vsf_ykd.o: vsf_ykd.c
  112. $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $@ $<
  113. objdb.o: objdb.c
  114. $(CC) $(CFLAGS) -c -o $@ $<
  115. coroparse.o: coroparse.c
  116. $(CC) $(CFLAGS) -c -o $@ $<
  117. # -fPIC rules required for lib totem
  118. coropoll.o: coropoll.c
  119. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  120. totempg.o: totempg.c
  121. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  122. totemsrp.o: totemsrp.c
  123. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  124. totemrrp.o: totemrrp.c
  125. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  126. totemip.o: totemip.c
  127. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  128. totemnet.o: totemnet.c
  129. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  130. wthread.o: wthread.c
  131. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  132. crypto.o: crypto.c
  133. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  134. totemmrp.o: totemmrp.c
  135. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<
  136. totemconfig.o: totemconfig.c
  137. $(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<