summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile.am8
-rw-r--r--configure.ac53
-rw-r--r--debugger/Makefile.am27
-rw-r--r--debugger/system_routine/.gitignore12
-rw-r--r--debugger/system_routine/GNUmakefile.in3
-rw-r--r--debugger/system_routine/Makefile84
-rw-r--r--debugger/system_routine/Makefile.am42
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