| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219 |
- ########################################################-*-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)
- ifdef BUILD_DIRS
- @ rm -f $(DEPEND)
- @ for i in $(SRCS) ; \
- do \
- echo "# $$i" ; \
- $(MAKE_DEPEND) $$i | sed -e 's,^\([^:][^:]*\):,$(OBJDIR)/\1:,'; \
- echo ; \
- done > $(DEPEND)
- endif
- file-list:
- @ echo making file-list in $(DIRNAME) ...
- ifeq ($(TOP),.)
- @ for f in $(FILES) ; \
- do \
- echo $$f >>$(TOP)/FileList ; \
- done
- else
- @ for f in $(FILES) ; \
- do \
- echo $(DIRNAME)/$$f >>$(TOP)/FileList ; \
- done
- endif
- 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
|