diff options
-rw-r--r-- | Makefile.am | 8 | ||||
-rw-r--r-- | configure.ac | 53 | ||||
-rw-r--r-- | debugger/Makefile.am | 27 | ||||
-rw-r--r-- | debugger/system_routine/.gitignore | 12 | ||||
-rw-r--r-- | debugger/system_routine/GNUmakefile.in | 3 | ||||
-rw-r--r-- | debugger/system_routine/Makefile | 84 | ||||
-rw-r--r-- | debugger/system_routine/Makefile.am | 42 |
7 files changed, 108 insertions, 121 deletions
diff --git a/Makefile.am b/Makefile.am index c7ae7351..e049e3c3 100644 --- a/Makefile.am +++ b/Makefile.am @@ -19,11 +19,11 @@ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -if HAVE_SHADER_DEBUGGER -SHADER_DEBUGGER_SUBDIR = debugger -endif +SUBDIRS = lib man tools scripts tests benchmarks -SUBDIRS = lib man tools scripts tests benchmarks $(SHADER_DEBUGGER_SUBDIR) +if BUILD_SHADER_DEBUGGER +SUBDIRS += debugger +endif test: ${MAKE} -C tests test diff --git a/configure.ac b/configure.ac index 350b6012..3af123e4 100644 --- a/configure.ac +++ b/configure.ac @@ -33,6 +33,7 @@ AC_CONFIG_AUX_DIR([build-aux]) AC_USE_SYSTEM_EXTENSIONS AM_INIT_AUTOMAKE([foreign dist-bzip2]) +AM_PATH_PYTHON([3],, [:]) AM_MAINTAINER_MODE # Checks for functions, headers, structures, etc. @@ -47,7 +48,7 @@ AC_PROG_LIBTOOL # Require X.Org macros 1.16 or later for XORG_TESTSET_CFLAG m4_ifndef([XORG_MACROS_VERSION], - [m4_fatal([must hate install xorg-macros 1.16 or later before running autoconf/autogen])]) + [m4_fatal([must install xorg-macros 1.16 or later before running autoconf/autogen])]) XORG_MACROS_VERSION(1.16) XORG_DEFAULT_OPTIONS @@ -72,22 +73,47 @@ if test "x$HAVE_GLIB" = xyes; then fi AM_CONDITIONAL(HAVE_GLIB, [test "x$HAVE_GLIB" = xyes]) -AC_ARG_ENABLE(shader-debugger, - AS_HELP_STRING([--enable-shader-debugger], - [Enable shader debugging support [default=no]]), - [SHADER_DEBUGGER="$enableval"], - [SHADER_DEBUGGER=no]) -AM_CONDITIONAL(HAVE_SHADER_DEBUGGER, [test "x$SHADER_DEBUGGER" = xyes]) -if test "x$SHADER_DEBUGGER" = xyes; then - AC_CHECK_PROG([GEN4ASM], intel-gen4asm, intel-gen4asm) - if test -z "$GEN4ASM"; then - AC_MSG_ERROR([Cannot find intel-gen4asm in your path; please set GEN4ASM env variable]) +# ----------------------------------------------------------------------------- +# Configuration options +# ----------------------------------------------------------------------------- +# Define a configure option for the shadder debugger +AC_ARG_ENABLE(shader-debugger, AS_HELP_STRING([--enable-shader-debugger], + [Enable shader debugging support [autodetected]]), + [BUILD_SHADER_DEBUGGER="$enableval"], [BUILD_SHADER_DEBUGGER=auto]) + +# Shadder debugger depends on python3, intel-genasm and objcopy +if test "x$BUILD_SHADER_DEBUGGER" != xno; then + # Check Python 3 is installed + if test "$PYTHON" = ":" ; then + if test "x$BUILD_SHADER_DEBUGGER" = xyes; then + AC_MSG_ERROR([Shader debugger requested, python version 3 not found.]) + else + BUILD_SHADER_DEBUGGER=no + fi + fi + # Check for the Intel Chipset assembler compiler + AC_PATH_PROGS([GEN4ASM], intel-gen4asm) + if test -z "$GEN4ASM" ; then + if test "x$BUILD_SHADER_DEBUGGER" = xyes; then + AC_MSG_ERROR([Shader debugger requested, but intel-gen4asm not found.]) else - AC_CONFIG_FILES([debugger/system_routine/GNUmakefile]) - AC_DEFINE(HAVE_SHADER_DEBUGGER, 1, [Have shader debugging support]) + BUILD_SHADER_DEBUGGER=no fi + fi + # Check for the objcopy GNU binary utiliy command + AC_PATH_PROGS([OBJCOPY], objcopy) + if test -z "$OBJCOPY" ; then + if test "x$BUILD_SHADER_DEBUGGER" = xyes; then + AC_MSG_ERROR([Shader debugger requested, but objcopy command not found.]) + else + BUILD_SHADER_DEBUGGER=no + fi + fi fi +AM_CONDITIONAL(BUILD_SHADER_DEBUGGER, [test "x$BUILD_SHADER_DEBUGGER" != xno]) +# ----------------------------------------------------------------------------- + # To build multithread code, gcc uses -pthread, Solaris Studio cc uses -mt XORG_TESTSET_CFLAG([THREAD_CFLAGS], [-pthread], [-mt]) AC_SUBST([THREAD_CFLAGS]) @@ -101,5 +127,6 @@ AC_CONFIG_FILES([ tests/Makefile tools/Makefile debugger/Makefile + debugger/system_routine/Makefile ]) AC_OUTPUT diff --git a/debugger/Makefile.am b/debugger/Makefile.am index 7d914ecb..ac602aa6 100644 --- a/debugger/Makefile.am +++ b/debugger/Makefile.am @@ -1,19 +1,16 @@ -SUBDIRS=system_routine -bin_PROGRAMS = # +SUBDIRS = system_routine -if HAVE_SHADER_DEBUGGER -##needed by distcheck -DIST_SUBDIRS=system_routine -EXTRA_DIST=system_routine/ +bin_PROGRAMS = eudb +noinst_PROGRAMS = debug_rdata -bin_PROGRAMS += \ - eudb \ - debug_rdata \ - $(NULL) -endif -LDADD = ../lib/libintel_tools.la $(DRM_LIBS) $(PCIACCESS_LIBS) +AM_CPPFLAGS = \ + -I$(top_srcdir) \ + -I$(top_srcdir)/lib -AM_CFLAGS = $(DRM_CFLAGS) $(PCIACCESS_CFLAGS) $(CWARNFLAGS) \ - -I$(srcdir)/.. \ - -I$(srcdir)/../lib +AM_CFLAGS = \ + $(DRM_CFLAGS) \ + $(PCIACCESS_CFLAGS) \ + $(CWARNFLAGS) + +LDADD = $(top_builddir)/lib/libintel_tools.la $(DRM_LIBS) $(PCIACCESS_LIBS) diff --git a/debugger/system_routine/.gitignore b/debugger/system_routine/.gitignore index dad5fcf1..d19500cf 100644 --- a/debugger/system_routine/.gitignore +++ b/debugger/system_routine/.gitignore @@ -1,2 +1,10 @@ -GNUmakefile -!Makefile +evict.h +eviction_macro +sr +sr.asm +sr.c +sr.cpp +tiny +tiny.asm +tiny.c +tiny.cpp diff --git a/debugger/system_routine/GNUmakefile.in b/debugger/system_routine/GNUmakefile.in deleted file mode 100644 index cd29cb52..00000000 --- a/debugger/system_routine/GNUmakefile.in +++ /dev/null @@ -1,3 +0,0 @@ -include Makefile -srcdir = @srcdir@ -VPATH = @srcdir@ diff --git a/debugger/system_routine/Makefile b/debugger/system_routine/Makefile deleted file mode 100644 index 981db496..00000000 --- a/debugger/system_routine/Makefile +++ /dev/null @@ -1,84 +0,0 @@ -# Copyright © 2011 Intel Corporation -# -# Permission is hereby granted, free of charge, to any person obtaining a copy -# of this software and associated documentation files (the "Software"), to deal -# in the Software without restriction, including without limitation the rights -# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -# copies of the Software, and to permit persons to whom the Software is -# furnished to do so, subject to the following conditions: -# -# The above copyright notice and this permission notice (including the next -# paragraph) shall be included in all copies or substantial portions of the -# Software. -# -# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -# SOFTWARE. -# -# Authors: -# Ben Widawsky <ben@bwidawsk.net> - -OBJCOPY?=objcopy - -PRECPP=./pre_cpp.py -CPP_FLAGS=-x assembler-with-cpp -P - -GEN4ASM_FLAGS?=-g6 -a -b - -TEMP:=$(shell mktemp) -TEMP2:=$(shell mktemp) - -GPU?=SANDYBRIDGE -DEFINES+=-DGEN_ASM -D$(GPU) -I. -I../..//lib - -all: sr - -sr.c: sr.g4a eviction_macro evict.h - $(PRECPP) $^ > $(TEMP) - $(CPP) $(CPP_FLAGS) $(DEFINES) -o $(TEMP2) $(TEMP) - $(GEN4ASM) $(GEN4ASM_FLAGS) $(TEMP2) -o $@ - -sr : sr.o - $(OBJCOPY) -O binary -K gen_eu_bytes $^ $@ - -# Test files are useful for development. The system routine kernel is very -# simple and doesn't depend on any external communication to run. -test.c: test.g4a - $(PRECPP) $^ > $(TEMP) - $(CPP) $(CPP_FLAGS) $(DEFINES) -o $(TEMP2) $(TEMP) - $(GEN4ASM) $(GEN4ASM_FLAGS) $(TEMP2) -o $@ - -test : test.o - $(OBJCOPY) -O binary -K gen_eu_bytes $^ $@ - -helper: sr.g4a eviction_macro - $(PRECPP) $^ > help - $(CPP) $(CPP_FLAGS) $(DEFINES) -o help2 help - $(GEN4ASM) $(GEN4ASM_FLAGS) help2 -o $@ - -eviction_macro : - -evict.h : eviction_macro - $(shell ./eviction_macro >| evict.h) - -.PHONY : clean -clean : - $(RM) *.o sr.c sr test.c test evict.h eviction_macro - -.PHONY : clean -distclean: clean - $(RM) help* GNUmakefile - -maintainer-clean: clean - -EMPTY_AUTOMAKE_TARGETS = install install-data install-exec uninstall \ - install-dvi install-html install-info install-ps \ - install-pdf installdirs check installcheck \ - mostlyclean dvi pdf ps info html tags ctags \ - distdir -.PHONY: $(EMPTY_AUTOMAKE_TARGETS) -$(EMPTY_AUTOMAKE_TARGETS): diff --git a/debugger/system_routine/Makefile.am b/debugger/system_routine/Makefile.am new file mode 100644 index 00000000..2576e2aa --- /dev/null +++ b/debugger/system_routine/Makefile.am @@ -0,0 +1,42 @@ + +noinst_PROGRAMS = eviction_macro sr tiny +nodist_sr_SOURCES = sr.c +nodist_tiny_SOURCES = tiny.c + +GEN4ASM_FLAGS = -g6 -a -b +ASM_CPPFLAGS = \ + -x assembler-with-cpp \ + -P -DGEN_ASM -DSANDYBRIDGE \ + -I$(top_srcdir)/lib \ + -I$(builddir) + +evict.h : eviction_macro + $(builddir)/eviction_macro > evict.h + +sr.cpp : sr.g4a + $(srcdir)/pre_cpp.py $(srcdir)/sr.g4a > $@.tmp && mv $@.tmp $@ +sr.asm : sr.cpp evict.h + $(CPP) $(ASM_CPPFLAGS) -o $@ sr.cpp +sr.c: sr.asm + $(GEN4ASM) $(GEN4ASM_FLAGS) sr.asm -o $@ +sr.o : sr.c + $(CC) -c -o $@ sr.c +sr : sr.o + $(OBJCOPY) -O binary -K gen_eu_bytes sr.o $@ + +# Test.g4a is the simplest possible system routine we can run on the GPU +# without actually hanging the system. The system routine kernel is very +# simple and doesn't depend on any external communication to run. +tiny.cpp : test.g4a + $(srcdir)/pre_cpp.py $(srcdir)/test.g4a > $@.tmp && mv $@.tmp $@ +tiny.asm : tiny.cpp + $(CPP) $(ASM_CPPFLAGS) -o $@ tiny.cpp +tiny.c: tiny.asm + $(GEN4ASM) $(GEN4ASM_FLAGS) tiny.asm -o $@ +tiny.o : tiny.c + $(CC) -c -o $@ tiny.c +tiny : tiny.o + $(OBJCOPY) -O binary -K gen_eu_bytes tiny.o $@ + +CLEANFILES = evict.h sr.cpp sr.asm sr.c tiny.cpp tiny.asm tiny.c +EXTRA_DIST = pre_cpp.py sr.g4a test.g4a |