next up previous contents 5
Next: Installing the dcs_tcl_packages library Up: Installing the libraries Previous: Installing the newmat10 library   Contents


Building the tcl_clibs library

This is a library of C functions that a TCL program is able to load at run-time. This library is loaded both by the Blu-Ice program and by the DCSS scripting engine.

  1. Install newmat10 library .

  2. Install the jpegsoc library.

  3. Checkout the tcl_clibs software into your DCS 'root' directory.

    blctlxx:~/release-3_2 > cvs checkout -r release-3_2 tcl_clibs
    cvs checkout: Updating tcl_clibs
    cvs checkout: Updating tcl_clibs/decunix
    U tcl_clibs/decunix/makefile
    cvs checkout: Updating tcl_clibs/irix
    U tcl_clibs/irix/makefile
    U tcl_clibs/irix/tcl_clibs.so
    cvs checkout: Updating tcl_clibs/linux
    U tcl_clibs/linux/calibrate.so
    U tcl_clibs/linux/makefile
    cvs checkout: Updating tcl_clibs/src
    U tcl_clibs/src/analyzePeak.c
    U tcl_clibs/src/analyzePeak.h
    U tcl_clibs/src/calibrate.c
    U tcl_clibs/src/calibrate.h
    U tcl_clibs/src/cubgcv.c
    U tcl_clibs/src/cubgcv.h
    U tcl_clibs/src/ice.c
    U tcl_clibs/src/ice_auth.c
    U tcl_clibs/src/ice_auth.h
    U tcl_clibs/src/ice_cal.c
    U tcl_clibs/src/ice_cal.h
    U tcl_clibs/src/image_channel.c
    U tcl_clibs/src/image_channel.h
    U tcl_clibs/src/tcl_macros.h
    

  4. cd into the linux, decunix, or irix build directory and build the software with the make command.

    blctlxx:~/release-3_2 > cd tcl_clibs/linux/
    blctlxx:~/release-3_2/tcl_clibs/linux > make
    g++ -c -O -DLINUX -Wall -I./ -I../ -I/usr/local/include/  -I../../auth/src -I../../xos/src/  -I/usr/lib/ -I../../jpegsoc//src ../src/ice.c
    g++ -c -O -DLINUX -Wall -I./ -I../ -I/usr/local/include/  -I../../auth/src -I../../xos/src/  -I/usr/lib/ -I../../jpegsoc//src ../src/ice_cal.c
    g++ -c -I../../newmat10/linux/ ../src/calibrate.c
    ../src/calibrate.c: In function `int cal_convolutegaussian 
    (ColumnVector &, ColumnVector &, double)':
    ../src/calibrate.c:205: warning: assignment to `int' from `double'
    ../src/calibrate.c:205: warning: argument to `int' from `double'
    g++ -c -O -DLINUX -Wall -I./ -I../ -I/usr/local/include/  -I../../auth/src -I../../xos/src/  -I/usr/lib/ -I../../jpegsoc//src ../src/ice_auth.c
    g++ -c -O -DLINUX -Wall -I./ -I../ -I/usr/local/include/  -I../../auth/src -I.
    ./../xos/src/  -I/usr/lib/ -I../../jpegsoc//src ../src/image_channel.c
    g++ -c -O -DLINUX -Wall -I./ -I../ -I/usr/local/include/  -I../../auth/src -I.
    ./../xos/src/  -I/usr/lib/ -I../../jpegsoc//src ../src/analyzePeak.c
    ../src/analyzePeak.c: In function `int nonzero (double *, int)':
    ../src/analyzePeak.c:336: warning: `int nzero' might be used 
    uninitialized in this function
    ../src/analyzePeak.c: In function `int find_extrema (int, double *, 
    double *, double **, double *, double *, int *, double *, double *, int 
    *)':
    ../src/analyzePeak.c:348: warning: `double root1' might be used 
    uninitialized in this function
    ../src/analyzePeak.c:348: warning: `double ex1' might be used 
    uninitialized in this function
    ../src/analyzePeak.c:348: warning: `double ex2' might be used 
    uninitialized in this function
    g++ -c -O -DLINUX -Wall -I./ -I../ -I/usr/local/include/  -I../../auth/src -I.
    ./../xos/src/  -I/usr/lib/ -I../../jpegsoc//src ../src/cubgcv.c
    ../src/cubgcv.c: In function `int cubgcv (double *, double *, double *, 
    int, double *, double **, int, double *, int, double *, double **, 
    double **, double *, double *, int *)':
    ../src/cubgcv.c:258: warning: label `L150' defined but not used
    ../src/cubgcv.c:253: warning: label `L140' defined but not used
    g++ -shared ice.o ice_cal.o calibrate.o ice_auth.o  image_channel.o analyzePea
    k.o cubgcv.o ../../jpegsoc/linux/jpegsoc_applack.a ../../newmat10/linux/libnew
    mat.a  ../../auth/linux/auth.a  ../../xos/linux/xos.a /usr/lib/libjpeg.a -lc /
    usr/lib/libtcl8.3.so  -lm -lpthread -o tcl_clibs.so
    

  5. Test the library by loading it from the tcl prompt and manually calling a provided procedure. (This also tests the newmat10 library build.)

     
    smblx5:~> wish
    % load ~/release-3_2/tcl_clibs/linux/tcl_clibs.so dcs_c_library
    % cal_find_peak 5 "1 2 3 4 5" "1 2 3 2 1"
    3.000000e+00 3.000000e+00
    % exit
    

IMPORTANT: Make the 'load' command from the wish command prompt work before you attempt to install blu-ice and dcss. Its much easier to figure out why the load command doesn't work at this stage than it is to figure out what is wrong at the start-up of blu-ice.

Note: If you were unsuccessful in build newmat10, this library will not build. You can attempt to remove the references to the newmat10 library by changing the makefile and ice.c file as shown in this diff output:

smblx5:~/release-3_2/tcl_clibs > cvs diff
cvs diff: Diffing .
cvs diff: Diffing decunix
cvs diff: Diffing irix
cvs diff: Diffing linux
Index: linux/makefile
===================================================================
RCS file: /home/code/repository/tcl_clibs/linux/makefile,v
retrieving revision 1.8
diff -r1.8 makefile
65c65
< LOCAL_LIBS =  ${JPEG_EXT_DIR}linux/jpegsoc_applack.a ${NEWMAT_LIB_DIR}libnewmat.a  ${AUTH_LIB_DIR}auth.a  ${XOS_LIB_DIR}xos.a ${JPEG_DIR}libjpeg.a
---
> LOCAL_LIBS =  ${JPEG_EXT_DIR}linux/jpegsoc_applack.a ${AUTH_LIB_DIR}auth.a  ${XOS_LIB_DIR}xos.a ${JPEG_DIR}libjpeg.a
70c70
< OBJS = ice.o ice_cal.o calibrate.o ice_auth.o  image_channel.o analyzePeak.o cubgcv.o
---
> OBJS = ice.o ice_auth.o  image_channel.o analyzePeak.o cubgcv.o
85,90d84
< 
< ice_cal.o : ${CODE}ice_cal.c
< 	${CC} -c ${CFLAGS} ${CPP_CONSTANTS} ${INCLUDE_DIR} ${CODE}ice_cal.c
< 
< calibrate.o : ${CODE}calibrate.c
< 	${CC} -c -I${NEWMAT_DIR} ${CODE}calibrate.c
cvs diff: Diffing src
Index: src/ice.c
===================================================================
RCS file: /home/code/repository/tcl_clibs/src/ice.c,v
retrieving revision 1.11
diff -r1.11 ice.c
51,52d50
< 		 REGISTER_TCL_COMMAND( cal_find_peak );
< 		 REGISTER_TCL_COMMAND( cal_correct_energy );


next up previous contents 5
Next: Installing the dcs_tcl_packages library Up: Installing the libraries Previous: Installing the newmat10 library   Contents
Scott McPhillips 2003-03-11