Hacking on GSL The GSL hacker needs some stuff that the end users don't: * you must have a recent automake (1.3 or greater) from ftp://sourceware.cygnus.com/pub/automake/ * you must have the latest autoconf from ftp://sourceware.cygnus.com/pub/automake/ * you must have the texinfo 3.11 with Brian's mathematical hacks; it is in ftp://sourceware.cygnus.com/pub/gsl/ * you must have a recent CVS (at least 1.9) from ftp://prep.ai.mit.edu/u2/emacs/ Once you have this stuff, you can get the repository and start working from your own machine. To do the initial checkout of the repository try (bash syntax): # PEOPLE WITH CVS WRITE ACCESS: export CVS_RSH=ssh cvs -d sourceware.cygnus.com:/cvs/gsl checkout gsl [from now on you can just do "cvs update" in the gsl directory] # ANONYMOUS CVS USERS cvs -d :pserver:anoncvs@sourceware.cygnus.com:/cvs/gsl login (password is ``anoncvs'') cvs -d :pserver:anoncvs@sourceware.cygnus.com:/cvs/gsl checkout gsl [from now on you can just do "cvs update" in the gsl directory] # PEOPLE WHO JUST WANT TO BROWSE THE CVS REPOSITORY point your web browser to http://sourceware.cygnus.com/cgi-bin/cvsweb.cgi/gsl?cvsroot=gsl # PEOPLE WHO JUST WANT A WORKING VERSION grab the latest bundled release at ftp://sourceware.cygnus.com/pub/gsl/ Let me know (rosalia@lanl.gov) if any of these steps don't work. I have tried them out on swift and they seem to work. ---------- submitting patches The best way to send us a patch is to compile from an anonymous CVS checkout and to use a nice cvs diff option, like "cvs rdiff -u". ---------- some special targets To check for ansi compliance try, 'make strict'. This compiles with the following CFLAGS: -ansi -pedantic -W -Wall -Wtraditional -Wconversion -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -fshort-enums -fno-common -Wmissing-prototypes -Wnested-externs -Werror -g -O4 -Dinline='' I recommend having a bash alias, makestrict () { make $* CFLAGS="-ansi -pedantic -Werror -W -Wall -Wtraditional -Wconversion -Wshadow -Wpointer-arith -Wcast-qual -Wcast-align -Wwrite-strings -Wstrict-prototypes -fshort-enums -fno-common -Wmissing-prototypes -Wnested-externs -Dinline= -g -O4" } ; which lets you type things like makestrict check If you can compile your code with makestrict makestrict CC=c++ then that's a good test for portability. ---------- warning about picking up old header files When compiling the library it's important to use the local copies of the header files, and not ones that have been installed previously in /usr/local/include. There can be confusing errors if the installed and local copies of the headers get mixed up! (In particular, some of them only show up when doing 'make distcheck') To put the local copies on your include path you need, in your Makefile.am, INCLUDES = -I$(srcdir)/.. srcdir is always your working dir, and so $(srcdir)/.. is the top-level dir where gsl_math.h and gsl_complex.h are located. ---------- fixing Makefile.am To rebuild the top-level Makefile.am use ./libfixmk.pl in the top-level directory. It rewrites the dependencies for libgsl.a.