mirror of
https://github.com/RPCS3/llvm.git
synced 2025-02-08 11:37:03 +00:00
Support bytecode generation, GenCodeEmitter, etc.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@17085 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
900aa65a91
commit
952ba29d33
112
Makefile_rules
112
Makefile_rules
@ -10,15 +10,21 @@
|
|||||||
#
|
#
|
||||||
# LLVM Specific C/C++ compiler flags
|
# LLVM Specific C/C++ compiler flags
|
||||||
#
|
#
|
||||||
|
# Locations of built programs/libraries
|
||||||
|
LDIR := $(top_builddir)/$(BUILDMODE)/lib
|
||||||
|
BDIR := $(top_builddir)/$(BUILDMODE)/bin
|
||||||
|
DDIR := $(top_builddir)/$(BUILDMODE)/data
|
||||||
|
EDIR := $(top_builddir)/$(BUILDMODE)/etc
|
||||||
|
BCDIR := $(top_builddir)/$(BUILDMODE)/bclib
|
||||||
|
|
||||||
|
CXXFLAGS :=
|
||||||
|
CFLAGS :=
|
||||||
|
|
||||||
LLVM_COMMONFLAGS := -Wall -W -Wwrite-strings -Wno-unused -Wcast-align
|
LLVM_COMMONFLAGS := -Wall -W -Wwrite-strings -Wno-unused -Wcast-align
|
||||||
LLVM_CXXFLAGS :=
|
LLVM_CXXFLAGS := $(LLVM_COMMONFLAGS)
|
||||||
LLVM_CFLAGS :=
|
LLVM_CFLAGS := $(LLVM_COMMONFLAGS)
|
||||||
LLVM_CPPFLAGS := \
|
LLVM_CPPFLAGS := -I. -I$(srcdir) -I$(top_srcdir)/include \
|
||||||
-I. \
|
-I$(top_builddir)/include -D_RENTRANT -D_GNU_SOURCE -D__STDC_LIMIT_MACROS
|
||||||
-I$(srcdir) \
|
|
||||||
-I$(top_srcdir)/include \
|
|
||||||
-I$(top_builddir)/include \
|
|
||||||
-D_RENTRANT -D_GNU_SOURCE -D__STDC_LIMIT_MACROS
|
|
||||||
|
|
||||||
ifeq ($(BUILDMODE),Profile)
|
ifeq ($(BUILDMODE),Profile)
|
||||||
LLVM_CPPFLAGS += -DNDEBUG
|
LLVM_CPPFLAGS += -DNDEBUG
|
||||||
@ -36,10 +42,12 @@ else
|
|||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
LDIR = $(top_builddir)/$(BUILDMODE)/lib
|
# Set up the standard automake variables
|
||||||
BDIR = $(top_builddir)/$(BUILDMODE)/bin
|
#
|
||||||
DDIR = $(top_builddir)/$(BUILDMODE)/data
|
AM_CPPFLAGS = $(LLVM_CPPFLAGS)
|
||||||
EDIR = $(top_builddir)/$(BUILDMODE)/etc
|
AM_CXXFLAGS = $(LLVM_COMMONFLAGS) $(LLVM_CXXFLAGS)
|
||||||
|
AM_CFLAGS = $(LLVM_COMMONFLAGS) $(LLVM_CFLAGS)
|
||||||
|
AM_LDFLAGS = -L$(LDIR)
|
||||||
|
|
||||||
# Required tool definitions as macros so they can be overridden
|
# Required tool definitions as macros so they can be overridden
|
||||||
LINKLIB := ${LIBTOOL} --tag=CXX --mode=link $(CXX) -o
|
LINKLIB := ${LIBTOOL} --tag=CXX --mode=link $(CXX) -o
|
||||||
@ -47,14 +55,11 @@ LINKLIB := ${LIBTOOL} --tag=CXX --mode=link $(CXX) -o
|
|||||||
BURG := $(top_builddir)/utils/Burg/burg$(EXEEXT)
|
BURG := $(top_builddir)/utils/Burg/burg$(EXEEXT)
|
||||||
RunBurg := $(BURG) -I
|
RunBurg := $(BURG) -I
|
||||||
TBLGEN := $(top_builddir)/utils/TableGen/TableGen$(EXEEXT)
|
TBLGEN := $(top_builddir)/utils/TableGen/TableGen$(EXEEXT)
|
||||||
LGCCLDPROG := $(top_builddir)/tools/gccld/gccld$(EXEEXT)
|
|
||||||
|
|
||||||
# Set up the standard automake variables
|
LLVMGCC := PATH=$(BDIR):$(PATH) $(LLVMGCCDIR)/bin/gcc
|
||||||
#
|
LLVMGXX := PATH=$(BDIR):$(PATH) $(LLVMGCCDIR)/bin/g++
|
||||||
AM_CPPFLAGS = $(LLVM_CPPFLAGS)
|
LLVMAS := $(BDIR)/llvm-as$(EXEEXT)
|
||||||
AM_CXXFLAGS = $(LLVM_COMMONFLAGS) $(LLVM_CXXFLAGS)
|
LLVMGCCLD := $(BDIR)/gccld$(EXEEXT)
|
||||||
AM_CFLAGS = $(LLVM_COMMONFLAGS) $(LLVM_CFLAGS)
|
|
||||||
AM_LDFLAGS = -L$(LDIR)
|
|
||||||
|
|
||||||
# LLVM GNU Make Function macros
|
# LLVM GNU Make Function macros
|
||||||
GETOBJ = $(patsubst %,$(LDIR)/LLVM%.o,$(1))
|
GETOBJ = $(patsubst %,$(LDIR)/LLVM%.o,$(1))
|
||||||
@ -68,8 +73,11 @@ ifdef lib_LIBRARIES
|
|||||||
lib_LINKS_TO_MAKE = $(foreach L,$(lib_LIBRARIES),$(patsubst lib%.a,$(LDIR)/lib%.a,$(L)))
|
lib_LINKS_TO_MAKE = $(foreach L,$(lib_LIBRARIES),$(patsubst lib%.a,$(LDIR)/lib%.a,$(L)))
|
||||||
all-am : $(lib_LINKS_TO_MAKE)
|
all-am : $(lib_LINKS_TO_MAKE)
|
||||||
|
|
||||||
$(LDIR)/lib%.a : lib%.a
|
$(LDIR)/lib%.a : $(LDIR) lib%.a
|
||||||
cwd=`pwd` ; cd $(LDIR) ; $(LN) -s $${cwd}/$* .
|
cwd=`pwd` ; cd $(LDIR) ; $(RM) -f lib$*.a ; $(LN) -s $${cwd}/lib$*.a .
|
||||||
|
|
||||||
|
$(LDIR):
|
||||||
|
$(MKDIR) $(LDIR)
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef bin_PROGRAMS
|
ifdef bin_PROGRAMS
|
||||||
@ -77,8 +85,12 @@ bin_LINKS_TO_MAKE = $(foreach P,$(bin_PROGRAMS),$(patsubst %,$(BDIR)/%,$(P)))
|
|||||||
|
|
||||||
all-am : $(bin_LINKS_TO_MAKE)
|
all-am : $(bin_LINKS_TO_MAKE)
|
||||||
|
|
||||||
$(BDIR)/% : %
|
$(BDIR)/% : $(BDIR) %
|
||||||
cwd=`pwd` ; cd $(BDIR) ; $(LN) -s $${cwd}/$* .
|
cwd=`pwd` ; cd $(BDIR) ; $(RM) -f $* ; $(LN) -s $${cwd}/$* .
|
||||||
|
|
||||||
|
$(BDIR):
|
||||||
|
$(MKDIR) $(BDIR)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
ifdef PRELINK
|
ifdef PRELINK
|
||||||
@ -91,11 +103,48 @@ all-am: $(PRELINK_LIB_NAME)
|
|||||||
$(PRELINK_LIB_NAME) : $(PRELINK_OBJECTS)
|
$(PRELINK_LIB_NAME) : $(PRELINK_OBJECTS)
|
||||||
$(LIBTOOL) --mode=link $(CXX) -o $(PRELINK_LIB_NAME) $(PRELINK_OBJECTS)
|
$(LIBTOOL) --mode=link $(CXX) -o $(PRELINK_LIB_NAME) $(PRELINK_OBJECTS)
|
||||||
|
|
||||||
|
|
||||||
clean-am: clean-relink
|
clean-am: clean-relink
|
||||||
|
|
||||||
clean-relink:
|
clean-relink:
|
||||||
$(RM) -f $(PRELINK_LIB_NAME)
|
$(RM) -f $(PRELINK_LIB_NAME)
|
||||||
|
|
||||||
|
install-am: install-prelink
|
||||||
|
|
||||||
|
install-prelink:
|
||||||
|
@${ECHO} ======= Installing $(PRELINK) library =======
|
||||||
|
$(INSTALL_DATA) '$(PRELINK_LIB_NAME)' $(DESTDIR)$(libdir)
|
||||||
|
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifdef BYTECODE_LIBRARY
|
||||||
|
BCL_LIB_NAME = $(BCDIR)/$(patsubst lib%.a,%.bc,$(BYTECODE_LIBRARY))
|
||||||
|
BCL_VAR_NAME = $(patsubst lib%.a,lib%_a,$(BYTECODE_LIBRARY))_OBJECTS
|
||||||
|
BCL_OBJECTS = $(patsubst %.o,%.bc,$($(BCL_VAR_NAME)))
|
||||||
|
|
||||||
|
LinkBCLib := $(LLVMGCC) -shared -nostdlib
|
||||||
|
ifdef EXPORTED_SYMBOL_LIST
|
||||||
|
LinkBCLib += -Xlinker -internalize-public-api-list=$(EXPORTED_SYMBOL_LIST)
|
||||||
|
else
|
||||||
|
LinkBCLib += -Xlinker -disable-internalize
|
||||||
|
endif
|
||||||
|
|
||||||
|
all-am: $(BCDIR) $(BCL_LIB_NAME)
|
||||||
|
|
||||||
|
$(BCL_LIB_NAME) : $(BCL_OBJECTS)
|
||||||
|
$(LinkBCLib) -o $@ $(BCL_OBJECTS) $(LibSubDirs) $(LibLinkOpts)
|
||||||
|
|
||||||
|
$(BCDIR):
|
||||||
|
$(MKDIR) $(BCDIR)
|
||||||
|
|
||||||
|
clean-am: clean-bcl
|
||||||
|
|
||||||
|
clean-bcl:
|
||||||
|
$(RM) -f $(BCL_LIB_NAME) *.bc
|
||||||
|
|
||||||
|
install-am: install-bcl
|
||||||
|
intall-bcl:
|
||||||
|
$(INSTALL_DATA) '$(BCL_LIB_NAME)' $(DESTDIR)$(libdir)
|
||||||
|
|
||||||
endif
|
endif
|
||||||
|
|
||||||
%.cpp: %.l
|
%.cpp: %.l
|
||||||
@ -123,6 +172,17 @@ SUFFIXES = .td
|
|||||||
@# If the files were not updated, don't leave them lying around...
|
@# If the files were not updated, don't leave them lying around...
|
||||||
@$(RM) -f $*.tab.c $*.tab.h
|
@$(RM) -f $*.tab.c $*.tab.h
|
||||||
|
|
||||||
|
%.bc : %.cpp
|
||||||
|
@${ECHO} "Compiling $*.cpp to bytecode"
|
||||||
|
$(VERB) $(LLVMGXX) $(AM_CPPFLAGS) $(AM_CXXFLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
%.bc : %.c
|
||||||
|
@${ECHO} "Compiling $*.c to bytecode"
|
||||||
|
$(VERB) $(LLVMGCC) $(AM_CPPFLAGS) $(AM_CFLAGS) -c $< -o $@
|
||||||
|
|
||||||
|
%.bc : %.ll
|
||||||
|
@${ECHO} "Compiling $*.ll to bytecode"
|
||||||
|
$(VERB) $(LLVMAS) $< -f -o $@
|
||||||
|
|
||||||
%GenRegisterNames.inc : %.td
|
%GenRegisterNames.inc : %.td
|
||||||
@echo "Building $< register names with tblgen"
|
@echo "Building $< register names with tblgen"
|
||||||
@ -160,4 +220,8 @@ SUFFIXES = .td
|
|||||||
@echo "Building $< instruction selector with tblgen"
|
@echo "Building $< instruction selector with tblgen"
|
||||||
$(VERB) $(TBLGEN) -I $(srcdir) $< -gen-instr-selector -o $@
|
$(VERB) $(TBLGEN) -I $(srcdir) $< -gen-instr-selector -o $@
|
||||||
|
|
||||||
|
%GenCodeEmitter.inc:: %.td $(TDFILES) $(TBLGEN)
|
||||||
|
@echo "Building $< code emitter with tblgen"
|
||||||
|
$(VERB) $(TBLGEN) -I $(srcdir) $< -gen-emitter -o $@
|
||||||
|
|
||||||
TDFILES = $(wildcard $(srcdir)/*.td ) $(srcdir)/../Target.td
|
TDFILES = $(wildcard $(srcdir)/*.td ) $(srcdir)/../Target.td
|
||||||
|
Loading…
x
Reference in New Issue
Block a user