echo "LLVM Source Root: " $(LLVM_SRC_ROOT)
echo "LLVM Object Root: " $(LLVM_OBJ_ROOT)
+###########################################################################
+# Suffixes and implicit rules:
+# Empty out the list of suffixes, generate a list that is only
+# used by this Makefile, and cancel useless implicit rules. This
+# will hopefully speed up compilation a little bit.
+###########################################################################
+.SUFFIXES:
+.SUFFIXES: .c .cpp .h .hpp .y .l
+.SUFFIXES: .lo .o .a .so .bc
+.SUFFIXES: .ps .dot .d
+
#
# Mark all of these targets as phony. This will hopefully speed up builds
# slightly since GNU Make will not try to find implicit rules for targets
# which are marked as Phony.
#
.PHONY: all dynamic bytecodelib bytecodelib-install
-.PHONY: clean distclean install test bytecode prdirs
+.PHONY: clean cleandeps distclean install test bytecode prdirs
###########################################################################
# Miscellaneous paths and commands:
PROFILE = -pg
endif
-#
-# Suffixes for library compilation rules
-#
-.SUFFIXES: .so
-
###########################################################################
# Library Locations:
# These variables describe various library locations:
# The LLVM GCC front-end in C and C++ flavors
#
LLVMGCC := PATH=$(LLVMTOOLCURRENT):$(PATH) $(LLVMGCCDIR)/bin/gcc
-LCC1 := $(LLVMGCCDIR)/lib/gcc-lib/$(LLVMGCCARCH)/cc1
+LCC1 := $(LLVMGCCDIR)/libexec/gcc/$(LLVMGCCARCH)/cc1
LLVMGXX := PATH=$(LLVMTOOLCURRENT):$(PATH) $(LLVMGCCDIR)/bin/g++
-LCC1XX := $(LLVMGCCDIR)/lib/gcc-lib/$(LLVMGCCARCH)/cc1plus
+LCC1XX := $(LLVMGCCDIR)/libexec/gcc/$(LLVMGCCARCH)/cc1plus
#--------------------------------------------------------------------------
# Some of the compiled LLVM tools which are used for compilation of runtime
# Create one .o file from a bunch of .o files...
Relink := ${LIBTOOL} --mode=link $(CXX)
-ifndef SHARED_LIBRARY
-Relink += -only-static
-endif
#
# Configure where the item being compiled should go.
#---------------------------------------------------------
ifdef DIRS
-all install clean test bytecode ::
+all install clean cleandeps test bytecode ::
$(VERB) for dir in ${DIRS}; do \
(cd $$dir; $(MAKE) $@) || exit 1; \
done
all :: $(addsuffix /.makeall , $(PARALLEL_DIRS))
install :: $(addsuffix /.makeinstall , $(PARALLEL_DIRS))
clean :: $(addsuffix /.makeclean , $(PARALLEL_DIRS))
+cleandeps:: $(addsuffix /.makecleandeps, $(PARALLEL_DIRS))
test :: $(addsuffix /.maketest , $(PARALLEL_DIRS))
bytecode :: $(addsuffix /.makebytecode, $(PARALLEL_DIRS))
-%/.makeall %/.makeinstall %/.makeclean %/.maketest %/.makebytecode:
+%/.makeall %/.makeinstall %/.makeclean %/.makecleandeps %/.maketest \
+ %/.makebytecode:
$(VERB) cd $(@D); $(MAKE) $(subst $(@D)/.make,,$@)
endif
# Handle directories that may or may not exist
ifdef OPTIONAL_DIRS
-all install clean test bytecode ::
+all install clean cleandeps test bytecode ::
$(VERB) for dir in ${OPTIONAL_DIRS}; do \
if [ -d $$dir ]; \
then\
#
ifneq ($(MAKECMDGOALS),clean)
ifneq ($(MAKECMDGOALS),distclean)
+ifneq ($(MAKECMDGOALS),cleandeps)
ifneq ($(SourceDepend),)
-include $(SourceDepend)
endif
endif
endif
+endif
+
+cleandeps::
+ $(VERB) rm -f $(SourceDepend)
+