2 # This file defines the things that should be common to all "libraries"
3 # in the paradyn build tree. It depends on things like SRCS and
4 # TARGET being set correctly in the module-specific template and the
5 # architecture-specific Makefile.
7 # $Id: make.library.tmpl,v 1.18 2001/07/17 22:33:07 bernat Exp $
10 BUILD_ID= -s $(SUITE_NAME) -v $(RELEASE_NUM)$(BUILD_MARK)$(BUILD_NUM)
12 XTARGET = $(basename $(basename $(TARGET)))
13 VOUCHER = V_$(XTARGET)
16 @echo Updating build voucher information: $(VOUCHER)
17 $(BUILDSTAMP) $(BUILD_ID) $(XTARGET)
18 $(MODCC) -c $(VOUCHER).c
22 OBJS = $(patsubst %.C, %.o, $(filter %.C,$(notdir $(SRCS)))) \
23 $(patsubst %.c, %.o, $(filter %.c,$(notdir $(SRCS)))) \
24 $(patsubst %.y, %.o, $(filter %.y,$(notdir $(SRCS)))) \
25 $(patsubst %.l, %.o, $(filter %.l,$(notdir $(SRCS)))) \
26 $(patsubst %.s, %.o, $(filter %.s,$(notdir $(SRCS)))) \
27 $(patsubst %.S, %.o, $(filter %.S,$(notdir $(SRCS)))) \
28 $(IGEN_GEN_SRCS:%.C=%.o)
34 $(AR) crv $(TARGET) $(VOUCHER).o $(OBJS)
38 XTARGET2= $(basename $(TARGET2))
39 VOUCHER2= V_$(XTARGET2)
44 $(AR) crv $(TARGET2) $(VOUCHER2).o $(OBJS2)
49 XTARGET3= $(basename $(basename $(TARGET3_SO)))
50 VOUCHER3= V_$(XTARGET3)
52 ifdef USES_LIB_TEXT_HEAP_INTERNAL
53 $(TARGET3_SO): $(OBJS) $(LIB_TEXT_HEAP_OBJ)
56 $(LD) $(LDFLAGS) -o $(TARGET3_SO) $(VOUCHER3).o $(OBJS) $(LIBS)
58 $(TARGET3_SO): $(OBJS)
61 $(LD) $(LDFLAGS) -o $(TARGET3_SO) $(VOUCHER3).o $(OBJS) $(LIBS)
62 endif # USES_LIB_TEXT_HEAP
67 DEST = $(TO_CORE)/$(LIBRARY_DEST)
74 $(RM) *.o *.[hC] *.a *.so* $(TARGET)
76 ifndef UNCOMMON_INSTALL
79 install: $(DEST)/$(TARGET)
81 $(DEST)/$(TARGET): $(TARGET)
82 -$(CP) $(TARGET) $(DEST)
83 $(RANLIB) $(DEST)/$(TARGET)
87 install: $(DEST)/$(TARGET3_SO)
89 $(DEST)/$(TARGET3_SO): $(TARGET3_SO)
90 -$(CP) $(TARGET3_SO) $(DEST)
95 # definition for secondary library
98 install: $(DEST)/$(TARGET2)
100 $(DEST)/$(TARGET2): $(TARGET2)
101 -$(CP) $(TARGET2) $(DEST)
102 $(RANLIB) $(DEST)/$(TARGET2)
106 # definition for dlopen()able runtime library
109 install: $(DEST)/$(TARGET3)
111 $(DEST)/$(TARGET3): $(TARGET3)
112 -$(CP) $(TARGET3) $(DEST)
115 endif # ifndef UNCOMMON_INSTALL
118 # dependency generation definitions
127 # Define DEPENDS dependencies such that the DEPENDS files depends on
128 # the .I files, not the .[Ch] files; otherwise, DEPENDS get rebuilt
129 # all the time. We do need to build the Igen-generated files before
130 # updating DEPENDS, however,
134 ifdef EXPLICIT_DEPENDS
137 DEPENDS: $(SRCS) $(IGEN_ISRCS)
140 $(MAKE) $(IGEN_GEN_SRCS)
142 $(MODCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) $(IGEN_GEN_SRCS) > DEPENDS
143 # makedepend -fDEPENDS -- $(CFLAGS) $(SRCS) $(IGEN_SRCS) $(NOPED_SRCS)
145 ifdef EXPLICIT_DEPENDS
152 ### TODO: remove this in favor of native compiler support
154 gcc -MM $(MODCFLAGS) $(SRCS) > DEPENDS
156 $(MODCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) > DEPENDS
158 # makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
163 # makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
169 # A few pattern rules for simplicity in handling igen-generated files.
172 %.xdr.C %.xdr.CLNT.C %.xdr.CLNT.h %.xdr.SRVR.C %.xdr.SRVR.h %.xdr.h: %.I
173 $(IGEN) -xdr $(ICFLAGS) $<
175 %.thread.C %.thread.CLNT.h %.thread.SRVR.h %.thread.h: %.I
176 $(IGEN) -thread $(ICFLAGS) $<
180 # include the dependencies.
184 # platform-specific options
185 include $(TO_CORE)/make.platform.tmpl