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 + -
显示快捷键?