[Mesa-dev] [PATCH] radeon/llvm: Convert to Automake
Tom Stellard
tom at stellard.net
Thu Aug 30 13:19:58 PDT 2012
On Thu, Aug 30, 2012 at 10:47:55AM -0700, Matt Turner wrote:
> On Thu, Aug 30, 2012 at 9:55 AM, <tstellar at gmail.com> wrote:
> > From: Tom Stellard <thomas.stellard at amd.com>
> >
> > ---
> > Hi Matt,
> >
> > This patch applies to your automake-gallium branch.
>
> Thanks a bunch!
>
> > configure.ac | 5 ++
> > src/gallium/drivers/radeon/.gitignore | 1 +
> > src/gallium/drivers/radeon/Makefile | 76 -----------------------
> > src/gallium/drivers/radeon/Makefile.am | 87 +++++++++++++++++++++++++++
> > src/gallium/drivers/radeon/Makefile.sources | 32 ++++++++++-
> > 5 files changed, 124 insertions(+), 77 deletions(-)
> > delete mode 100644 src/gallium/drivers/radeon/Makefile
> > create mode 100644 src/gallium/drivers/radeon/Makefile.am
> >
> > + $(LLVM_CFLAGS)
> > +
> > +CXXFLAGS+= $(LLVM_CXXFLAGS)
>
> Do we really need this? We already have LLVM_CXXFLAGS in AM_CXXFLAGS.
>
Probably not.
> > +
> > +tablegen = $(LLVM_BINDIR)/llvm-tblgen -I $(LLVM_INCLUDEDIR) $1 $2 -o $3
> > +
> > +libradeon_la_SOURCES = \
> > + $(GENERATED_SOURCES) \
> > + $(CXX_SOURCES) \
> > + $(C_SOURCES)
> > +
> > +CLEANFILES = $(GENERATED_SOURCES)
>
> We should probably set BUILT_SOURCES here.
>
OK
> > +
> > +SIRegisterInfo.td: SIGenRegisterInfo.pl
> > + $(PERL) $^ > $@
> > +
> > +SIRegisterGetHWRegNum.inc: SIGenRegisterInfo.pl
> > + $(PERL) $^ $@ > /dev/null
> > +
> > +R600Intrinsics.td: R600IntrinsicsNoOpenCL.td R600IntrinsicsOpenCL.td
> > +if HAVE_R600_LLVM_INTRINSICS
> > + cp R600IntrinsicsNoOpenCL.td R600Intrinsics.td
> > +else
> > + cp R600IntrinsicsOpenCL.td R600Intrinsics.td
> > +endif
> > +
> > +R600RegisterInfo.td: R600GenRegisterInfo.pl
> > + $(PERL) $^ > $@
>
> It's nice to put $(AM_V_GEN) before generator calls.
>
You mean like:
$(AM_V_GEN) $(PERL) $^ > $@
> > +
> > +AMDGPUGenRegisterInfo.inc: $(TD_FILES)
> > + $(call tablegen, -gen-register-info, AMDGPU.td, $@)
> > +
> > +AMDGPUGenInstrInfo.inc: $(TD_FILES)
> > + $(call tablegen, -gen-instr-info, AMDGPU.td, $@)
> > +
> > +AMDGPUGenAsmWriter.inc: $(TD_FILES)
> > + $(call tablegen, -gen-asm-writer, AMDGPU.td, $@)
> > +
> > +AMDGPUGenDAGISel.inc: $(TD_FILES)
> > + $(call tablegen, -gen-dag-isel, AMDGPU.td, $@)
> > +
> > +AMDGPUGenCallingConv.inc: $(TD_FILES)
> > + $(call tablegen, -gen-callingconv, AMDGPU.td, $@)
> > +
> > +AMDGPUGenSubtargetInfo.inc: $(TD_FILES)
> > + $(call tablegen, -gen-subtarget, AMDGPU.td, $@)
> > +
> > +AMDGPUGenEDInfo.inc: $(TD_FILES)
> > + $(call tablegen, -gen-enhanced-disassembly-info, AMDGPU.td, $@)
> > +
> > +AMDGPUGenIntrinsics.inc: $(TD_FILES)
> > + $(call tablegen, -gen-tgt-intrinsic, AMDGPU.td, $@)
> > +
> > +AMDGPUGenCodeEmitter.inc: $(TD_FILES)
> > + $(call tablegen, -gen-emitter, AMDGPU.td, $@)
> > +
> > +AMDGPUGenMCCodeEmitter.inc: $(TD_FILES)
> > + $(call tablegen, -mc-emitter -gen-emitter, AMDGPU.td, $@)
> > +
> > +AMDGPUGenDFAPacketizer.inc: $(TD_FILES)
> > + $(call tablegen, -gen-dfa-packetizer, AMDGPU.td, $@)
> > +
> > +noinst_PROGRAMS = loader
> > +
> > +loader_SOURCES = loader.cpp
> > +
> > +loader_LDADD = libradeon.la $(LLVM_LIBS)
> > +loader_LDFLAGS = \
> > + $(LLVM_LDFLAGS) \
> > + $(LD_FLAGS)
> > +
> > +#XXX: Delete this when all targets that rely on radeon are converted to
> > +# automake.
> > +all-local: libradeon.la
> > + ln -f $(builddir)/.libs/libradeon.a $(builddir)/libradeon.a
> > +
> > +CLEANFILES += libradeon.a
> > diff --git a/src/gallium/drivers/radeon/Makefile.sources b/src/gallium/drivers/radeon/Makefile.sources
> > index 687acb3..d8df295 100644
> > --- a/src/gallium/drivers/radeon/Makefile.sources
> > +++ b/src/gallium/drivers/radeon/Makefile.sources
> > @@ -1,4 +1,34 @@
> >
> > +TD_FILES := \
> > + AMDGPU.td \
> > + AMDGPUInstrInfo.td \
> > + AMDGPUInstructions.td \
> > + AMDGPUIntrinsics.td \
> > + AMDGPURegisterInfo.td \
> > + AMDILBase.td \
> > + AMDILInstrInfo.td \
> > + AMDILIntrinsics.td \
> > + AMDILRegisterInfo.td \
> > + Processors.td \
> > + R600InstrInfo.td \
> > + R600Instructions.td \
> > + R600Intrinsics.td \
> > + R600Intrinsics.td \
> > + R600IntrinsicsNoOpenCL.td \
> > + R600IntrinsicsOpenCL.td \
> > + R600OpenCLIntrinsics.td \
> > + R600RegisterInfo.td \
> > + R600RegisterInfo.td \
> > + R600Schedule.td \
> > + SIInstrFormats.td \
> > + SIInstrInfo.td \
> > + SIInstructions.td \
> > + SIIntrinsics.td \
> > + SIRegisterInfo.td \
> > + SIRegisterInfo.td \
> > + SISchedule.td
> > +
> > +
> > GENERATED_SOURCES := \
> > R600Intrinsics.td \
> > R600RegisterInfo.td \
> > @@ -16,7 +46,7 @@ GENERATED_SOURCES := \
> > AMDGPUGenMCCodeEmitter.inc \
> > AMDGPUGenDFAPacketizer.inc
> >
> > -CPP_SOURCES := \
> > +CXX_SOURCES := \
> > AMDIL7XXDevice.cpp \
> > AMDILCFGStructurizer.cpp \
> > AMDILDevice.cpp \
> > --
> > 1.7.7.6
>
> When I build with this, I get:
>
> CXX AMDIL7XXDevice.lo
> In file included from AMDIL7XXDevice.cpp:10:0:
> AMDGPUSubtarget.h:22:38: fatal error: AMDGPUGenSubtargetInfo.inc: No
> such file or directory
> compilation terminated.
> make: *** [AMDIL7XXDevice.lo] Error 1
>
> and seeing AMDGPUGenSubtargetInfo.inc in GENERATED_SOURCES, if I try to make it:
>
> make: *** No rule to make target `R600InstrInfo.td', needed by
> `AMDGPUGenSubtargetInfo.inc'. Stop.
>
> After removing R600InstrInfo.td, R600IntrinsicsOpenCL.td, and
> R600OpenCLIntrinsics.td from TD_FILES in Makefile.sources,
> AMDIL7XXDevice.lo still fails to build, but I can now build
> AMDGPUGenSubtargetInfo.inc.
>
> So, we either need to do more finely grained dependencies on *.inc
> files, or put BUILT_SOURCES = $(GENERATED_SOURCES) to make sure
> everything is generated before we start compiling. The first would
> allow slightly better parallelism in the build, but the second is much
> easier.
>
Let's do BUILT_SOURCES = $(GENERATED_SOURCES) for now. Do you want me
to send you a new patch, or have you already made these changes locally?
-Tom
> Thanks,
> Matt
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/mesa-dev
More information about the mesa-dev
mailing list