45d00433e7
With recent mesa HEAD, the glapi sources used only in the xserver glx module are carried in the mesa tree. Previously, these were generated separately and committed to the xserver tree. The build is changed to symlink these files like the other mesa sources. This reduces the chance for mismatches between mesa's glX API and the xserver's glX API.
345 lines
6.3 KiB
Bash
Executable File
345 lines
6.3 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
#
|
|
# A script that symlinks source files from Mesa to modular
|
|
#
|
|
# Author: Soren Sandmann (sandmann@redhat.com) (original)
|
|
# adapted for Mesa by Adam Jackson (ajax@nwnk.net)
|
|
|
|
#
|
|
# Things we would like to do
|
|
#
|
|
# - Check that all the relevant files exist
|
|
# - AUTHORS, autogen.sh, configure.ac, ...
|
|
# - Check that we have actually linked everything
|
|
# - if a file doesn't need to be linked, then it needs
|
|
# to be listed as "not-linked"
|
|
# - Compute diffs between all the files (shouldn't be necessary)
|
|
# - possibly check that files are listet in Makefile.am's
|
|
# - Clean target directory of irrelevant files
|
|
#
|
|
|
|
check_destinations () {
|
|
# don't do anything - we are relying on the side
|
|
# effect of dst_dir
|
|
true
|
|
}
|
|
|
|
check_exist() {
|
|
# Check whether $1 exists
|
|
|
|
if [ ! -e $1 ] ; then
|
|
error "$1 not found"
|
|
fi
|
|
}
|
|
|
|
delete_existing() {
|
|
# Delete $2
|
|
|
|
rm -f $2
|
|
}
|
|
|
|
link_files() {
|
|
# Link $1 to $2
|
|
|
|
if [ ! -e $2 ] ; then
|
|
ln -s $1 $2
|
|
fi
|
|
}
|
|
|
|
main() {
|
|
check_args $1 $2
|
|
|
|
run check_destinations "Creating destination directories"
|
|
run check_exist "Checking that the source files exist"
|
|
run delete_existing "Deleting existing files"
|
|
run link_files "Linking files"
|
|
}
|
|
|
|
## actual symlinking
|
|
|
|
symlink_mesa_glapi() {
|
|
src_dir src/mesa/glapi
|
|
dst_dir mesa/glapi
|
|
|
|
for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
|
|
action `basename $src`
|
|
done
|
|
}
|
|
|
|
symlink_mesa_main() {
|
|
src_dir src/mesa/main
|
|
dst_dir mesa/main
|
|
|
|
for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
|
|
action `basename $src`
|
|
done
|
|
}
|
|
|
|
symlink_mesa_math() {
|
|
src_dir src/mesa/math
|
|
dst_dir mesa/math
|
|
|
|
for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
|
|
action `basename $src`
|
|
done
|
|
}
|
|
|
|
symlink_mesa_swrast() {
|
|
src_dir src/mesa/swrast
|
|
dst_dir mesa/swrast
|
|
|
|
for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
|
|
action `basename $src`
|
|
done
|
|
}
|
|
|
|
symlink_mesa_ss() {
|
|
src_dir src/mesa/swrast_setup
|
|
dst_dir mesa/swrast_setup
|
|
|
|
for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
|
|
action `basename $src`
|
|
done
|
|
}
|
|
|
|
symlink_mesa_tnl() {
|
|
src_dir src/mesa/tnl
|
|
dst_dir mesa/tnl
|
|
|
|
for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
|
|
action `basename $src`
|
|
done
|
|
}
|
|
|
|
symlink_mesa_shader() {
|
|
src_dir src/mesa/shader
|
|
dst_dir mesa/shader
|
|
|
|
for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
|
|
action `basename $src`
|
|
done
|
|
}
|
|
|
|
symlink_mesa_shader_grammar() {
|
|
src_dir src/mesa/shader/grammar
|
|
dst_dir mesa/shader/grammar
|
|
|
|
for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
|
|
action `basename $src`
|
|
done
|
|
}
|
|
|
|
symlink_mesa_shader_slang() {
|
|
src_dir src/mesa/shader/slang
|
|
dst_dir mesa/shader/slang
|
|
|
|
for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
|
|
action `basename $src`
|
|
done
|
|
}
|
|
|
|
symlink_mesa_shader_slang_library() {
|
|
src_dir src/mesa/shader/slang/library
|
|
dst_dir mesa/shader/slang/library
|
|
|
|
for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
|
|
action `basename $src`
|
|
done
|
|
}
|
|
|
|
symlink_mesa_vbo() {
|
|
src_dir src/mesa/vbo
|
|
dst_dir mesa/vbo
|
|
|
|
for src in $REAL_SRC_DIR/*.c $REAL_SRC_DIR/*.h; do
|
|
action `basename $src`
|
|
done
|
|
}
|
|
|
|
symlink_mesa_x() {
|
|
src_dir src/mesa/drivers/x11
|
|
dst_dir mesa/X
|
|
|
|
# action glxapi.h
|
|
action glxheader.h
|
|
# action realglx.h
|
|
# action xfonts.h
|
|
action xm_api.c
|
|
action xm_buffer.c
|
|
action xm_dd.c
|
|
action xm_image.c
|
|
action xm_image.h
|
|
action xm_line.c
|
|
action xm_span.c
|
|
action xm_tri.c
|
|
action xmesaP.h
|
|
|
|
# another hack
|
|
src_dir src/mesa/drivers/common
|
|
dst_dir mesa/X/drivers/common
|
|
action driverfuncs.c
|
|
action driverfuncs.h
|
|
}
|
|
|
|
symlink_mesa_ppc() {
|
|
src_dir src/mesa/ppc
|
|
dst_dir mesa/ppc
|
|
}
|
|
|
|
symlink_mesa_sparc() {
|
|
src_dir src/mesa/sparc
|
|
dst_dir mesa/sparc
|
|
}
|
|
|
|
symlink_mesa_x86() {
|
|
src_dir src/mesa/x86
|
|
dst_dir mesa/x86
|
|
}
|
|
|
|
symlink_mesa_x8664() {
|
|
src_dir src/mesa/x86-64
|
|
dst_dir mesa/x86-64
|
|
}
|
|
|
|
symlink_mesa() {
|
|
symlink_mesa_main
|
|
symlink_mesa_math
|
|
symlink_mesa_swrast
|
|
symlink_mesa_ss
|
|
symlink_mesa_tnl
|
|
symlink_mesa_shader
|
|
symlink_mesa_shader_grammar
|
|
symlink_mesa_shader_slang
|
|
symlink_mesa_shader_slang_library
|
|
symlink_mesa_x
|
|
symlink_mesa_glapi
|
|
symlink_mesa_ppc
|
|
symlink_mesa_sparc
|
|
symlink_mesa_vbo
|
|
symlink_mesa_x86
|
|
symlink_mesa_x8664
|
|
}
|
|
|
|
symlink_glx() {
|
|
# this is... unpleasant
|
|
src_dir src/glx/x11
|
|
dst_dir glx
|
|
|
|
action indirect_size.h
|
|
action glcontextmodes.c
|
|
action glcontextmodes.h
|
|
action indirect_dispatch.c
|
|
action indirect_dispatch.h
|
|
action indirect_dispatch_swap.c
|
|
action indirect_reqsize.c
|
|
action indirect_reqsize.h
|
|
action indirect_size_get.c
|
|
action indirect_size_get.h
|
|
action indirect_table.c
|
|
|
|
src_dir src/mesa/glapi
|
|
|
|
action glapi.c
|
|
action glthread.c
|
|
}
|
|
|
|
#########
|
|
#
|
|
# Helper functions
|
|
#
|
|
#########
|
|
|
|
error() {
|
|
echo
|
|
echo \ \ \ error:\ \ \ $1
|
|
exit 1
|
|
}
|
|
|
|
# printing out what's going on
|
|
run_module() {
|
|
# $1 module
|
|
# $2 explanation
|
|
echo -n $EXPLANATION for $1 module ...\
|
|
symlink_$1
|
|
echo DONE
|
|
}
|
|
|
|
run() {
|
|
# $1 what to do
|
|
# $2 explanation
|
|
|
|
ACTION=$1 EXPLANATION=$2 run_module mesa
|
|
ACTION=$1 EXPLANATION=$2 run_module glx
|
|
}
|
|
|
|
src_dir() {
|
|
REAL_SRC_DIR=$SRC_DIR/$1
|
|
if [ ! -d $REAL_SRC_DIR ] ; then
|
|
error "Source directory $REAL_SRC_DIR does not exist"
|
|
fi
|
|
}
|
|
|
|
dst_dir() {
|
|
REAL_DST_DIR=$DST_DIR/$1
|
|
if [ ! -d $REAL_DST_DIR ] ; then
|
|
mkdir -p $REAL_DST_DIR
|
|
fi
|
|
}
|
|
|
|
action() {
|
|
if [ -z $2 ] ; then
|
|
$ACTION $REAL_SRC_DIR/$1 $REAL_DST_DIR/$1
|
|
else
|
|
$ACTION $REAL_SRC_DIR/$1 $REAL_DST_DIR/$2
|
|
fi
|
|
}
|
|
|
|
usage() {
|
|
echo symlink-mesa.sh src-dir dst-dir
|
|
echo src-dir: the Mesa source directory
|
|
echo dst-dir: the GL subdirectory of the Xserver modular tree
|
|
}
|
|
|
|
# Check commandline args
|
|
check_args() {
|
|
if [ -z $1 ] ; then
|
|
echo Missing source dir
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
if [ -z $2 ] ; then
|
|
echo Missing destination dir
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d $1 ] ; then
|
|
echo $1 is not a dir
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d $2 ] ; then
|
|
echo $2 is not a dir
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
if [ $1 = $2 ] ; then
|
|
echo source and destination can\'t be the same
|
|
usage
|
|
exit 1
|
|
fi
|
|
|
|
D=`dirname "$relpath"`
|
|
B=`basename "$relpath"`
|
|
abspath="`cd \"$D\" 2>/dev/null && pwd || echo \"$D\"`/$B"
|
|
|
|
SRC_DIR=`( cd $1 ; pwd )`
|
|
DST_DIR=`(cd $2 ; pwd )`
|
|
}
|
|
|
|
main $1 $2
|