Fix mistake in 349845f7b
[mesa.git] / Makefile
index 411130bc272a91ecee2dd70a684e1a7e0f7e42e9..1fa369a96c7cd9d3212606fb513c068c917c0876 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -2,10 +2,13 @@
 
 TOP = .
 
-SUBDIRS = src progs
+SUBDIRS = src
 
 
+# The git command below generates an empty string when we're not
+# building in a GIT tree (i.e., building from a release tarball).
 default: $(TOP)/configs/current
+       @$(TOP)/bin/extract_git_sha1
        @for dir in $(SUBDIRS) ; do \
                if [ -d $$dir ] ; then \
                        (cd $$dir && $(MAKE)) || exit 1 ; \
@@ -18,6 +21,10 @@ all: default
 doxygen:
        cd doxygen && $(MAKE)
 
+check:
+       cd src/glsl/tests/ && ./optimization-test
+       make -C tests check
+
 clean:
        -@touch $(TOP)/configs/current
        -@for dir in $(SUBDIRS) ; do \
@@ -48,7 +55,7 @@ install:
        done
 
 
-.PHONY: default doxygen clean realclean distclean install
+.PHONY: default doxygen clean realclean distclean install check
 
 # If there's no current configuration file
 $(TOP)/configs/current:
@@ -75,7 +82,6 @@ aix-static \
 autoconf \
 bluegene-osmesa \
 bluegene-xlc-osmesa \
-beos \
 catamount-osmesa-pgi \
 darwin \
 darwin-fat-32bit \
@@ -106,8 +112,6 @@ linux \
 linux-i965 \
 linux-alpha \
 linux-alpha-static \
-linux-cell \
-linux-cell-debug \
 linux-debug \
 linux-dri \
 linux-dri-debug \
@@ -180,305 +184,42 @@ ultrix-gcc:
 
 # Rules for making release tarballs
 
-VERSION=7.9-devel
-DIRECTORY = Mesa-$(VERSION)
-LIB_NAME = MesaLib-$(VERSION)
-DEMO_NAME = MesaDemos-$(VERSION)
-GLUT_NAME = MesaGLUT-$(VERSION)
-
-MAIN_FILES = \
-       $(DIRECTORY)/Makefile*                                          \
-       $(DIRECTORY)/configure                                          \
-       $(DIRECTORY)/configure.ac                                       \
-       $(DIRECTORY)/acinclude.m4                                       \
-       $(DIRECTORY)/aclocal.m4                                         \
-       $(DIRECTORY)/bin/config.guess                                   \
-       $(DIRECTORY)/bin/config.sub                                     \
-       $(DIRECTORY)/bin/install-sh                                     \
-       $(DIRECTORY)/bin/mklib                                          \
-       $(DIRECTORY)/bin/minstall                                       \
-       $(DIRECTORY)/bin/version.mk                                     \
-       $(DIRECTORY)/configs/[a-z]*                                     \
-       $(DIRECTORY)/docs/*.html                                        \
-       $(DIRECTORY)/docs/COPYING                                       \
-       $(DIRECTORY)/docs/README.*                                      \
-       $(DIRECTORY)/docs/RELNOTES*                                     \
-       $(DIRECTORY)/docs/*.spec                                        \
-       $(DIRECTORY)/include/GL/internal/glcore.h                       \
-       $(DIRECTORY)/include/GL/gl.h                                    \
-       $(DIRECTORY)/include/GL/glext.h                                 \
-       $(DIRECTORY)/include/GL/gl_mangle.h                             \
-       $(DIRECTORY)/include/GL/glu.h                                   \
-       $(DIRECTORY)/include/GL/glu_mangle.h                            \
-       $(DIRECTORY)/include/GL/glx.h                                   \
-       $(DIRECTORY)/include/GL/glxext.h                                \
-       $(DIRECTORY)/include/GL/glx_mangle.h                            \
-       $(DIRECTORY)/include/GL/glfbdev.h                               \
-       $(DIRECTORY)/include/GL/mesa_wgl.h                              \
-       $(DIRECTORY)/include/GL/osmesa.h                                \
-       $(DIRECTORY)/include/GL/vms_x_fix.h                             \
-       $(DIRECTORY)/include/GL/wglext.h                                \
-       $(DIRECTORY)/include/GL/wmesa.h                                 \
-       $(DIRECTORY)/include/VG/*.h                                     \
-       $(DIRECTORY)/include/KHR/*.h                                    \
-       $(DIRECTORY)/src/glsl/Makefile                                  \
-       $(DIRECTORY)/src/glsl/Makefile.template                         \
-       $(DIRECTORY)/src/glsl/SConscript                                \
-       $(DIRECTORY)/src/glsl/*/Makefile                                \
-       $(DIRECTORY)/src/glsl/*/*.[ch]                                  \
-       $(DIRECTORY)/src/Makefile                                       \
-       $(DIRECTORY)/src/mesa/Makefile*                                 \
-       $(DIRECTORY)/src/mesa/sources.mak                               \
-       $(DIRECTORY)/src/mesa/descrip.mms                               \
-       $(DIRECTORY)/src/mesa/gl.pc.in                                  \
-       $(DIRECTORY)/src/mesa/osmesa.pc.in                              \
-       $(DIRECTORY)/src/mesa/depend                                    \
-       $(DIRECTORY)/src/mesa/main/*.[chS]                              \
-       $(DIRECTORY)/src/mesa/main/descrip.mms                          \
-       $(DIRECTORY)/src/mesa/glapi/*.[chS]                             \
-       $(DIRECTORY)/src/mesa/math/*.[ch]                               \
-       $(DIRECTORY)/src/mesa/math/descrip.mms                          \
-       $(DIRECTORY)/src/mesa/shader/*.[chly]                           \
-       $(DIRECTORY)/src/mesa/shader/Makefile                           \
-       $(DIRECTORY)/src/mesa/shader/descrip.mms                        \
-       $(DIRECTORY)/src/mesa/shader/slang/*.[ch]                       \
-       $(DIRECTORY)/src/mesa/shader/slang/descrip.mms                  \
-       $(DIRECTORY)/src/mesa/shader/slang/library/*.gc                 \
-       $(DIRECTORY)/src/mesa/shader/slang/library/Makefile             \
-       $(DIRECTORY)/src/mesa/swrast/*.[ch]                             \
-       $(DIRECTORY)/src/mesa/swrast/descrip.mms                        \
-       $(DIRECTORY)/src/mesa/swrast_setup/*.[ch]                       \
-       $(DIRECTORY)/src/mesa/swrast_setup/descrip.mms                  \
-       $(DIRECTORY)/src/mesa/vbo/*.[chS]                               \
-       $(DIRECTORY)/src/mesa/vbo/descrip.mms                           \
-       $(DIRECTORY)/src/mesa/tnl/*.[chS]                               \
-       $(DIRECTORY)/src/mesa/tnl/descrip.mms                           \
-       $(DIRECTORY)/src/mesa/tnl_dd/*.[ch]                             \
-       $(DIRECTORY)/src/mesa/tnl_dd/imm/*.[ch]                         \
-       $(DIRECTORY)/src/mesa/tnl_dd/imm/NOTES.imm                      \
-       $(DIRECTORY)/src/mesa/drivers/Makefile                          \
-       $(DIRECTORY)/src/mesa/drivers/beos/*.cpp                        \
-       $(DIRECTORY)/src/mesa/drivers/beos/Makefile                     \
-       $(DIRECTORY)/src/mesa/drivers/common/*.[ch]                     \
-       $(DIRECTORY)/src/mesa/drivers/common/descrip.mms                \
-       $(DIRECTORY)/src/mesa/drivers/fbdev/Makefile                    \
-       $(DIRECTORY)/src/mesa/drivers/fbdev/glfbdev.c                   \
-       $(DIRECTORY)/src/mesa/drivers/osmesa/Makefile                   \
-       $(DIRECTORY)/src/mesa/drivers/osmesa/Makefile.win               \
-       $(DIRECTORY)/src/mesa/drivers/osmesa/descrip.mms                \
-       $(DIRECTORY)/src/mesa/drivers/osmesa/osmesa.def                 \
-       $(DIRECTORY)/src/mesa/drivers/osmesa/*.[ch]                     \
-       $(DIRECTORY)/src/mesa/drivers/windows/*/*.[ch]                  \
-       $(DIRECTORY)/src/mesa/drivers/windows/*/*.def                   \
-       $(DIRECTORY)/src/mesa/drivers/x11/Makefile                      \
-       $(DIRECTORY)/src/mesa/drivers/x11/descrip.mms                   \
-       $(DIRECTORY)/src/mesa/drivers/x11/*.[ch]                        \
-       $(DIRECTORY)/src/mesa/drivers/glslcompiler/Makefile             \
-       $(DIRECTORY)/src/mesa/drivers/glslcompiler/glslcompiler.c       \
-       $(DIRECTORY)/src/mesa/ppc/*.[ch]                                \
-       $(DIRECTORY)/src/mesa/sparc/*.[chS]                             \
-       $(DIRECTORY)/src/mesa/x86/Makefile                              \
-       $(DIRECTORY)/src/mesa/x86/*.[ch]                                \
-       $(DIRECTORY)/src/mesa/x86/*.S                                   \
-       $(DIRECTORY)/src/mesa/x86/rtasm/*.[ch]                          \
-       $(DIRECTORY)/src/mesa/x86-64/*.[chS]                            \
-       $(DIRECTORY)/src/mesa/x86-64/Makefile                           \
-       $(DIRECTORY)/progs/Makefile                                     \
-       $(DIRECTORY)/progs/util/README                                  \
-       $(DIRECTORY)/progs/util/*.[ch]                                  \
-       $(DIRECTORY)/progs/util/sampleMakefile                          \
-       $(DIRECTORY)/windows/VC8/
-
-ES_FILES = \
-       $(DIRECTORY)/include/GLES/*.h                                   \
-       $(DIRECTORY)/include/GLES2/*.h                                  \
-       $(DIRECTORY)/src/mesa/glapi/gen/*.xml                           \
-       $(DIRECTORY)/src/mesa/glapi/gen/*.py                            \
-       $(DIRECTORY)/src/mesa/glapi/gen/*.dtd                           \
-       $(DIRECTORY)/src/mesa/es/glapi/Makefile                         \
-       $(DIRECTORY)/src/mesa/es/glapi/*.xml                            \
-       $(DIRECTORY)/src/mesa/es/glapi/*.py                             \
-       $(DIRECTORY)/src/mesa/es/state_tracker/*.[ch]                   \
-       $(DIRECTORY)/src/mesa/es/main/*.[ch]                            \
-       $(DIRECTORY)/src/mesa/es/main/*.xml                             \
-       $(DIRECTORY)/src/mesa/es/main/*.py                              \
-       $(DIRECTORY)/src/mesa/es/main/*.dtd                             \
-       $(DIRECTORY)/src/mesa/es/Makefile                               \
-       $(DIRECTORY)/src/mesa/es/sources.mak                            \
-
-EGL_FILES = \
-       $(DIRECTORY)/include/EGL/*.h                                    \
-       $(DIRECTORY)/src/egl/Makefile                                   \
-       $(DIRECTORY)/src/egl/*/Makefile                                 \
-       $(DIRECTORY)/src/egl/*/Makefile.template                        \
-       $(DIRECTORY)/src/egl/*/*.[ch]                                   \
-       $(DIRECTORY)/src/egl/*/*/Makefile                               \
-       $(DIRECTORY)/src/egl/*/*/*.[ch]                                 \
-
-GALLIUM_FILES = \
-       $(DIRECTORY)/src/mesa/state_tracker/*[ch]                       \
-       $(DIRECTORY)/src/gallium/Makefile                               \
-       $(DIRECTORY)/src/gallium/Makefile.template                      \
-       $(DIRECTORY)/src/gallium/SConscript                             \
-       $(DIRECTORY)/src/gallium/targets/Makefile.dri                   \
-       $(DIRECTORY)/src/gallium/targets/Makefile.egl                   \
-       $(DIRECTORY)/src/gallium/*/Makefile                             \
-       $(DIRECTORY)/src/gallium/*/SConscript                           \
-       $(DIRECTORY)/src/gallium/*/*/Makefile                           \
-       $(DIRECTORY)/src/gallium/*/*/Makefile.egl                       \
-       $(DIRECTORY)/src/gallium/*/*/Makefile.template                  \
-       $(DIRECTORY)/src/gallium/*/*/SConscript                         \
-       $(DIRECTORY)/src/gallium/*/*/*.[ch]                             \
-       $(DIRECTORY)/src/gallium/*/*/*.py                               \
-       $(DIRECTORY)/src/gallium/*/*/*.csv                              \
-       $(DIRECTORY)/src/gallium/*/*/*/Makefile                         \
-       $(DIRECTORY)/src/gallium/*/*/*/SConscript                       \
-       $(DIRECTORY)/src/gallium/*/*/*/*.[ch]                           \
-       $(DIRECTORY)/src/gallium/*/*/*/*.py                             \
-       $(DIRECTORY)/src/gallium/*/*/*/*/Makefile                       \
-       $(DIRECTORY)/src/gallium/*/*/*/*/*.[ch]                         \
-
-
-DRI_FILES = \
-       $(DIRECTORY)/include/GL/internal/dri_interface.h                \
-       $(DIRECTORY)/include/GL/internal/glcore.h                       \
-       $(DIRECTORY)/include/GL/internal/sarea.h                        \
-       $(DIRECTORY)/src/glx/Makefile                                   \
-       $(DIRECTORY)/src/glx/Makefile                                   \
-       $(DIRECTORY)/src/glx/*.[ch]                                     \
-       $(DIRECTORY)/src/mesa/drivers/dri/Makefile                      \
-       $(DIRECTORY)/src/mesa/drivers/dri/Makefile.template             \
-       $(DIRECTORY)/src/mesa/drivers/dri/dri.pc.in                     \
-       $(DIRECTORY)/src/mesa/drivers/dri/common/xmlpool/*.[ch]         \
-       $(DIRECTORY)/src/mesa/drivers/dri/common/xmlpool/*.po           \
-       $(DIRECTORY)/src/mesa/drivers/dri/*/*.[chS]                     \
-       $(DIRECTORY)/src/mesa/drivers/dri/*/*/*.[chS]                   \
-       $(DIRECTORY)/src/mesa/drivers/dri/*/Makefile                    \
-       $(DIRECTORY)/src/mesa/drivers/dri/*/*/Makefile                  \
-       $(DIRECTORY)/src/mesa/drivers/dri/*/Doxyfile                    \
-       $(DIRECTORY)/src/mesa/drivers/dri/*/server/*.[ch]
-
-SGI_GLU_FILES = \
-       $(DIRECTORY)/src/glu/Makefile                                   \
-       $(DIRECTORY)/src/glu/glu.pc.in                                  \
-       $(DIRECTORY)/src/glu/sgi/Makefile                               \
-       $(DIRECTORY)/src/glu/sgi/Makefile.mgw                           \
-       $(DIRECTORY)/src/glu/sgi/Makefile.win                           \
-       $(DIRECTORY)/src/glu/sgi/glu.def                                \
-       $(DIRECTORY)/src/glu/sgi/dummy.cc                               \
-       $(DIRECTORY)/src/glu/sgi/glu.exports                            \
-       $(DIRECTORY)/src/glu/sgi/glu.exports.darwin                     \
-       $(DIRECTORY)/src/glu/sgi/mesaglu.opt                            \
-       $(DIRECTORY)/src/glu/sgi/include/gluos.h                        \
-       $(DIRECTORY)/src/glu/sgi/libnurbs/interface/*.h                 \
-       $(DIRECTORY)/src/glu/sgi/libnurbs/interface/*.cc                \
-       $(DIRECTORY)/src/glu/sgi/libnurbs/internals/*.h                 \
-       $(DIRECTORY)/src/glu/sgi/libnurbs/internals/*.cc                \
-       $(DIRECTORY)/src/glu/sgi/libnurbs/nurbtess/*.h                  \
-       $(DIRECTORY)/src/glu/sgi/libnurbs/nurbtess/*.cc                 \
-       $(DIRECTORY)/src/glu/sgi/libtess/README                         \
-       $(DIRECTORY)/src/glu/sgi/libtess/alg-outline                    \
-       $(DIRECTORY)/src/glu/sgi/libtess/*.[ch]                         \
-       $(DIRECTORY)/src/glu/sgi/libutil/*.[ch]
-
-GLW_FILES = \
-       $(DIRECTORY)/src/glw/*.[ch]                     \
-       $(DIRECTORY)/src/glw/Makefile*                  \
-       $(DIRECTORY)/src/glw/README                     \
-       $(DIRECTORY)/src/glw/glw.pc.in                  \
-       $(DIRECTORY)/src/glw/depend
-
-GLEW_FILES = \
-       $(DIRECTORY)/include/GL/glew.h                  \
-       $(DIRECTORY)/include/GL/glxew.h                 \
-       $(DIRECTORY)/include/GL/wglew.h                 \
-       $(DIRECTORY)/src/glew/*.c                       \
-       $(DIRECTORY)/src/glew/Makefile                  \
-       $(DIRECTORY)/src/glew/SConscript                \
-       $(DIRECTORY)/src/glew/LICENSE.txt
-
-DEMO_FILES = \
-       $(GLEW_FILES)                                   \
-       $(DIRECTORY)/progs/beos/*.cpp                   \
-       $(DIRECTORY)/progs/beos/Makefile                \
-       $(DIRECTORY)/progs/images/*.rgb                 \
-       $(DIRECTORY)/progs/images/*.rgba                \
-       $(DIRECTORY)/progs/demos/Makefile*              \
-       $(DIRECTORY)/progs/demos/descrip.mms            \
-       $(DIRECTORY)/progs/demos/*.[ch]                 \
-       $(DIRECTORY)/progs/demos/*.cxx                  \
-       $(DIRECTORY)/progs/demos/*.dat                  \
-       $(DIRECTORY)/progs/demos/README                 \
-       $(DIRECTORY)/progs/egl/eglut/Makefile           \
-       $(DIRECTORY)/progs/egl/eglut/*.[ch]             \
-       $(DIRECTORY)/progs/egl/opengl/Makefile          \
-       $(DIRECTORY)/progs/egl/opengl/*.[ch]            \
-       $(DIRECTORY)/progs/egl/opengles1/Makefile       \
-       $(DIRECTORY)/progs/egl/opengles1/*.[ch]         \
-       $(DIRECTORY)/progs/egl/opengles2/Makefile       \
-       $(DIRECTORY)/progs/egl/opengles2/*.[ch]         \
-       $(DIRECTORY)/progs/egl/openvg/Makefile          \
-       $(DIRECTORY)/progs/egl/openvg/*.[ch]            \
-       $(DIRECTORY)/progs/egl/openvg/*/Makefile        \
-       $(DIRECTORY)/progs/egl/openvg/*/*.[ch]          \
-       $(DIRECTORY)/progs/fbdev/Makefile               \
-       $(DIRECTORY)/progs/fbdev/glfbdevtest.c          \
-       $(DIRECTORY)/progs/objviewer/*.[ch]             \
-       $(DIRECTORY)/progs/objviewer/*.obj              \
-       $(DIRECTORY)/progs/objviewer/*.mtl              \
-       $(DIRECTORY)/progs/objviewer/*.rgb              \
-       $(DIRECTORY)/progs/objviewer/Makefile           \
-       $(DIRECTORY)/progs/objviewer/README.txt         \
-       $(DIRECTORY)/progs/osdemos/Makefile             \
-       $(DIRECTORY)/progs/osdemos/*.c                  \
-       $(DIRECTORY)/progs/xdemos/Makefile*             \
-       $(DIRECTORY)/progs/xdemos/*.[chf]               \
-       $(DIRECTORY)/progs/redbook/Makefile*            \
-       $(DIRECTORY)/progs/redbook/README               \
-       $(DIRECTORY)/progs/redbook/*.[ch]               \
-       $(DIRECTORY)/progs/samples/Makefile*            \
-       $(DIRECTORY)/progs/samples/README               \
-       $(DIRECTORY)/progs/samples/*.c                  \
-       $(DIRECTORY)/progs/glsl/Makefile*               \
-       $(DIRECTORY)/progs/glsl/*.c                     \
-       $(DIRECTORY)/progs/glsl/*.frag                  \
-       $(DIRECTORY)/progs/glsl/*.vert                  \
-       $(DIRECTORY)/progs/glsl/*.shtest
-
-GLUT_FILES = \
-       $(DIRECTORY)/include/GL/glut.h                  \
-       $(DIRECTORY)/include/GL/glutf90.h               \
-       $(DIRECTORY)/src/glut/glx/Makefile*             \
-       $(DIRECTORY)/src/glut/glx/depend                \
-       $(DIRECTORY)/src/glut/glx/glut.pc.in            \
-       $(DIRECTORY)/src/glut/glx/*def                  \
-       $(DIRECTORY)/src/glut/glx/*.[ch]                \
-       $(DIRECTORY)/src/glut/beos/*.[ch]               \
-       $(DIRECTORY)/src/glut/beos/*.cpp                \
-       $(DIRECTORY)/src/glut/beos/Makefile
-
-DEPEND_FILES = \
-       $(TOP)/src/mesa/depend          \
-       $(TOP)/src/glx/depend           \
-       $(TOP)/src/glw/depend           \
-       $(TOP)/src/glut/glx/depend      \
-       $(TOP)/src/glu/sgi/depend
-
-
-LIB_FILES = \
-       $(MAIN_FILES)           \
-       $(ES_FILES)             \
-       $(EGL_FILES)            \
-       $(GALLIUM_FILES)        \
-       $(DRI_FILES)            \
-       $(SGI_GLU_FILES)        \
-       $(GLW_FILES)
-
+PACKAGE_VERSION=8.0-devel
+PACKAGE_DIR = Mesa-$(PACKAGE_VERSION)
+PACKAGE_NAME = MesaLib-$(PACKAGE_VERSION)
+
+EXTRA_FILES = \
+       aclocal.m4                                      \
+       configure                                       \
+       tests/Makefile.in                               \
+       tests/glx/Makefile.in                           \
+       src/glsl/glsl_parser.cpp                        \
+       src/glsl/glsl_parser.h                          \
+       src/glsl/glsl_lexer.cpp                         \
+       src/glsl/glcpp/glcpp-lex.c                      \
+       src/glsl/glcpp/glcpp-parse.c                    \
+       src/glsl/glcpp/glcpp-parse.h                    \
+       src/mesa/program/lex.yy.c                       \
+       src/mesa/program/program_parse.tab.c            \
+       src/mesa/program/program_parse.tab.h
+
+IGNORE_FILES = \
+       -x autogen.sh
+
+
+parsers: configure
+       -@touch $(TOP)/configs/current
+       $(MAKE) -C src/glsl glsl_parser.cpp glsl_parser.h glsl_lexer.cpp
+       $(MAKE) -C src/glsl/glcpp glcpp-lex.c glcpp-parse.c glcpp-parse.h
+       $(MAKE) -C src/mesa program/lex.yy.c program/program_parse.tab.c program/program_parse.tab.h
 
 # Everything for new a Mesa release:
-tarballs: rm_depend configure aclocal.m4 lib_gz demo_gz glut_gz \
-       lib_bz2 demo_bz2 glut_bz2 lib_zip demo_zip glut_zip md5
+ARCHIVES = $(PACKAGE_NAME).tar.gz \
+       $(PACKAGE_NAME).tar.bz2 \
+       $(PACKAGE_NAME).zip \
 
+tarballs: md5
+       rm -f ../$(PACKAGE_DIR) $(PACKAGE_NAME).tar
 
 # Helper for autoconf builds
 ACLOCAL = aclocal
@@ -490,82 +231,33 @@ aclocal.m4: configure.ac acinclude.m4
 configure: configure.ac aclocal.m4 acinclude.m4
        $(AUTOCONF) $(AC_FLAGS)
 
-rm_depend:
-       @for dep in $(DEPEND_FILES) ; do \
-               rm -f $$dep ; \
-               touch $$dep ; \
-       done
+manifest.txt: .git
+       ( \
+               ls -1 $(EXTRA_FILES) ; \
+               git ls-files $(IGNORE_FILES) \
+       ) | sed -e '/^\(.*\/\)\?\./d' -e "s@^@$(PACKAGE_DIR)/@" > $@
 
-rm_config:
-       rm -f configs/current
-       rm -f configs/autoconf
+../$(PACKAGE_DIR):
+       ln -s $(PWD) $@
 
-lib_gz: rm_config
-       cd .. ; \
-       tar -cf $(LIB_NAME).tar $(LIB_FILES) ; \
-       gzip $(LIB_NAME).tar ; \
-       mv $(LIB_NAME).tar.gz $(DIRECTORY)
+$(PACKAGE_NAME).tar: parsers ../$(PACKAGE_DIR) manifest.txt
+       cd .. ; tar -cf $(PACKAGE_DIR)/$(PACKAGE_NAME).tar -T $(PACKAGE_DIR)/manifest.txt
 
-demo_gz:
-       cd .. ; \
-       tar -cf $(DEMO_NAME).tar $(DEMO_FILES) ; \
-       gzip $(DEMO_NAME).tar ; \
-       mv $(DEMO_NAME).tar.gz $(DIRECTORY)
+$(PACKAGE_NAME).tar.gz: $(PACKAGE_NAME).tar ../$(PACKAGE_DIR)
+       gzip --stdout --best $(PACKAGE_NAME).tar > $(PACKAGE_NAME).tar.gz
 
-glut_gz:
-       cd .. ; \
-       tar -cf $(GLUT_NAME).tar $(GLUT_FILES) ; \
-       gzip $(GLUT_NAME).tar ; \
-       mv $(GLUT_NAME).tar.gz $(DIRECTORY)
+$(PACKAGE_NAME).tar.bz2: $(PACKAGE_NAME).tar
+       bzip2 --stdout --best $(PACKAGE_NAME).tar > $(PACKAGE_NAME).tar.bz2
 
-lib_bz2: rm_config
+$(PACKAGE_NAME).zip: parsers ../$(PACKAGE_DIR) manifest.txt
+       rm -f $(PACKAGE_NAME).zip ; \
        cd .. ; \
-       tar -cf $(LIB_NAME).tar $(LIB_FILES) ; \
-       bzip2 $(LIB_NAME).tar ; \
-       mv $(LIB_NAME).tar.bz2 $(DIRECTORY)
+       zip -q -@ $(PACKAGE_NAME).zip < $(PACKAGE_DIR)/manifest.txt ; \
+       mv $(PACKAGE_NAME).zip $(PACKAGE_DIR)
 
-demo_bz2:
-       cd .. ; \
-       tar -cf $(DEMO_NAME).tar $(DEMO_FILES) ; \
-       bzip2 $(DEMO_NAME).tar ; \
-       mv $(DEMO_NAME).tar.bz2 $(DIRECTORY)
+md5: $(ARCHIVES)
+       @-md5sum $(PACKAGE_NAME).tar.gz
+       @-md5sum $(PACKAGE_NAME).tar.bz2
+       @-md5sum $(PACKAGE_NAME).zip
 
-glut_bz2:
-       cd .. ; \
-       tar -cf $(GLUT_NAME).tar $(GLUT_FILES) ; \
-       bzip2 $(GLUT_NAME).tar ; \
-       mv $(GLUT_NAME).tar.bz2 $(DIRECTORY)
-
-lib_zip: rm_config
-       rm -f $(LIB_NAME).zip ; \
-       cd .. ; \
-       zip -qr $(LIB_NAME).zip $(LIB_FILES) ; \
-       mv $(LIB_NAME).zip $(DIRECTORY)
-
-demo_zip:
-       rm -f $(DEMO_NAME).zip ; \
-       cd .. ; \
-       zip -qr $(DEMO_NAME).zip $(DEMO_FILES) ; \
-       mv $(DEMO_NAME).zip $(DIRECTORY)
-
-glut_zip:
-       rm -f $(GLUT_NAME).zip ; \
-       cd .. ; \
-       zip -qr $(GLUT_NAME).zip $(GLUT_FILES) ; \
-       mv $(GLUT_NAME).zip $(DIRECTORY)
-
-md5:
-       @-md5sum $(LIB_NAME).tar.gz
-       @-md5sum $(LIB_NAME).tar.bz2
-       @-md5sum $(LIB_NAME).zip
-       @-md5sum $(DEMO_NAME).tar.gz
-       @-md5sum $(DEMO_NAME).tar.bz2
-       @-md5sum $(DEMO_NAME).zip
-       @-md5sum $(GLUT_NAME).tar.gz
-       @-md5sum $(GLUT_NAME).tar.bz2
-       @-md5sum $(GLUT_NAME).zip
-
-.PHONY: tarballs rm_depend rm_config md5 \
-       lib_gz demo_gz glut_gz \
-       lib_bz2 demo_bz2 glut_bz2 \
-       lib_zip demo_zip glut_zip
+.PHONY: tarballs md5