📄 makefile
字号:
#***************License************************************************## Copyright 2000-2002. SpeechWorks International, Inc. All rights reserved.## Use of this software is subject to certain restrictions and limitations# set forth in a license agreement entered into between SpeechWorks# International Inc. and the licensee of this software. Please refer # to the license agreement for license use rights and restrictions. ## SpeechWorks is a registered trademark, and SpeechWorks Here,# DialogModules and the SpeechWorks logo are trademarks of SpeechWorks# International, Inc. in the United States and other countries.# #**********************************************************************## swichar, SpeechWorks character function library# UNIX make file ###**********************************************************************/#--------------------------------# Required Environment Variables#--------------------------------SHELL = /bin/shPRODUCT_LIB_PREFIX=SBifndef SWISBSDK$(error The environment variable SWISBSDK is not defined (it should point to your baseline directory))endif#--------------------# Platform macros#--------------------PROJ_ROOT = ..CPU = i386OS = linuxPLATFORM = $(CPU)-$(OS)MAKE_CPU = $(CPU)MAKE_OS = $(OS)PERL = $(shell which perl)MAKEFILE = MakefileCC = gccCXX = g++#-----------------------------------------# Set up macros for different config's#-----------------------------------------ifndef CFGCFG = debugendififeq ("$(CFG)","debug")CFG_SUFFIX = DCFLAGS_CFG = $(CFLAGS_DEBUG)elseifeq ("$(CFG)","release")CFG_SUFFIX =CFLAGS_CFG = $(CFLAGS_RELEASE)else$(error CFG is not a legal type - should be debug or release)endifendif#---------------------# Directories#---------------------PWD := $(shell pwd)BUILD_ROOT := buildBUILD_ROOT_PLT = $(BUILD_ROOT)/$(PLATFORM)BUILDDIR = $(BUILD_ROOT_PLT)/$(CFG)PLATFORMDIR = $(PROJ_ROOT)/$(PLATFORM)SRCPATH = $(PLATFORMDIR)/src## SWISBSDK Install Directories#bindir = $(SWISBSDK)/binlibdir = $(SWISBSDK)/libincdir = $(SWISBSDK)/include## Build Area directories#buildbindir = $(BUILDDIR)/binbuildlibdir = $(BUILDDIR)/lib#------------------------# C/C++ compiler flags#------------------------CC = gccCXX = g++CFLAGS_GENERAL = -D_$(CPU)_ \ -D_$(OS)_ \ -I$(PROJ_ROOT)/$(PLATFORM)/include \ -I$(PROJ_ROOT)/include \ -I$(SWISBSDK)/include \ -I./include \ -I./ \ -D_SIMPLE_R \ -D_REENTRANT \ -D_GNU_SOURCE \ -D__THREADEDANSIFLAGS = -pedantic \ -Wall \ -Wcast-qual \ -Wcast-align \ -Wmissing-prototypes \ -Wstrict-prototypes \ -WtraditionalC_ANSIFLAGS = $(ANSIFLAGS) \ -Wid-clash-31CXX_ANSIFLAGS = $(ANSIFLAGS)ifdef STRICTCFLAGS_GENERAL += $(ANSIFLAGS)endif# -g debug symbols# -O0 No Optimization for debug# -fPIC Generate Position Independant codeCFLAGS_DEBUG = -g -O0 -fPIC# -s strip symbols# -O2 Optimize for release# -fPIC Generate Position Independant codeCFLAGS_RELEASE = -DNDEBUG -s -O2 -fPIC#----------------------------------------# Link Flags#----------------------------------------LDFLAGS += -L$(buildlibdir) $(PROJ_LDFLAGS) $($(TARGET)_LDFLAGS) $(LDFLAGS_$(OS)) -L$(SWISBSDK)/libLDFLAGS_SHARED = -sharedLDLIBS += $($(TARGET)_LDLIBS)ifdef STATICLDLIBS += $($(TARGET)_LDLIBS_STATIC)endifLDLIBS += -lstdc++ -lpthread -ldlLDFLAGS += -Wl,-rpath-link=$(SWISBSDK)/lib:$(PROJ_RPATH_LINK)#--------------------------------# General Programs#--------------------------------CHMOD = chmodCHMODFLAGS = go-w,a-xCHMODFLAGSX = go-w,a+xINSTALL = cp -pINSTALL_PROGRAM = $(INSTALL)INSTALL_DATA = $(INSTALL)MKDIRS = ../VXIinterfaces/mkinstalldirsRMDIR = rmdirRMCLEAN = rm -rf#-------------------------------------------# Final Values#-------------------------------------------CFLAGS = $(CFLAGS_CFG) $(CFLAGS_GENERAL) $(MYCFLAGS)CXXFLAGS = $(CFLAGS_CFG) $(CFLAGS_GENERAL) $(MYCFLAGS)CPPFLAGS = $(PROJ_CFLAGS) $(CFLAGS_$(OS)) $($(TARGET)_CFLAGS)#============================================================================# Build sources#============================================================================PUBLIC_HEADERS = \ include/SWIstring.h \ include/SWIutfconversions.h \ include/SWIprintf.h \ include/SWIchar.h# Mask the exports of shared objects by explicitly listing public functionsEXPLICIT_VER_FILES = 1# Set defaults for the library version and product name burnt into# shared librariesLIBVER = 3# Define shared libaries to be build# multiple libries seperated by spaceLIBS = $(PRODUCT_LIB_PREFIX)char# Define library sources$(PRODUCT_LIB_PREFIX)char_SRC = \ SWIstring.c \ SWIutfconversions.c \ SWIprintf.c \ genchar.c \ li_string.c# Define any linked libraries$(PRODUCT_LIB_PREFIX)char_LDLIBS =# Define version file$(PRODUCT_LIB_PREFIX)char_VER = SWIchar.ver#============================================================================# Build Rules#============================================================================all_SRC := $(sort $(foreach target, $(PROGS) $(STATIC_LIBS) $(LIBS), $($(target)_SRC)))progsubdirs := $(sort ./ $(foreach target, $(PROGS), $(dir $($(target)_SRC))))libsubdirs := $(sort ./ $(foreach target, $(STATIC_LIBS) $(LIBS), $(dir $($(target)_SRC))))#-------------------------------------------------# Header file and Include Directories#-------------------------------------------------vpath lib%.a $(patsubst -L%, %, $(filter -L%, $(LDFLAGS))) \ $(subst :, , $(LD_LIBRARY_PATH)) $(STD_LIBRARY_PATH)ifneq ($(SRCPATH),)vpath %.c $(SRCPATH)vpath %.cc $(SRCPATH)vpath %.cpp $(SRCPATH)vpath %.C $(SRCPATH)vpath %.def $(SRCPATH)vpath %.f $(SRCPATH)vpath %.F $(SRCPATH)vpath %.l $(SRCPATH)vpath %.mod $(SRCPATH)vpath %.p $(SRCPATH)vpath %.r $(SRCPATH)vpath %.s $(SRCPATH)vpath %.sh $(SRCPATH)vpath %.y $(SRCPATH)endif#--------------------------------------------------# Default all target as all-shared#--------------------------------------------------all: all-shared#--------------------------------------------------# .PHONY target declares all possible rules#--------------------------------------------------.PHONY: $(PROGS) $(STATIC_LIBS) $(LIBS) \ $(addsuffix -shared, $(STATIC_LIBS) $(LIBS)) \ $(addsuffix -static, $(STATIC_LIBS) $(LIBS)) \ $(addsuffix -install, $(STATIC_LIBS) $(LIBS) $(PROGS)) \ $(addsuffix -install-static, $(STATIC_LIBS) $(LIBS)) \ $(addsuffix -install-shared, $(STATIC_LIBS) $(LIBS)) \ $(addsuffix -install-progs, $(PROGS)) \ $(buildbindir)/installprogsubdirs $(buildlibdir)/installlibsubdirs \ installbuildbindir installbuildlibdir \ installbindir installlibdir \ all progs libs-static libs-shared \ all-libs all-static all-shared \ all-install headers cleanall-static: $(addsuffix -install-static, $(STATIC_LIBS) $(LIBS)) \ $(addsuffix -install, $(PROGS))all-shared: $(addsuffix -install-static, $(STATIC_LIBS)) \ $(addsuffix -install-shared, $(LIBS)) \ $(addsuffix -install, $(PROGS))progs: $(addsuffix -progs, $(PROGS))libs: libs-static libs-sharedlibs-static: $(addsuffix -static, $(STATIC_LIBS) $(LIBS))libs-shared: $(addsuffix -static, $(STATIC_LIBS)) $(addsuffix -shared, $(LIBS))#---------------------------------------------------------------------------# headers copies all the public headers and scripts to the build area# (normally automatically done when a library, DLL, or program is # successfully build)#---------------------------------------------------------------------------headers: installincdirifneq ($(PUBLIC_HEADERS),) $(INSTALL) $(PUBLIC_HEADERS) $(incdir)endififneq ($(PUBLIC_HEADER_TREES),) $(INSTALL) -r $(PUBLIC_HEADER_TREES) "$(SWISBSDK)/include"endififneq ($(PUBLIC_SCRIPTS),) $(INSTALL) $(PUBLIC_SCRIPTS) "$(SWISBSDK)/bin"endififneq ($(PUBLIC_CONFIG_FILES),) $(INSTALL) $(PUBLIC_CONFIG_FILES) "$(SWISBSDK)/config"endififneq ($(PUBLIC_ERROR_FILES),) $(INSTALL) $(PUBLIC_ERROR_FILES) "$(SWISBSDK)/config"endif#---------------------------------------------------------------------# clean deletes the entire directory tree for the current build config#---------------------------------------------------------------------clean: $(PROJ_CLEAN) $(RMCLEAN) $(BUILDDIR) @echo Cleaning up $(BUILDDIR)#--------------------------------------------# Rules to create (install) build subdirs#--------------------------------------------$(buildbindir)/installbinsubdirs: $(MKDIRS) $(addprefix $(dir $@), $(progsubdirs)) -$(CHMOD) $(CHMODFLAGSX) $(addprefix $(dir $@), $(progsubdirs))$(buildlibdir)/installlibsubdirs: $(MKDIRS) $(addprefix $(dir $@), $(libsubdirs)) -$(CHMOD) $(CHMODFLAGSX) $(addprefix $(dir $@), $(libsubdirs))installbuildbindir: $(MKDIRS) $(buildbindir) -$(CHMOD) $(CHMODFLAGSX) $(buildbindir)installbuildlibdir: $(MKDIRS) $(buildlibdir) -$(CHMOD) $(CHMODFLAGSX) $(buildlibdir)installbindir: $(MKDIRS) $(bindir) -$(CHMOD) $(CHMODFLAGSX) $(bindir)installlibdir: $(MKDIRS) $(libdir) -$(CHMOD) $(CHMODFLAGSX) $(libdir)installincdir: $(MKDIRS) $(incdir) -$(CHMOD) $(CHMODFLAGSX) $(incdir)#-----------------------------------------------# Targets #-----------------------------------------------$(addsuffix -install, $(PROGS)): %-install: installbindir %-progs $(RM) $(bindir)/$*$(CFG_SUFFIX) $(INSTALL_PROGRAM) $(buildbindir)/$*$(CFG_SUFFIX) $(bindir)$(addsuffix -install, $(STATIC_LIBS) $(LIBS)): %-install: %-install-static %-install-shared$(addsuffix -install-static, $(STATIC_LIBS) $(LIBS)): %-install-static: installlibdir \ %-static headers $(RM) $(libdir)/lib$*$(CFG_SUFFIX).a $(INSTALL_DATA) $(buildlibdir)/lib$*$(CFG_SUFFIX).a $(libdir)$(addsuffix -install-shared, $(LIBS)): %-install-shared: installlibdir \ %-shared headers $(RM) $(libdir)/lib$*$(CFG_SUFFIX).so.$(LIBVER) $(INSTALL_DATA) $(buildlibdir)/lib$*$(CFG_SUFFIX).so.$(LIBVER) $(libdir) $(RM) $(libdir)/lib$*$(CFG_SUFFIX).so ln -s lib$*$(CFG_SUFFIX).so.$(LIBVER) $(libdir)/lib$*$(CFG_SUFFIX).so#-------------------------------------------# Program Targets#--------------------------------------------$(PROGS): %: %-progs$(addsuffix -progs, $(PROGS)): %-progs: installbuildbindir \ $(buildbindir)/installbinsubdirs $(MAKE) -f $(MAKEFILE) $(buildbindir)/$*$(CFG_SUFFIX) TARGET=$* \ DEPS=$*_SRC#--------------------------------------------# Library Targets#--------------------------------------------$(STATIC_LIBS): %: %-static %-shared$(LIBS): %: %-static %-shared$(addsuffix -static, $(STATIC_LIBS) $(LIBS)): %-static: installbuildlibdir \ $(buildlibdir)/installlibsubdirs $(MAKE) -f $(MAKEFILE) $(buildlibdir)/lib$*$(CFG_SUFFIX).a TARGET=$* \ DEPS=$*_SRCLDEXPORTS =ifdef EXPLICIT_VER_FILESLDEXPORTS = --version-script $($(TARGET)_VER)endififndef BUILDING_STUB_SOLDFOLLOWLINKS = -Wl,-h,$(notdir $@).$(LIBVER)endifLDFLAGS_SHARED += $(LDEXPORTS) $(LDFOLLOWLINKS)$(addsuffix -shared, $(LIBS)): %-shared: installbuildlibdir \ $(buildlibdir)/installlibsubdirs $(MAKE) -f $(MAKEFILE) $(buildlibdir)/lib$*$(CFG_SUFFIX).so TARGET=$* \ DEPS=$*_SRC#-----------------------------------------# Recursive rules#------------------------------------------$(addprefix $(buildbindir)/, $(addsuffix $(CFG_SUFFIX), $(PROGS))): \ $(addprefix $(buildbindir)/, \ $(patsubst %.s, %$(CFG_SUFFIX).o, $(filter %.s, $($(DEPS)))) \ $(patsubst %.c, %$(CFG_SUFFIX).o, $(filter %.c, $($(DEPS)))) \ $(patsubst %.cc, %$(CFG_SUFFIX).o, $(filter %.cc, $($(DEPS)))) \ $(patsubst %.cpp, %$(CFG_SUFFIX).o, $(filter %.cpp, $($(DEPS)))) \ $(patsubst %.C, %$(CFG_SUFFIX).o, $(filter %.C, $($(DEPS))))) $(LINK.cc) $(filter %$(CFG_SUFFIX).o, $^) -o $@ $(LDLIBS) $(PROJ_LDLIBS) $(LDLIBS_$(OS)) -$(CHMOD) $(CHMODFLAGSX) $@$(addprefix $(buildlibdir)/, $(patsubst %, lib%$(CFG_SUFFIX).a, $(STATIC_LIBS) $(LIBS))): \ $(addprefix $(buildlibdir)/, \ $(patsubst %.s, %$(CFG_SUFFIX).o, $(filter %.s, $($(DEPS)))) \ $(patsubst %.c, %$(CFG_SUFFIX).o, $(filter %.c, $($(DEPS)))) \ $(patsubst %.cc, %$(CFG_SUFFIX).o, $(filter %.cc, $($(DEPS)))) \ $(patsubst %.cpp, %$(CFG_SUFFIX).o, $(filter %.cpp, $($(DEPS)))) \ $(patsubst %.C, %$(CFG_SUFFIX).o, $(filter %.C, $($(DEPS))))) $(RM) $@ $(AR) $(ARFLAGS) $@ $^ -$(CHMOD) $(CHMODFLAGS) $@$(addprefix $(buildlibdir)/, $(patsubst %, lib%$(CFG_SUFFIX).so, $(LIBS))): \ $(addprefix $(buildlibdir)/, \ $(patsubst %.s, %$(CFG_SUFFIX).o, $(filter %.s, $($(DEPS)))) \ $(patsubst %.c, %$(CFG_SUFFIX).o, $(filter %.c, $($(DEPS)))) \ $(patsubst %.cc, %$(CFG_SUFFIX).o, $(filter %.cc, $($(DEPS)))) \ $(patsubst %.cpp, %$(CFG_SUFFIX).o, $(filter %.cpp, $($(DEPS)))) \ $(patsubst %.C, %$(CFG_SUFFIX).o, $(filter %.C, $($(DEPS))))) $(LINK.cc) $(LDFLAGS_SHARED) $(filter %$(CFG_SUFFIX).o, $^) -o $@.$(LIBVER) $(LDLIBS) -$(CHMOD) $(CHMODFLAGSX) $@.$(LIBVER) $(RM) $@ ln -s $(patsubst $(buildlibdir)/%,%, $@).$(LIBVER) $@#---------------------------------------# Object File compilation Rules#----------------------------------------$(buildbindir)/%$(CFG_SUFFIX).o: %.c $(COMPILE.c) $(addprefix ${PWD}/,$<) -o $@ -$(CHMOD) $(CHMODFLAGS) $@$(buildbindir)/%$(CFG_SUFFIX).o: %.cc $(COMPILE.cc) $(addprefix ${PWD}/, $<) -o $@ -$(CHMOD) $(CHMODFLAGS) $@$(buildbindir)/%$(CFG_SUFFIX).o: %.cpp $(COMPILE.cc) $(addprefix ${PWD}/, $<) -o $@ -$(CHMOD) $(CHMODFLAGS) $@$(buildbindir)/%$(CFG_SUFFIX).o: %.C $(COMPILE.C) $(addprefix ${PWD}/, $<) -o $@ -$(CHMOD) $(CHMODFLAGS) $@$(buildlibdir)/%$(CFG_SUFFIX).o: %.c $(COMPILE.c) $(addprefix ${PWD}/, $<) -o $@ -$(CHMOD) $(CHMODFLAGS) $@$(buildlibdir)/%$(CFG_SUFFIX).o: %.cc $(COMPILE.cc) $(addprefix ${PWD}/, $<) -o $@ -$(CHMOD) $(CHMODFLAGS) $@$(buildlibdir)/%$(CFG_SUFFIX).o: %.cpp $(COMPILE.cc) $(addprefix ${PWD}/, $<) -o $@ -$(CHMOD) $(CHMODFLAGS) $@$(buildlibdir)/%$(CFG_SUFFIX).o: %.C $(COMPILE.C) $(addprefix ${PWD}/, $<) -o $@ -$(CHMOD) $(CHMODFLAGS) $@$(buildlibdir)/%$(CFG_SUFFIX).o: %.s $(AS) $(ASFLAGS) -o $@ $< -$(CHMOD) $(CHMODFLAGS) $@
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -