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.31 2008/03/12 20:08:25 legendre Exp $
10 BUILD_ID= -s $(SUITE_NAME) -v $(RELEASE_NUM)$(BUILD_MARK)$(BUILD_NUM)
12 XTARGET = $(basename $(basename $(TARGET)))
13 VOUCHER = V_$(XTARGET)
19 OBJS += $(filter %.o, $(patsubst %.C, %.o, $(filter %.C,$(notdir $(SRCS)))) \
20 $(patsubst %.c, %.o, $(filter %.c,$(notdir $(SRCS)))) \
21 $(patsubst %.y, %.o, $(filter %.y,$(notdir $(SRCS)))) \
22 $(patsubst %.l, %.o, $(filter %.l,$(notdir $(SRCS)))) \
23 $(patsubst %.s, %.o, $(filter %.s,$(notdir $(SRCS)))) \
24 $(patsubst %.S, %.o, $(filter %.S,$(notdir $(SRCS)))) \
25 $(IGEN_GEN_SRCS:%.C=%.o))
27 STATIC_OBJS += $(filter %_nopic.o, $(patsubst %.C, %_nopic.o, $(filter %.C,$(notdir $(SRCS)))) \
28 $(patsubst %.c, %_nopic.o, $(filter %.c,$(notdir $(SRCS)))) \
29 $(patsubst %.y, %_nopic.o, $(filter %.y,$(notdir $(SRCS)))) \
30 $(patsubst %.l, %_nopic.o, $(filter %.l,$(notdir $(SRCS)))) \
31 $(patsubst %.s, %_nopic.o, $(filter %.s,$(notdir $(SRCS)))) \
32 $(patsubst %.S, %_nopic.o, $(filter %.S,$(notdir $(SRCS)))) \
33 $(IGEN_GEN_SRCS:%.C=%_nopic.o))
37 XLC_DEPFILES = $(filter %.u, $(patsubst %.u, %.o, $(filter %.u,$(notdir $(SRCS)))))
39 # specify build prerequisite dependencies (for parallel make)
41 $(OBJS): $(PREREQUISITES)
44 XTARGET= $(basename $(basename $(TARGET)))
52 @echo Updating build voucher information: $(VOUCHER)
53 $(HIDE_COMP)$(BUILDSTAMP) $(BUILD_ID) $(XTARGET)
55 $(VOUCHER).o: $(VOUCHER).c
57 $(HIDE_COMP)$(MODCC) -c $(MODCFLAGS) $(VOUCHER).c
61 $(TARGET): $(TARGET).$(RELEASE_NUM)
62 @echo Making symlink $(TARGET).$(RELEASE_NUM) to $(TARGET)
63 $(HIDE_COMP)-$(LN) -f $(TARGET).$(RELEASE_NUM) $(TARGET)
65 $(TARGET).$(RELEASE_NUM): $(OBJS) $(EXTRA_LIBS) $(VOUCHER).o
66 $(HIDE_COMP)$(RM) $(TARGET) $(TARGET).$(RELEASE_NUM)
68 $(HIDE_COMP)$(LD) $(LIBDIR) $(SONAME_FLAGS) $(LDFLAGS) -o $(TARGET).$(RELEASE_NUM) $(VOUCHER).o $(OBJS) $(LIBS)
70 else # build a static lib
71 $(TARGET): $(OBJS) $(EXTRA_LIBS) $(VOUCHER).o
72 $(HIDE_COMP)$(RM) $(TARGET)
74 $(AR) rcs $(TARGET) $(VOUCHER).o $(OBJS)
75 endif # STATIC_LIBRARY
79 # pattern rules for building non-PIC .o's
81 @echo "Compiling $< (noPIC)"
82 $(HIDE_COMP)$(CC) -c -o $*_nopic.o $(CFLAGS) $(CPPFLAGS) ../src/$*.c
85 @echo "Compiling $< (noPIC)"
86 $(HIDE_COMP)$(CXX) -c -o $*_nopic.o $(CPPFLAGS) $(CXXFLAGS) ../src/$*.C
89 @echo "Compiling $< (noPIC)"
90 $(HIDE_COMP)$(AS) $(ASFLAGS) -o $*_nopic.o ../src/$*.S
93 @echo "Compiling $< (noPIC)"
94 $(HIDE_COMP)$(AS) $(ASFLAGS) -o $*_nopic.o ../src/$*.s
97 $(STATIC_TARGET): CFLAGS = $(STATIC_CFLAGS)
100 ifdef STATIC_CPPFLAGS
101 $(STATIC_TARGET): CPPFLAGS = $(STATIC_CPPFLAGS)
104 ifdef STATIC_CXXCFLAGS
105 $(STATIC_TARGET): CXXFLAGS = $(STATIC_CXXFLAGS)
109 $(STATIC_TARGET): ASFLAGS = $(STATIC_ASFLAGS)
112 $(STATIC_TARGET): $(STATIC_OBJS)
114 $(HIDE_COMP)$(RM) $(STATIC_TARGET)
115 $(HIDE_COMP)$(AR) rcs $(STATIC_TARGET) $(STATIC_OBJS)
117 endif # STATIC_TARGET
119 endif # OVERRIDE_LINK
122 $(INCLUDE_DEST)/%.h: $(TO_INC)/%.h
124 $(HIDE_COMP)$(INSTALL) $^ $(INCLUDE_DEST)
126 public_includes: $(patsubst %,$(INCLUDE_DEST)/%,$(PUBLIC_H))
132 DEST = $(LIBRARY_DEST)
136 $(RM) *.o *.[hC] *.a *.so* .__afs* $(TARGET) $(STATIC_TARGET)
141 $(DEST)/$(TARGET).$(RELEASE_NUM): $(TARGET).$(RELEASE_NUM) $(TARGET)
142 @echo Installing $(TARGET).$(RELEASE_NUM) to $(DEST)/$(TARGET).$(RELEASE_NUM)
143 $(HIDE_COMP)-$(INSTALL) $(TARGET).$(RELEASE_NUM) $(DEST)/$(TARGET).$(RELEASE_NUM)
145 ifndef STATIC_LIBRARY
146 $(DEST)/$(TARGET): $(DEST)/$(TARGET).$(RELEASE_NUM)
147 @echo Making symlink $(TARGET).$(RELEASE_NUM) to $(DEST)/$(TARGET)
148 $(HIDE_COMP)-$(LN) -f $(TARGET).$(RELEASE_NUM) $(DEST)/$(TARGET)
150 $(DEST)/$(TARGET): $(TARGET)
151 @echo Installing $(TARGET) to $(DEST)/$(TARGET)
152 $(HIDE_COMP)-$(INSTALL) $(TARGET) $(DEST)/$(TARGET)
156 $(DEST)/$(STATIC_TARGET): $(STATIC_TARGET)
157 @echo Installing $(STATIC_TARGET) to $(DEST)
158 $(HIDE_COMP)-$(INSTALL) $(STATIC_TARGET) $(DEST)
160 install_generic: $(DEST)/$(TARGET) public_includes $(DEST)/$(STATIC_TARGET)
164 install_generic: $(DEST)/$(TARGET) public_includes
168 # A definition of OVERRIDE_INSTALL will skip this definition, so it shouldn't contain
169 # anything other than "install_generic".
170 ifndef OVERRIDE_INSTALL
171 install: install_generic
175 # $(YACC) $(YFLAGS) $<
179 # $(LEX) -t $(LFLAGS) $< > $@
182 # dependency generation definitions
191 # Define DEPENDS dependencies such that the DEPENDS files depends on
192 # the .I files, not the .[Ch] files; otherwise, DEPENDS get rebuilt
193 # all the time. We do need to build the Igen-generated files before
194 # updating DEPENDS, however,
201 @echo "Building depends files"
206 $(DEPCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) > /dev/null
210 $(DEPCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) > DEPENDS
211 endif #aix/power platform
214 $(HIDE_COMP)$(GCC) -MM $(MODCFLAGS) $(SRCS) > DEPENDS
216 $(HIDE_COMP)$(DEPCC) $(DEPENDFLAGS) $(MODCFLAGS) $(SRCS) > DEPENDS
222 # makedepend -fDEPENDS -- $(CFLAGS) $(SRCS)
226 # A few pattern rules for simplicity in handling igen-generated files.
229 %.mrnet.CLNT.C %.mrnet.CLNT.h %.mrnet.SRVR.C %.mrnet.SRVR.h %.mrnet.h %.mrnet.temp.C: %.I
230 $(IGEN) -mrnet $(ICFLAGS) $<
232 %.xdr.C %.xdr.CLNT.C %.xdr.CLNT.h %.xdr.SRVR.C %.xdr.SRVR.h %.xdr.h %.xdr.temp.C: %.I
234 $(IGEN) -xdr $(ICFLAGS) $<
236 %.thread.C %.thread.CLNT.h %.thread.SRVR.h %.thread.h: %.I
237 $(IGEN) -thread $(ICFLAGS) $<
240 # include the dependencies.
242 ifneq ($(MAKECMDGOALS),distclean)
246 # platform-specific options
247 include $(TO_CORE)/make.platform.tmpl
249 # Let's trying prettyprinting the compile lines...
253 $(HIDE_COMP) $(CC) -c $(CFLAGS) $(CPPFLAGS) $< -o $@
257 $(HIDE_COMP) $(CXX) -c $(CXXFLAGS) $(CPPFLAGS) $< -o $@
259 ifdef LIBELF_PLATFORM
261 ifneq (x,x$(strip $(LIBELF_LIB)))
262 LIBELF_LINK_FLAGS += -L$(LIBELF_LIB)
265 LIBELF_LINK_FLAGS += -lelf
267 ifneq (x,x$(strip $(LIBELF_INC)))
268 LIBELF_INC_FLAGS += -I$(LIBELF_INC)
270 LIBS += $(LIBELF_LINK_FLAGS)
271 MYFLAGS += $(LIBELF_INC_FLAGS)
275 ifdef LIBDWARF_PLATFORM
276 ifdef USES_DWARF_DEBUG
277 ifneq (x,x$(strip $(LIBDWARF_LIB)))
278 LIBDWARF_LINK_FLAGS += -L$(LIBDWARF_LIB)
280 ifndef LIBDWARFSTATIC
281 LIBDWARF_LINK_FLAGS += -ldwarf
283 ifneq (x,x$(strip $(LIBDWARF_INC)))
284 LIBDWARF_INC_FLAGS += -I$(LIBDWARF_INC)
286 LIBS += $(LIBDWARF_LINK_FLAGS)
287 MYFLAGS += $(LIBDWARF_INC_FLAGS)