338 lines
6.1 KiB
Bash
338 lines
6.1 KiB
Bash
|
#!/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_ac() {
|
||
|
src_dir src/mesa/array_cache
|
||
|
dst_dir mesa/array_cache
|
||
|
|
||
|
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_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_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_ac
|
||
|
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_x86
|
||
|
symlink_mesa_x8664
|
||
|
}
|
||
|
|
||
|
symlink_glx() {
|
||
|
# this is... unpleasant
|
||
|
src_dir src/glx/x11
|
||
|
dst_dir glx
|
||
|
|
||
|
action indirect_size.h
|
||
|
|
||
|
src_dir src/mesa/drivers/dri/common
|
||
|
|
||
|
action glcontextmodes.c
|
||
|
action glcontextmodes.h
|
||
|
|
||
|
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.sh src-dir dst-dir
|
||
|
echo src-dir: the xc directory of the monolithic source tree
|
||
|
echo dst-dir: the modular source tree containing proto, app, lib, ...
|
||
|
}
|
||
|
|
||
|
# 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
|