makefile
来自「SRI international 发布的OAA框架软件」· 代码 · 共 169 行
TXT
169 行
# June 1996
#
# Agentlib library makefile
#
#############################################################
SHELL=/bin/bash
include os.makefile
SRCD = src/
INCD = include/
TESTD = tests/$(ARCH)/
OBJD = obj/$(ARCH)/
DEPD = dep/
TOPD = ../../../
LIBD = $(TOPD)lib/$(ARCH)/
OBJSUFFIX=.o
RUNTIMELIBD=$(TOPD)lib/
SUPPLDIR = $(shell pwd)/stow
## pick up the last glib-x.x.x entry under $(GLIBDISTD)
GLIBDISTD=external/glib
GLIBCAND=$(sort $(notdir $(filter-out %-win,$(wildcard $(GLIBDISTD)/glib*))))
GLIBNAME=$(word $(words $(GLIBCAND)), $(GLIBCAND))
GLIBD = $(SUPPLDIR)/$(GLIBNAME)
## pick up the last pkgconfig-x.x.x entry under $(GLIBDISTD)
PKGCONFIGDISTD=external/pkgconfig
PKGCONFIGCAND=$(sort $(notdir $(filter-out %-win,$(wildcard $(PKGCONFIGDISTD)/pkgconfig*))))
PKGCONFIGNAME=$(word $(words $(PKGCONFIGCAND)), $(PKGCONFIGCAND))
PKGCONFIGD = $(SUPPLDIR)/$(PKGCONFIGNAME)
ac_cv_path_PKG_CONFIG = $(PKGCONFIGD)/bin/pkg-config
## pick up the last libiconv-x.x.x entry under $(LIBICONVDISTD)
LIBICONVDISTD=external/libiconv
LIBICONVCAND=$(sort $(notdir $(filter-out %-win,$(wildcard $(LIBICONVDISTD)/libiconv*))))
LIBICONVNAME=$(word $(words $(LIBICONVCAND)), $(LIBICONVCAND))
LIBICONVD = $(SUPPLDIR)/$(LIBICONVNAME)
## pick up the last gettext-x.x.x entry under $(GETTEXTDISTD)
GETTEXTDISTD=external/gettext
GETTEXTCAND=$(sort $(notdir $(filter-out %-win,$(wildcard $(GETTEXTDISTD)/gettext*))))
GETTEXTNAME=$(word $(words $(GETTEXTCAND)), $(GETTEXTCAND))
GETTEXTD = $(SUPPLDIR)/$(GETTEXTNAME)
## parser stuff
PARSERD=icl_parser/parser/
# For Purify
# Evaluation copy
# PDIR = /home/trestle3/OAA/pure/purify-4.5.1-solaris2
# Lee's copy
#
PDIR = /opt/pure/released/bin
PFLAGS =
PURIFY = purify
PCFLAGS = -I$(PDIR)
LIBS += $(PDIR)/purify_stubs.a
CC = gcc
INCLUDE = -I$(INCD) -I$(SUPPLDIR)/glib/include/glib-2.0 -I$(SUPPLDIR)/glib/lib/glib-2.0/include -I$(PARSERD)../ -I$(PARSERD)pccts/h
## Separate parser and other OAA sources, since parser sources are built
## somewhat differently
PARSERSOURCES=parser.c scan.c err.c
OAASOURCES=stringbuffer.c libicl_depr.c libicl_private.c libutils.c libicl.c \
libdb.c libcom_tcp.c libtrigger.c dictionary.c liboaa.c glibtojava.c \
javadistoglib.c termreader.c termsender.c binarytermreader.c \
binarytermsender.c stringtermreader.c stringtermsender.c testers.c
## Full path to OAA sources
OAASOURCESPATH=$(patsubst %,$(SRCD)%,$(OAASOURCES))
## Parser object files
PARSEROBJECTS=$(patsubst %,$(OBJD)%,$(patsubst %.c,%.o,$(PARSERSOURCES)))
## Other OAA object files
OAAOBJECTS=$(patsubst %,$(OBJD)%,$(patsubst %.c,%.o,$(OAASOURCES)))
## All object files
OBJECTS=$(PARSEROBJECTS) $(OAAOBJECTS)
## Dependencies just for the non-parser sources
OAADEPS=$(patsubst %,$(DEPD)%,$(patsubst %.c,%.d,$(OAASOURCES)))
#############################################################
.PHONY: test all support depends objects
all: $(LIBD) $(OBJD) support $(DEPD)depend $(OBJECTS) $(LIBD)liboaa2.a $(LIBD)liboaa2$(SOSUFFIX)
objects: $(OBJECTS)
support: pkgconfig-support libiconv-support gettext-support glib-support parser-support
## Target for parser objects
$(PARSEROBJECTS): $(OBJD)%.o: $(PARSERD)../%.c
$(MAKE) -C $(PARSERD) objects
## all the other object files
$(OAAOBJECTS): $(OBJD)%.o: $(SRCD)%.c
$(CC) -DIS_UNIX $(CFLAGS) $(INCLUDE) -c $< -o $@
## Target for dependencies
$(OAADEPS): $(DEPD)%.d : $(SRCD)%.c
@echo -n "Establishing dependencies for $< ... "
@set -e; $(CC) -MM $(INCLUDE) $(CFLAGS) $< \
| sed 's/\($*\)\$(OBJSUFFIX)[ :]*/$(subst /,\/,$@) : /g' > $@; \
[ -s $@ ] || rm -f $@
@set -e; $(CC) -MM $(INCLUDE) $(CFLAGS) $< \
| sed 's/\($*\)\$(OBJSUFFIX)[ :]*/$(subst /,\/,$(OBJD))\1$(OBJSUFFIX) : /g' >> $@
@echo "done"
$(DEPD)depend: glib-support $(OAADEPS)
@cat $(OAADEPS) > $@
pkgconfig-support:
cd $(PKGCONFIGDISTD)/$(PKGCONFIGNAME) && $(PKGCONFIGCFLAGS) ./configure --prefix=$(SUPPLDIR)/$(PKGCONFIGNAME) && make && make install
$(LN) $(SUPPLDIR)/$(PKGCONFIGNAME) $(SUPPLDIR)/pkgconfig
touch pkgconfig-support
$(LIBD):
mkdir -p $@
libiconv-support:
$(LIBICONVSUPPORT)
gettext-support:
$(GETTEXTSUPPORT)
# this is to resolve the circular dependency between libiconv and gettext
libiconv-support-circ:
$(LIBICONVSUPPORTCIRC)
test:
LD_LIBRARY_PATH="$${LD_LIBRARY_PATH}:$(SUPPLDIR)/$(LIBICONVNAME)/lib:$(SUPPLDIR)/$(GETTEXTNAME)/lib" echo $$LD_LIBRARY_PATH
#LD_LIBRARY_PATH="$${LD_LIBRARY_PATH}:$(SUPPLDIR)/$(LIBICONVNAME)/lib:$(SUPPLDIR)/$(GETTEXTNAME)/lib" CFLAGS="${CFLAGS} -I$(SUPPLDIR)/$(LIBICONVNAME)/include -I$(SUPPLDIR)/$(GETTEXTNAME)/include"
glib-support: pkgconfig-support libiconv-support gettext-support libiconv-support-circ
cd $(GLIBDISTD)/$(GLIBNAME) && export LD_LIBRARY_PATH="$${LD_LIBRARY_PATH}" && export PKG_CONFIG=$(PKGCONFIGD)/bin/pkg-config $(GLIBEXTRAENV) && ./configure --enable-static=yes --enable-gc-friendly $(GLIB_WITHLIBICONV) --prefix=$(SUPPLDIR)/$(GLIBNAME) && make && make install
$(LN) $(SUPPLDIR)/$(GLIBNAME) $(SUPPLDIR)/glib
mkdir -p $(LIBD)
$(CP) $(SUPPLDIR)/$(GLIBNAME)/lib/* $(LIBD)
touch glib-support
$(OBJD):
mkdir -p $@
parser-support: $(PARSERD)parser.g
cd $(PARSERD)/pccts && make CC=gcc
cd $(PARSERD) && sh generateMakefile && patch Makefile Makefile.patch && make CC=gcc
touch parser-support
$(LIBD)liboaa2.a: $(OBJECTS) Makefile
ar crvu $(LIBD)liboaa2.a $(OBJECTS)
ranlib $(LIBD)liboaa2.a
touch $(LIBD)liboaa2.a
$(LIBD)liboaa2$(SOSUFFIX): $(OBJECTS) Makefile
$(LD) $(OBJECTS) -o $(LIBD)liboaa2$(SOSUFFIX) -L$(LIBD) -lglib-2.0
clean:
cd $(PKGCONFIGDISTD)/$(PKGCONFIGNAME) && make -k clean > /dev/null
cd $(PARSERD)pccts && make -k clean > /dev/null
cd $(GLIBDISTD)/$(GLIBNAME) && make -k clean > /dev/null
rm -f $(OBJD)*.o $(OBJD)*.a $(OBJD)*.so $(DEPD)*.d
rm -f $(LIBD)liboaa2.a $(LIBD)liboaa2.so
rm -f pkgconfig-support glib-support parser-support
## if we're making clean, down include the dependency file
ifneq (,$(findstring clean,$(MAKECMDGOALS)))
## nor if we're making one of the support libraries
ifneq (,$(findstring -support,$(MAKECMDGOALS)))
-include $(DEPD)depend
endif
endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?