aboutsummaryrefslogtreecommitdiffstats
path: root/Makefile_rules
diff options
context:
space:
mode:
authorReid Spencer <rspencer@reidspencer.com>2004-10-13 11:39:51 +0000
committerReid Spencer <rspencer@reidspencer.com>2004-10-13 11:39:51 +0000
commit4f2458912cb4d8ace78afdff740709dca458ea7a (patch)
treea5d2aa2e6d3c8f28f1180ae27671de61313be2f0 /Makefile_rules
parent86e100bd9bf1a1a838902c46de926c79c68cdde3 (diff)
downloadexternal_llvm-4f2458912cb4d8ace78afdff740709dca458ea7a.zip
external_llvm-4f2458912cb4d8ace78afdff740709dca458ea7a.tar.gz
external_llvm-4f2458912cb4d8ace78afdff740709dca458ea7a.tar.bz2
Get rid of the horrendous FIND_PATH macro, have libs and progs linked into
a common directory for simplicity. Provide an easy way to relink some objects git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@16949 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'Makefile_rules')
-rw-r--r--Makefile_rules163
1 files changed, 163 insertions, 0 deletions
diff --git a/Makefile_rules b/Makefile_rules
new file mode 100644
index 0000000..d561f43
--- /dev/null
+++ b/Makefile_rules
@@ -0,0 +1,163 @@
+#,===-- Makefile.rules.am - Common make rules for LLVM ------*- Makefile -*--===#
+#
+# The LLVM Compiler Infrastructure
+#
+# This file was developed by Reid Spencer and is distributed under the
+# University of Illinois Open Source License. See LICENSE.TXT for details.
+#
+#===------------------------------------------------------------------------===#
+
+#
+# LLVM Specific C/C++ compiler flags
+#
+LLVM_COMMONFLAGS := -Wall -W -Wwrite-strings -Wno-unused -Wcast-align
+LLVM_CXXFLAGS :=
+LLVM_CFLAGS :=
+LLVM_CPPFLAGS := \
+ -I. \
+ -I$(srcdir) \
+ -I$(top_srcdir)/include \
+ -I$(top_builddir)/include \
+ -D_RENTRANT -D_GNU_SOURCE -D__STDC_LIMIT_MACROS
+
+ifeq ($(BUILDMODE),Profile)
+ LLVM_CPPFLAGS += -DNDEBUG
+ LLVM_CXXFLAGS += -pg -O3 -finline-functions -felide-constructors
+ LLVM_CFLAGS += -pg
+else
+ ifeq ($(BUILDMODE),Release)
+ LLVM_CPPFLAGS += -DNDEBUG
+ LLVM_CXXFLAGS += -O3 -finline-functions -fomit-frame-pointer -felide-constructors
+ LLVM_CFLAGS += -O3
+ else
+ LLVM_CPPFLAGS += -D_DEBUG
+ LLVM_CXXFLAGS += -O1
+ LLVM_CFLAGS += -O1
+ endif
+endif
+
+LDIR = $(top_builddir)/$(BUILDMODE)/lib
+BDIR = $(top_builddir)/$(BUILDMODE)/bin
+DDIR = $(top_builddir)/$(BUILDMODE)/data
+EDIR = $(top_builddir)/$(BUILDMODE)/etc
+
+# Required tool definitions as macros so they can be overridden
+LINKLIB := ${LIBTOOL} --tag=CXX --mode=link $(CXX) -o
+
+BURG := $(top_builddir)/utils/Burg/burg$(EXEEXT)
+RunBurg := $(BURG) -I
+TBLGEN := $(top_builddir)/utils/TableGen/TableGen$(EXEEXT)
+LGCCLDPROG := $(top_builddir)/tools/gccld/gccld$(EXEEXT)
+
+# Set up the standard automake variables
+#
+AM_CPPFLAGS = $(LLVM_CPPFLAGS)
+AM_CXXFLAGS = $(LLVM_COMMONFLAGS) $(LLVM_CXXFLAGS)
+AM_CFLAGS = $(LLVM_COMMONFLAGS) $(LLVM_CFLAGS)
+AM_LDFLAGS = -L$(LDIR)
+
+# LLVM GNU Make Function macros
+GETOBJ = $(patsubst %,$(LDIR)/LLVM%.o,$(1))
+GETLIB = $(patsubst %,-lLLVM%,$(1))
+GETOBJS = $(foreach I,$(1) $(2) $(3) $(4) $(5) $(6) $(7) $(8) $(9) $(10),$(call GETOBJ,$(I)))
+GETLIBS = $(foreach I,$(1) $(2) $(3) $(4) $(5) $(6) $(7) $(8) $(9) $(10),$(call GETLIB,$(I)))
+
+# LLVM Rules
+
+ifdef lib_LIBRARIES
+lib_LINKS_TO_MAKE = $(foreach L,$(lib_LIBRARIES),$(patsubst lib%.a,$(LDIR)/lib%.a,$(L)))
+all-am : $(lib_LINKS_TO_MAKE)
+
+$(LDIR)/lib%.a : lib%.a
+ cwd=`pwd` ; cd $(LDIR) ; $(LN) -s $${cwd}/$* .
+endif
+
+ifdef bin_PROGRAMS
+bin_LINKS_TO_MAKE = $(foreach P,$(bin_PROGRAMS),$(patsubst %,$(BDIR)/%,$(P)))
+
+all-am : $(bin_LINKS_TO_MAKE)
+
+$(BDIR)/% : %
+ cwd=`pwd` ; cd $(BDIR) ; $(LN) -s $${cwd}/$* .
+endif
+
+ifdef PRELINK
+ PRELINK_LIB_NAME = $(LDIR)/$(patsubst lib%.a,%.o,$(PRELINK))
+ PRELINK_VAR_NAME = $(patsubst lib%.a,lib%_a,$(PRELINK))_OBJECTS
+ PRELINK_OBJECTS = $($(PRELINK_VAR_NAME))
+
+all-am: $(PRELINK_LIB_NAME)
+
+$(PRELINK_LIB_NAME) : $(PRELINK_OBJECTS)
+ $(LIBTOOL) --mode=link $(CXX) -o $(PRELINK_LIB_NAME) $(PRELINK_OBJECTS)
+
+
+clean-am: clean-relink
+
+clean-relink:
+ $(RM) -f $(PRELINK_LIB_NAME)
+endif
+
+%.cpp: %.l
+ @${ECHO} Flexing $<
+ $(VERB) $(FLEX) -t $< | \
+ $(SED) '/^find_rule/d' | \
+ $(SED) 's/void yyunput/inline void yyunput/' | \
+ $(SED) 's/void \*yy_flex_realloc/inline void *yy_flex_realloc/' | \
+ $(SED) 's/#define YY_BUF_SIZE 16384/#define YY_BUF_SIZE (16384*64)/' > $@.tmp
+ $(VERB) $(CMP) -s $@ $@.tmp > /dev/null || ${MV} -f $@.tmp $@
+ @# remove the output of flex if it didn't get moved over...
+ @$(RM) -f $@.tmp
+
+SUFFIXES = .td
+
+%.c: %.y # Cancel built-in rules for yacc
+
+%.h: %.y # Cancel built-in rules for yacc
+
+%.cpp %.h : %.y
+ @${ECHO} "Bisoning `basename $<`"
+ $(VERB) $(BISON) -v -d -p $(<F:%Parser.y=%) -o $*.tab.c $<
+ $(VERB) $(CMP) -s $*.tab.c $*.cpp > /dev/null || ${MV} -f $*.tab.c $*.cpp
+ $(VERB) $(CMP) -s $*.tab.h $*.h > /dev/null || ${MV} -f $*.tab.h $*.h
+ @# If the files were not updated, don't leave them lying around...
+ @$(RM) -f $*.tab.c $*.tab.h
+
+
+%GenRegisterNames.inc : %.td
+ @echo "Building $< register names with tblgen"
+ $(VERB) $(TBLGEN) -I $(srcdir) $< -gen-register-enums -o $@
+
+%GenRegisterInfo.h.inc : %.td
+ @echo "Building $< register information header with tblgen"
+ $(VERB) $(TBLGEN) -I $(srcdir) $< -gen-register-desc-header -o $@
+
+%GenRegisterInfo.inc : %.td
+ @echo "Building $< register info implementation with tblgen"
+ $(VERB) $(TBLGEN) -I $(srcdir) $< -gen-register-desc -o $@
+
+%GenInstrNames.inc : %.td
+ @echo "Building $< instruction names with tblgen"
+ $(VERB) $(TBLGEN) -I $(srcdir) $< -gen-instr-enums -o $@
+
+%GenInstrInfo.inc : %.td
+ @echo "Building $< instruction information with tblgen"
+ $(VERB) $(TBLGEN) -I $(srcdir) $< -gen-instr-desc -o $@
+
+%GenAsmWriter.inc : %.td
+ @echo "Building $< assembly writer with tblgen"
+ $(VERB) $(TBLGEN) -I $(srcdir) $< -gen-asm-writer -o $@
+
+%GenATTAsmWriter.inc : %.td
+ @echo "Building $< AT&T assembly writer with tblgen"
+ $(VERB) $(TBLGEN) -I $(srcdir) $< -gen-asm-writer -o $@
+
+%GenIntelAsmWriter.inc : %.td
+ @echo "Building $< Intel assembly writer with tblgen"
+ $(VERB) $(TBLGEN) -I $(srcdir) $< -gen-asm-writer -asmwriternum=1 -o $@
+
+%GenInstrSelector.inc: %.td
+ @echo "Building $< instruction selector with tblgen"
+ $(VERB) $(TBLGEN) -I $(srcdir) $< -gen-instr-selector -o $@
+
+TDFILES = $(wildcard $(srcdir)/*.td ) $(srcdir)/../Target.td