___________________________________
|      |  |  |     |  _  |     |  |
|  |___|  |  |  |  |    _|  |  |  |    GNU GLOBAL source code tag system
|  |   |  |  |  |  |     |     |  |
|  ~~  |   ~~|     |  ~  |  |  |   ~~|          for all hackers.
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 Copyright (c) 2000, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2012
	Tama Communications Corporation

 This file is free software; as a special exception the author gives
 unlimited permission to copy and/or distribute it, with or without
 modifications, as long as this notice is preserved.

 This program is distributed in the hope that it will be useful, but
 WITHOUT ANY WARRANTY, to the extent permitted by law; without even the
 implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

		----------------------------------

Frequently Asked Questions about GLOBAL.

----------------------------------------------------------------------------
Q1. Does GLOBAL support DOS and Windows 32 environment?

A1. No, it doesn't. GNU GLOBAL supports only UNIX(POSIX) environment.
    But some outside projects develop DOS and Windows 32 version of it.
    Please see:
           http://www.gnu.org/software/global/download.html

    Though GLOBAL doesn't supports DOS and Windows 32 environment,
    we accept code for them if the following requirements are met:
    (1) It works in DOS and(or) Windows 32 environment.
    (2) It doesn't influence UNIX environment.

----------------------------------------------------------------------------
Q2. GLOBAL skips some functions.
    For example, GLOBAL skips 'func()' in this example.

	#define M(a)	static char *string = a;

	M(a)

	func() {		<= GLOBAL skip func().
		...
	}

A2. GLOBAL cannot recognize 'func()', because M(a) seems to be a function
    definition.

    It should be follows:

	#define M(a)	static char *string = a

	M(a);			<= end with ';'

	func() {
		...
	}

    Otherwise, you can tell gtags(1) that 'M' is not a function by listing
    the macros in '.notfunction' file in the root directory of the project.

	[.notfunction]
	+---------------
	|M
	|...

----------------------------------------------------------------------------
Q3. I'm a C++ programmer. Why does not gtags pick up class names in *.h?

A3. GLOBAL treats *.h files as a C source file. If you want to treat them
    as a C++ source file, please set environment variable GTAGSFORCECPP.

	% setenv GTAGSFORCECPP

        or

	$ export GTAGSFORCECPP=

----------------------------------------------------------------------------
Q4. I'm using GNU system. In a large project, gtags fails in making tags
    like follows:

	$ gtags
	gtags: cannot write to database.
	$ _

    File system is not full. It seems that gtags cannot make a file over 2GB.
    Any solution?

A4. If your GNU system supports 64-bit file offset then please try the
    following configuration.

	$ ./configure CFLAGS='-D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64'

----------------------------------------------------------------------------
Q5. What is this message? What should I do?
    'configure: error: curses library is required but not found."

A5. gtags-cscope(1) requires curses library. There are two choices of yours.

    If you use gtags-cscope(1)
	Please install curses library. You can get it from:
	http://www.gnu.org/software/ncurses/
    else 
	You can install GLOBAL without gtags-cscope(1) like follows:
	$ ./configure --disable-gtagscscope
	$ make

----------------------------------------------------------------------------
Q6. How to use ctags as a parser of GLOBAL?
A6. If you have already installed Exuberant Ctags in your system,
    Please do the following:

        [Installation of GLOBAL]

        It assumed that ctags command is installed in '/usr/local/bin'.

        $ ./configure --with-exuberant-ctags=/usr/local/bin/ctags
        $ make
        $ sudo make install

        [Executing of gtags]

        It assumed that GLOBAL is installed in '/usr/local' which is the default.

        $ export GTAGSCONF=/usr/local/share/gtags/gtags.conf
        $ export GTAGSLABEL=ctags
        $ gtags                         # invokes Exuberant Ctags internally

    This means that GLOBAL already supports 41 programming languages
    supported by Exuberant Ctags.

----------------------------------------------------------------------------
Q7. Gtags(1) and htags(1) work only for one directory tree. So, we cannot
    refer library functions like strlen() from my project. Any solutions?

A7. For global(1), you can use GTAGSLIBPATH environment variable.

	[library]	/usr/src/lib
	[your project]	/usr/home/project

	$ (cd /usr/src/lib; gtags)
	$ export GTAGSLIBPATH=/usr/src/lib
	$ global strlen
	../../../usr/src/lib/libc/string/strlen.c

    Or, you can take a more straightforward way to do the same thing.
    In the following example, you treat as if the system library is
    part of your project. This way is effective also to htags(1).

	$ cd /usr/home/project
	$ ln -s /usr/src/lib .
	$ gtags
	$ htags

----------------------------------------------------------------------------
Q8. I can't make GSYMS file.

A8. No problem. GSYMS was merged into GRTAGS in GLOBAL-5.9 or later.
----------------------------------------------------------------------------
Q9. Deleted.
----------------------------------------------------------------------------
Q10. Does GLOBAL support multi-byte code set?
     Which character code set is supported?

A10. GLOBAL doesn't support multi-byte character code set yet.
     GLOBAL supports only ASCII and ASCII supersets.

----------------------------------------------------------------------------
Q11. Can GLOBAL running on a UNIX machine treat source files
     which include DOS/Windows style new-line code? And vice versa? 

A11. GLOBAL supports only native text format of POSIX.
     Besides, please go by the own responsibility.

----------------------------------------------------------------------------

End of FAQ.
