From 464fcd0dd84cf4c705b992a087cdcb8b403eb8ef Mon Sep 17 00:00:00 2001 From: Brian Paul Date: Thu, 19 Oct 2006 20:09:05 +0000 Subject: New bin/minstall script - a minimal replacement for 'install'. Correctly handles symlinks so we can get rid of the COPY_LIBS stuff. --- bin/minstall | 88 +++++++++++++++++++++++++++++++++++++++++++++++++ configs/aix | 1 - configs/default | 6 ++-- configs/freebsd | 3 -- src/glu/Makefile | 2 +- src/glut/fbdev/Makefile | 2 +- src/glut/glx/Makefile | 2 +- src/glw/Makefile | 2 +- src/mesa/Makefile | 4 +-- 9 files changed, 97 insertions(+), 13 deletions(-) create mode 100755 bin/minstall diff --git a/bin/minstall b/bin/minstall new file mode 100755 index 00000000000..9795263f9f1 --- /dev/null +++ b/bin/minstall @@ -0,0 +1,88 @@ +#!/bin/sh + + +# A minimal replacement for 'install' that supports installing symbolic links. +# Only a limited number of options are supported: +# -d dir Create a directory +# -m mode Sets a file's mode when installing + + +# If these commands aren't portable, we'll need some "if (arch)" type stuff +SYMLINK="ln -s" +MKDIR="mkdir -p" +RM="rm -f" + +MODE="" + +if [ "$1" = "-d" ] ; then + # make a directory path + $MKDIR "$2" + exit 0 +fi + +if [ "$1" = "-m" ] ; then + # set file mode + MODE=$2 + shift 2 +fi + +# install file(s) into destination +if [ $# -ge 2 ] ; then + + # Last cmd line arg is the dest dir + for FILE in $@ ; do + DEST="$FILE" + done + + # Loop over args, moving them to DEST directory + I=1 + for FILE in $@ ; do + if [ $I = $# ] ; then + # stop, don't want to install $DEST into $DEST + exit 0 + fi + + # determine file's type + if [ -h "$FILE" ] ; then + #echo $FILE is a symlink + # Unfortunately, cp -d isn't universal so we have to + # use a work-around. + + # Use ls -l to find the target that the link points to + LL=`ls -l "$FILE"` + for L in $LL ; do + TARGET=$L + done + #echo $FILE is a symlink pointing to $TARGET + + FILE=`basename "$FILE"` + # Go to $DEST and make the link + PWDSAVE="$PWD" + cd "$DEST" # pushd + $RM "$FILE" + $SYMLINK "$TARGET" "$FILE" + cd "$PWDSAVE" # popd + + elif [ -f "$FILE" ] ; then + #echo "$FILE" is a regular file + cp "$FILE" "$DEST" + if [ $MODE ] ; then + FILE=`basename "$FILE"` + chmod $MODE "$DEST/$FILE" + fi + else + echo "Unknown type of argument: " "$FILE" + exit 1 + fi + + I=`expr $I + 1` + done + + exit 0 +fi + +# If we get here, we didn't find anything to do +echo "Usage:" +echo " install -d dir Create named directory" +echo " install [-m mode] file [...] dest Install files in destination" + diff --git a/configs/aix b/configs/aix index 313d4c4fdb3..ebbf5837455 100644 --- a/configs/aix +++ b/configs/aix @@ -13,7 +13,6 @@ CXXFLAGS = -O -DAIXV3 -DPTHREADS # Misc tools and flags MKLIB_OPTIONS = -COPY_LIBS = cp -f -h # Library names (actual file names) GL_LIB_NAME = libGL.a diff --git a/configs/default b/configs/default index 8431fff0b8c..aa6cef9e3cc 100644 --- a/configs/default +++ b/configs/default @@ -27,8 +27,7 @@ MKLIB_OPTIONS = MKDEP = makedepend MKDEP_OPTIONS = -fdepend MAKE = make -INSTALL = install -COPY_LIBS = cp -f -d +INSTALL = $(TOP)/bin/minstall # Python and flags (generally only needed by the developers) PYTHON2 = python @@ -79,7 +78,8 @@ APP_LIB_DEPS = -L$(TOP)/$(LIB_DIR) -l$(GLUT_LIB) -l$(GLU_LIB) -l$(GL_LIB) -lm # Installation directories (for make install) -INSTALL_DIR = /usr/local +#INSTALL_DIR = /usr/local +INSTALL_DIR = /tmp/mesa2 DRI_DRIVER_INSTALL_DIR = /usr/X11R6/lib/modules/dri # Where libGL will look for DRI hardware drivers diff --git a/configs/freebsd b/configs/freebsd index 38806ab946d..db7dd3b78a0 100644 --- a/configs/freebsd +++ b/configs/freebsd @@ -9,9 +9,6 @@ CC = cc CXX = c++ MAKE = gmake -# cp -d not supported on FreeBSD (see bug 4435) -COPY_LIBS = cp -f - OPT_FLAGS = -O2 PIC_FLAGS = -fPIC diff --git a/src/glu/Makefile b/src/glu/Makefile index ca9ad39442c..5ddc50946aa 100644 --- a/src/glu/Makefile +++ b/src/glu/Makefile @@ -15,7 +15,7 @@ default: $(TOP)/configs/current install: $(INSTALL) -d $(INSTALL_DIR)/$(LIB_DIR) - $(COPY_LIBS) $(TOP)/$(LIB_DIR)/libGLU.* $(INSTALL_DIR)/$(LIB_DIR) + $(INSTALL) $(TOP)/$(LIB_DIR)/libGLU.* $(INSTALL_DIR)/$(LIB_DIR) clean: @for dir in $(SUBDIRS) ; do \ diff --git a/src/glut/fbdev/Makefile b/src/glut/fbdev/Makefile index 11d95665adb..254ff8c098f 100644 --- a/src/glut/fbdev/Makefile +++ b/src/glut/fbdev/Makefile @@ -72,7 +72,7 @@ install: $(INSTALL) -d $(INSTALL_DIR)/include/GL $(INSTALL) -d $(INSTALL_DIR)/$(LIB_DIR) $(INSTALL) -m 644 $(TOP)/include/GL/glut.h $(INSTALL_DIR)/include/GL - $(COPY_LIBS) $(TOP)/$(LIB_DIR)/libglut* $(INSTALL_DIR)/$(LIB_DIR) + $(INSTALL) $(TOP)/$(LIB_DIR)/libglut* $(INSTALL_DIR)/$(LIB_DIR) # Run 'make -f Makefile.solo dep' to update the dependencies if you change # what's included by any source file. diff --git a/src/glut/glx/Makefile b/src/glut/glx/Makefile index 6fac92fa0cb..7e1d56b3278 100644 --- a/src/glut/glx/Makefile +++ b/src/glut/glx/Makefile @@ -100,7 +100,7 @@ install: $(INSTALL) -d $(INSTALL_DIR)/include/GL $(INSTALL) -d $(INSTALL_DIR)/$(LIB_DIR) $(INSTALL) -m 644 $(TOP)/include/GL/glut.h $(INSTALL_DIR)/include/GL - $(COPY_LIBS) $(TOP)/$(LIB_DIR)/libglut* $(INSTALL_DIR)/$(LIB_DIR) + $(INSTALL) $(TOP)/$(LIB_DIR)/libglut* $(INSTALL_DIR)/$(LIB_DIR) clean: diff --git a/src/glw/Makefile b/src/glw/Makefile index 356351a1ced..5228cbbb721 100644 --- a/src/glw/Makefile +++ b/src/glw/Makefile @@ -29,7 +29,7 @@ install: $(INSTALL) -d $(INSTALL_DIR)/include/GL $(INSTALL) -d $(INSTALL_DIR)/$(LIB_DIR) $(INSTALL) -m 644 *.h $(INSTALL_DIR)/include/GL - $(COPY_LIBS) $(TOP)/$(LIB_DIR)/libGLw.* $(INSTALL_DIR)/$(LIB_DIR) + $(INSTALL) $(TOP)/$(LIB_DIR)/libGLw.* $(INSTALL_DIR)/$(LIB_DIR) clean: -rm depend depend.bak diff --git a/src/mesa/Makefile b/src/mesa/Makefile index e1046bb8ad7..3f65ecf5cc9 100644 --- a/src/mesa/Makefile +++ b/src/mesa/Makefile @@ -155,10 +155,10 @@ install: default $(INSTALL) -d $(INSTALL_DIR)/$(LIB_DIR) $(INSTALL) -m 644 $(TOP)/include/GL/*.h $(INSTALL_DIR)/include/GL @if [ -e $(TOP)/$(LIB_DIR)/$(GL_LIB_NAME) ]; then \ - $(COPY_LIBS) $(TOP)/$(LIB_DIR)/libGL* $(INSTALL_DIR)/$(LIB_DIR); \ + $(INSTALL) $(TOP)/$(LIB_DIR)/libGL* $(INSTALL_DIR)/$(LIB_DIR); \ fi @if [ -e $(TOP)/$(LIB_DIR)/$(OSMESA_LIB_NAME) ]; then \ - $(COPY_LIBS) $(TOP)/$(LIB_DIR)/libOSMesa* $(INSTALL_DIR)/$(LIB_DIR); \ + $(INSTALL) $(TOP)/$(LIB_DIR)/libOSMesa* $(INSTALL_DIR)/$(LIB_DIR); \ fi @if [ "${DRIVER_DIRS}" = "dri" ] ; then \ cd drivers/dri ; $(MAKE) install ; \ -- cgit v1.2.3