cint 5.16.29 / 6.1.29 ( CINT is pronounced "C-int" ) | | | | | +- Patch level (changed almost weekly at each release) | +- Minor version (changed at DLL binary incompatibility) +- Major version (major architecture change) Author Masaharu Goto Copyright(c) 1995~2007 Masaharu Goto (gotom@hanno.jp) Mailing list cint@root.cern.ch Note: Search 'Installation' for installation instruction. ====== CINT ABSTRACT ======================================================= "cint" is a C/C++ interpreter which has following features. * Support K&R-C, ANSI-C, ANSI-C++ Cint has 80-90% coverage on K&R-C, ANSI-C and C++ language constructs. (Multiple inheritance, virtual function, function overloading, operator overloading, default parameter, template, etc..) Cint is solid enough to interpret its own source code. Cint is not aimed to be a 100% ANSI/ISO compliant C++ language processor. It rather is a portable script language environment which is close enough to the standard C++. * Handling Huge C/C++ source code Cint can handle huge C/C++ source code. This has been a problem for other C++ interpreter. Cint is quick in loading source files. Cint can interpret its own over 60,000 lines source code. * Interpretation & Native Code Execution can be mixed Depending on speed and interactiveness requirement, you can mix Native Code execution and interpretation. "makecint" makes it possible to encapsulate arbitrary C/C++ object as a precompiled library. Precompiled library can be configured as a Dynamic Link Library. Access between interpreted code and precompiled code can be done seamlessly in both direction. * Single-Language solution Cint/makecint is a Single-Language environment. It works with any ANSI-C/C++ compiler to provide the interpreter environment on top of it. * Bridge between serious programmers and other professionals Cint is meant to be a bridging tool between software and non-software professionals. C++ looks rather easy under the interpreter environment. It helps non-software professionals to talk in the same language to their software counterpart. Today's System-On-Silicon evolution demands integration and standardization of design tools in software, hardware, IC and system design processes. Cint is a key enabling technology to this critical issue. * Dynamic C++ Cint is dynamic. It can process C++ statements from command line, dynamically define/erase class definition and functions, load/unload source files and Dynamic Link Library. Extended Run Time Type Identification mechanism is provided. This will allow you to explore unthinkable way of using C++. * Built-in Debugger, class browser Cint has a built-in debugger with an extensive capability to debug complex C++ execution flow. Text base class browser is a part of the debugger capability. * Portability CINT works on number of Operating Systems. HP-UX, Linux, SunOS, Solaris, AIX, Alpha-OSF, IRIX, FreeBSD, NetBSD, NEC EWS4800, NewsOS, BeBox, Windows-NT ,Windows-9x, MS-DOS, MacOS, VMS, NextStep, Convex. Porting should be easy. Refer to platform/README. What about OS2, VxWorks, etc...? * CINT users spread world wide Many people world-wide are using Cint. Many C/C++ libraries have been encapsulated. CERN and Fermi-Lab choose Cint as front-end command processor and script interpreter for "ROOT" Object Oriented Software Framework. The ROOT/CINT framework will be used in Large Hadron Collider(LHC) research project beyond 2020. * More applications We have done, so far, following integration. ROOT/CINT framework: Next generation C++ Object Oriented Framework WildC++ interpreter: CINT + Tcl/Tk CINTOCX : CINT + VisualBasic There are unlimited opportunity of CINT integration. To list up a few, Cint3D : CINT, openGL, DirectModel, VRML integration for 3D VeriCint : CINT + Verilog-XL simulator connected by PLI and TCP/IP MathCint : CINT + Math library + Digital Filter Design tool, etc CintSQL : CINT + Database connection CintWin32 : CINT + Win32 API Your contribution will be greatly appreciated. License: =================================================================== See file COPYING in this directory for the licensing terms. Getting the latest package ================================================= The latest source code package is available from following sources. Static Version : from Cint web site http://root.cern.ch/root/Cint.html Aggressive Version ftp://root.cern.ch/root/cintX.X.tar.gz (X.X means whatever the latest revision number) CINT mailing list cint@root.cern.ch Send request to 'Majordomo@pcroot.cern.ch' containing following line for subscription. subscribe cint [preferred mail address] Archive for CINT mailing list can be accessed as follows. http://root.cern.ch/root/cinttalk/AboutCint.html Windows-NT/95/98/Me/2000/XP Installation: =================================== - Getting source package Source package is distributed as cint5.14.tar.gz from the Cint web page. Please download this file. - Unpack the package You must install CINT in c:\cint directory. Make c:\cint directory, copy cint source package as cint.tgz and unpack it by gzip+tar. c:\> mkdir c:\cint c:\> cd c:\cint c:\cint> copy [where_you_saved_package]\cint5.14.tar.gz cint.tgz c:\cint> gzip -vd cint.tgz c:\cint> tar xvf cint.tar Alternatively, You can unpack the package by using Winzip twice. Assuming Winzip is already installed in your machine, c:\> mkdir c:\cint c:\> cd c:\cint c:\cint> copy [where_you_saved_package]\cint5.14.tar.gz cint.tgz ### click cint.tgz -> cint.tar ### click cint.tar -> unpacking cint source files For Windows, you can install Cint by (a) using a binary distribution or (b-f) compiling the source. Choose one of following options. a) Using binary distribution Binary package is distributed as cintwin.tar.gz from the Cint web page. Please download this file. Note that cintwin.ta.gz binary package does not work alone. It must be always installed on top of the source. Do following after unpacking the source package. You must install CINT in c:\cint directory. Copy cint binary package as cintwin.tgz and unpack it by gzip+tar. c:\> cd c:\cint c:\cint> copy [where_you_saved_package]\cintwin.tar.gz cintwin.tgz c:\cint> gzip -vd cintwin.tgz c:\cint> tar xvf cintwin.tar Alternatively, You can unpack the package by using Winzip twice. Assuming Winzip is already installed in your machine, c:\> mkdir c:\cint c:\> cd c:\cint c:\cint> copy [where_you_saved_package]\cintwin.tar.gz cintwin.tgz ### click cintwin.tgz -> cintwin.tar ### click cintwin.tar -> unpacking cint binary files You need to set environment variables manually. Add following lines in c:\autoexec.bat and reboot. set CINTSYSDIR=c:\cint set PATH=%PATH%;%CINTSYSDIR% Limitation: With the binary distribution, you can only use cint C++ interpreter. In order to use makecint, you must compile cint from source. See b), c), d). b) Using Visual C++ 4.0, 5.0, 6.0 (See b' for VC++ 7.0) If you use Visual C++ 5.0 or later , you need to run vcvars32.bat to set VC++ environment variables. vcvars32.bat exists in Visual C++ binary directory. Before running this, please make sure that your MSDOS Command Window has sufficient environment variable space. Edit MSDOS Command Window property and increase environment variable space. You may also need to comment out following line from vcvars32.bat. rem set vcsource=L:\DEVSTUDIO Then run the script ### Change directory to either of following directory, depending on ### version of the compiler. ### "\Program Files\DevStudio\VC\bin" ### "\Program Files\Microsoft Visual Studio\VC98\bin" ### Then c:\Program Files\Microsoft Visual Studio\VC98\bin> vcvars32.bat You do not need to do above if you use Visual C++ 4.0. Go to c:\cint\platform\visual , c:\cint\platform\visualCpp6 or c:\cint\platform\visualCpp7 directory according to version of compiler you have. And run setup.bat. This script updates c:\autoexec.bat. Reboot your PC after installation. Read c:\cint\platform\visualXXX\readme.txt if you find problems. c:\cint> cd c:\cint\platform\visual : VC++4.0/5.0/6.0 OR c:\cint> cd c:\cint\platform\visualCpp6 : VC++6.0 OR c:\cint> cd c:\cint\platform\visualCpp7 : VC++7.0 Depending on operation system and compiler version, run following setup script. Windows-XP , VC++ 7.0 c:\cint\platform\visualCpp7> setup.bat Windows-95/98/Me , VC++ 6.0 c:\cint\platform\visual> setup.bat Windows-2000 , VC++ 6.0 It looks like Windows-2000 has problem setting environment variablle in batch script. Set environment variable CINTSYSDIR=c:\cint and PATH=%CINTSYSDIR%;%PATH% first. Then run following command. c:\cint\platform\visual> setup2000.bat Windows-NT , VC++ 6.0 c:\cint\platform\visualCpp6> setup.bat Windows-95/98/2000/Me , VC++ 5.0 or older c:\cint\platform\visual> setupold.bat Windows-NT , VC++ 5.0 or older c:\cint\platform\visual> setupNTold.bat Then reboot system. ### REBOOT SYSTEM ### c) Using Borland C++ Compiler version 5.5 Free version of Borland BCC32.exe comiler is available from http://www.borland.com. BCC32.exe version 5.5 is supported from cint5.15.53. Go to c:\cint\platform\borlandcc5 directory and run setup.bat. This script updates c:\autoexec.bat. Reboot your PC after installation. Read c:\cint\platform\borlandcc5\README.txt if you find problems. c:\cint> cd c:\cint\platform\borlandcc5 c:\cint\platform\borlandcc5> setup.bat ### REBOOT SYSTEM ### d) Using Borland C++ Builder 3.0 Go to c:\cint\platform\borland directory and run setup.bat. This script updates c:\autoexec.bat. Reboot your PC after installation. Read c:\cint\platform\borland\README.txt if you find problems. c:\cint> cd c:\cint\platform\borland c:\cint\platform\borland> setup.bat ### REBOOT SYSTEM ### Note: This process may not work under Borland C++ Builder 5.0. Please refer to platform/README.txt e) Using Symantec C++ 7.2 Go to c:\cint\platform\symantec directory and run setup.bat. This script updates c:\autoexec.bat. Reboot your PC after installation. Read c:\cint\platform\symantec\README.txt if you find problems. c:\cint> cd c:\cint\platform\symantec c:\cint\platform\symantec> setup.bat ### REBOOT SYSTEM ### f) Using DJGPP For compilation using DGJPP, read platform/README.txt Note: About 30Mbyte free disc space is needed for compiling Cint core system. Setup script continues to compile optional library components which require ~90Mbyte free disc space. UNIX/Linux/Cygwin Installation: ============================================ - Getting source package Source package is distributed as cint5.14.tar.gz from the Cint web page. Please download this file. - Unpack the package At any event of failing installation please refer to platform/README. You need to get either of 'cint5.14.tar.gz', 'cint.tar.gz' or 'cint.tgz'. The file includes all of the Cint related source files. Make a directory:(for example /usr/local/cint) $ mkdir /usr/local/cint $ cd /usr/local/cint $ cp [where_you_saved_package]/cint5.14.tar.gz cint.tar.gz Copy the archive file to that directory and do the following to unpack the package. $ gunzip -c cint.tar.gz | tar xvf - or $ gzip -vd cint.tar.gz $ tar xvf cint.tar At this moment, C++ source files have .cxx file name extension. If you have a C++ compiler which does not accept .cxx extension, cxx2C script will rename them. This is an optional procedure. If you run cxx2C by mistake, you can recover by using C2cxx script. $ sh ./cxx2C (optional) - Compile Cint and optional library Then, look into platform directory to find an appropriate platform dependency file for your environment. You need to give that file as an argument to setup script. $ sh ./setup platform/[machine] If you can not find any file that is close to your system, you need to create one by yourself. If you have gcc/g++, platform/gcc_min or gcc_max may be good. There can be platform dependent restriction. Please read platform/README file carefully. Note1: About 30Mbyte free disc space is needed for compiling Cint core system. Setup script continues to compile optional library components which require ~90Mbyte free disc space. Note2: Linux installation requirements: When installing Linux package, you need to add following packages in order to build Cint. Basically, you need to install developper environment. binutils (d), gcc (d), gcc-g++ (d), make (d), kernel-headers (d), readline (l), ncurses (l), glibc (l) Setting up environment variable:(UNIX) ====================================== After installation you need to set environment variables. If you installed cint under '/usr/local/cint', for example ksh/bsh/bash CINTSYSDIR=/usr/local/cint PATH=$PATH:$CINTSYSDIR MANPATH=$MANPATH:$CINTSYSDIR/doc export PATH CINTSYSDIR MANPATH csh setenv CINTSYSDIR /usr/local/cint setenv PATH ($PATH $CINTSYSDIR) setenv MANPATH ($MANPATH $CINTSYSDIR/doc) You may need to set following variable too bash LD_LIBRARY_PATH=.:$CINTSYSDIR:$LD_LIBRARY_PATH LD_ELF_LIBRARY_PATH=$LD_LIBRARY_PATH export LD_LIBRARY_PATH LD_ELF_LIBRARY_PATH Now you can use 'cint'(interpreter itself) and 'makecint'(compile utility). $ cint <[file1].c [file2].c [shl].sl ...> [main].c $ makecint <-o|-dl> <[obj]|[shl].sl> -H [src].h -C++ [src].C Caution ==================================================================== Cint creates temp-files in /tmp, /usr/tmp, \temp or windows\temp directory. Those files are automatically removed in normal situation but sometimes left unremoved by accident. Check /tmp and /usr/tmp regulary to remove garbage. Temp-files are named *_cint. Documentation ============================================================== $CINTSYSDIR/doc/cint.txt # cint manual $CINTSYSDIR/doc/makecint.txt # makecint manual $CINTSYSDIR/doc/limitati.txt # cint syntax limitation $CINTSYSDIR/doc/limitnum.txt # cint quantitive limitation $CINTSYSDIR/doc/ref.txt # cint special feature, ERTTI API $CINTSYSDIR/doc/cintapi.txt # cint API $CINTSYSDIR/doc/bytecode.txt # cint incremental bytecode compiler Demo ======================================================================= You can find demonstration programs in $CINTSYSDIR/demo/ directory. These programs can be referred as programming examples. Please read README file under there. Makecint examples are found in $CINTSYSDIR/demo/makecint directory. It is highly recommended to start with those demo programs. Contributers ============================================================== The Author would like to thank Fons Rademakers and Rene Brun in CERN for jointly develop ping ROOT-CINT framework system. Their invaluable advice has been improving cint. They ported CINT on 10 different UNIX platforms. Philippe Canal in Fermi-Lab contributes to many enhancements and bug fixes. Axel Naumann from CERN contributes to the build system and the update to use the Reflex in memory database and many other contributions. Stefan Roiser from CERN is the main developer of the Reflex package. Scott Snyder provided the initial implementaton of template support. Osamu Kotanigawa is giving great advice on Windows-NT Visual C++ and Borland C++ porting. He created src/vcstrm.cxx and src/bcstrm.cxx. His contribution improved CINT in many aspects. Jacek Holeczek refined DLL schemes on IBM AIX. He wrote platform/aix* and platform/aixMakefileBaseAdd. Dibyendu Majumdar in U.K. ported CINT on MS-DOS using DJGPP. Kiyoshi Yamamoto, in CQ publishing company, is giving me opportunity to write a book and articles about CINT. Masa Habu in HP Cupertino suggested usefulness of C++ interpreter in 1992 when CINT was only a C interpreter. Junichi Mizoguchi in Agilent Technologies Japan created a base concept of makecint by his automated software test execution environment. And many thanks to people in Agilent Technologies Japan Hachioji-site. The Author =============================================================== Masaharu Goto Please contact the author for bugs and requests by sending an e-mail to cint@pcroot.cern.ch. You can also send message to 'rootdev@pcroot.cern.ch' or 'roottalk@pcroot.cern.ch' for generic questions. Bugs are tend to be fixed very quickly. (Normally 1-2 days if I wasn't gone for vacation or business trip.)