[llvm-commits] CVS: llvm/Makefile_rules

Reid Spencer reid at x10sys.com
Wed Oct 13 04:40:02 PDT 2004



Changes in directory llvm:

Makefile_rules added (r1.1)
---
Log message:

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


---
Diffs of the changes:  (+163 -0)

Index: llvm/Makefile_rules
diff -c /dev/null llvm/Makefile_rules:1.1
*** /dev/null	Wed Oct 13 06:40:01 2004
--- llvm/Makefile_rules	Wed Oct 13 06:39:51 2004
***************
*** 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






More information about the llvm-commits mailing list