rhubarb-lip-sync/rhubarb/lib/flite-1.4/config/common_make_rules

211 lines
7.1 KiB
Makefile

########################################################-*-mode:Makefile-*-
## ##
## Language Technologies Institute ##
## Carnegie Mellon University ##
## Copyright (c) 1999 ##
## All Rights Reserved. ##
## ##
## Permission is hereby granted, free of charge, to use and distribute ##
## this software and its documentation without restriction, including ##
## without limitation the rights to use, copy, modify, merge, publish, ##
## distribute, sublicense, and/or sell copies of this work, and to ##
## permit persons to whom this work is furnished to do so, subject to ##
## the following conditions: ##
## 1. The code must retain the above copyright notice, this list of ##
## conditions and the following disclaimer. ##
## 2. Any modifications must be clearly marked as such. ##
## 3. Original authors' names are not deleted. ##
## 4. The authors' names are not used to endorse or promote products ##
## derived from this software without specific prior written ##
## permission. ##
## ##
## CARNEGIE MELLON UNIVERSITY AND THE CONTRIBUTORS TO THIS WORK ##
## DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ##
## ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT ##
## SHALL CARNEGIE MELLON UNIVERSITY NOR THE CONTRIBUTORS BE LIABLE ##
## FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES ##
## WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN ##
## AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ##
## ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF ##
## THIS SOFTWARE. ##
## ##
###########################################################################
## ##
## Common make rules included in all Makefiles ##
## ##
###########################################################################
# System type
-include $(TOP)/config/system.mak
# Include project specific rules
-include $(TOP)/config/project.mak
## User defined configuration options
include $(TOP)/config/config
INCLUDES = -I$(TOP)/include
ifeq ($(TARGET_OS),palmos)
INCLUDES += -I$(TOP)/palm/include
endif
CPPFLAGS += $(LOCAL_INCLUDES) $(INCLUDES)
CFLAGS += $(EXTRA_CC_FLAGS) $(OPT) $(DBG)
## These'll become (target)arch dependent at some point
TARGET_PLATFORM=$(TARGET_CPU)-$(TARGET_OS)
HOST_PLATFORM=$(HOST_CPU)-$(HOST_OS)
ifndef BUILDDIR
BUILDDIR=$(TOP)/build/$(TARGET_PLATFORM)
endif
OBJDIR=$(BUILDDIR)/obj/$(DIRNAME)
BINDIR=$(BUILDDIR)/bin
ifeq ($(HOST_PLATFORM),$(TARGET_PLATFORM))
BINDIR=$(TOP)/bin
endif
LIBDIR=$(BUILDDIR)/lib
BUILDDIRS=$(OBJDIR) $(BINDIR) $(LIBDIR)
FLITELIBS = $(BUILDDIR)/lib/libflite.a
FLITELIBFLAGS = -L$(BUILDDIR)/lib -lflite
LDFLAGS += -lm $(AUDIOLIBS) $(OTHERLIBS)
FULLOBJS = $(OBJS:%=$(OBJDIR)/%)
ifdef SHFLAGS
SOOBJS = $(OBJS:.o=.os)
FULLSHOBJS = $(SOOBJS:%=$(OBJDIR)/%)
ifdef LIBNAME
ALL += $(OBJDIR)/.build_so
endif
endif
ifdef LIBNAME
ALL += $(OBJDIR)/.build_lib
endif
# Only do some directories when you are not cross compiling
ifeq ($(HOST_PLATFORM),$(TARGET_PLATFORM))
OTHER_BUILD_DIRS = $(HOST_ONLY_DIRS)
ALL += $(HOST_ONLY_BUILDS)
endif
# When target is palm add the palm directory at the top level
ifeq ($(DIRNAME),)
ifeq ($(TARGET_OS),palmos)
OTHER_BUILD_DIRS += palm
endif
endif
all: $(BUILDDIRS) $(OTHER_BUILD_DIRS) $(OBJDIR)/.make_build_dirs $(ALL) nothing
nothing:
@ echo > /dev/null
$(BUILDDIRS):
@ mkdir -p $@ 2>/dev/null || true
$(OBJDIR)/%.o : %.c
$(CC) $(DEFS) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
$(OBJDIR)/%.os : %.c
$(CC) $(SHFLAGS) $(DEFS) $(CPPFLAGS) $(CFLAGS) -c $< -o $@
$(OBJDIR)/.build_lib: $(FULLOBJS)
@ (cd $(OBJDIR) && $(AR) cruv ../../../$(LIBDIR)/lib$(LIBNAME).a $(OBJS))
@ $(RANLIB) $(LIBDIR)/lib$(LIBNAME).a
@ touch $(OBJDIR)/.build_lib
$(OBJDIR)/.build_so: $(FULLSHOBJS)
@ (cd $(OBJDIR) && $(AR) cruv ../../../$(LIBDIR)/lib$(LIBNAME).shared.a $(SOOBJS))
@ $(RANLIB) $(LIBDIR)/lib$(LIBNAME).shared.a
@ touch $(OBJDIR)/.build_so
# Used in the lib/ directory and in building new voices
$(LIBDIR)/%.so: $(LIBDIR)/%.shared.a
@ echo making $@
@ rm -rf shared_os && mkdir shared_os
@ rm -f $@ $@.${PROJECT_VERSION} $@.${PROJECT_SHLIB_VERSION}
@ (cd shared_os && ar x ../$<)
@ (cd shared_os && $(CC) -shared -Wl,-soname,`basename $@`.${PROJECT_SHLIB_VERSION} -o ../$@.${PROJECT_VERSION} *.os)
@ (cd $(LIBDIR) && ln -s `basename $@.${PROJECT_VERSION}` `basename $@.${PROJECT_SHLIB_VERSION}` )
@ (cd $(LIBDIR) && ln -s `basename $@.${PROJECT_SHLIB_VERSION}` `basename $@` )
@ rm -rf shared_os
$(OBJDIR)/.make_build_dirs:
@ echo making in $(DIRNAME) ...
ifdef BUILD_DIRS
@ set -e; for i in $(BUILD_DIRS) $(OTHER_BUILD_DIRS) ; \
do \
$(MAKE) -C $$i --no-print-directory; \
done
endif
clean:
@ echo make clean in $(DIRNAME) ...
@ rm -rf .build_lib .build_so *.o *.os *.a *~ $(LOCAL_CLEAN) $(OBJDIR)
ifdef ALL_DIRS
@ set -e; for i in $(ALL_DIRS) ; \
do \
$(MAKE) -C $$i --no-print-directory clean; \
done
endif
distclean:
@ echo make distclean in $(DIRNAME) ...
ifdef ALL_DIRS
@ set -e; for i in $(ALL_DIRS) ; \
do \
$(MAKE) -C $$i --no-print-directory distclean; \
done
endif
@ rm -rf .build_lib .build_shlib make.depend \
*.o *.os *.a *~ $(LOCAL_CLEAN) $(DIST_CLEAN) $(OBJDIR)
DEPEND=$(OBJDIR)/make.depend
MAKE_DEPEND=$(CC) -MM $(CPPFLAGS) $(CFLAGS)
depend:
@ echo make depend in $(DIRNAME) ...
@ rm -f $(DEPEND)
@ $(MAKE) nothing
ifdef ALL_DIRS
@ set -e; for i in $(ALL_DIRS) ; \
do \
$(MAKE) -C $$i --no-print-directory depend ; \
done
endif
$(DEPEND): $(SRCS) $(OBJDIR)
@ rm -f $(DEPEND)
@ for i in $(SRCS) ; \
do \
echo "# $$i" ; \
$(MAKE_DEPEND) $$i | sed -e 's,^\([^:][^:]*\):,$(OBJDIR)/\1:,'; \
echo ; \
done > $(DEPEND)
file-list:
@ echo making file-list in $(DIRNAME) ...
@ for f in $(FILES) ; \
do \
echo $(DIRNAME)/$$f >>$(TOP)/FileList ; \
done
ifdef ALL_DIRS
@ for i in $(ALL_DIRS) ; \
do \
$(MAKE) -C $$i --no-print-directory file-list; \
done
endif
info:
@echo Project Name = $(PROJECT_NAME)
@echo Project Prefix = $(PROJECT_PREFIX)
@echo Project Version = $(PROJECT_VERSION)
@echo Project Date = $(PROJECT_DATE)
@echo Project State = $(PROJECT_STATE)
@echo
@echo Configuration Variables
@echo none at present
# If there are sources in this directory, load in the dependencies
ifdef SRCS
-include $(DEPEND)
endif