
				mDNkit
		     Compilation and Installation
	       Japan Network Information Center (JPNIC)


This file explains how to compile and install the source package.
These procedures take the following steps:

    + Prerequisite: making iconv() available
    + System Configuration: running `configure' script
    + Compilation: running `make'
    + Installation: running `make install'
    + Site Configuration: tailoring `mdn.conf'
    + Configuration Check (optional)


0. Prerequisite

If your system's library does not have iconv() function, which is a
general codeset conversion utility, install it as an external library.
You also need external library if the system's implementation cannot
handle UTF-8 encoding, or it doesn't support some encodings which your
client applications uses.

You can get a free version of iconv() implementation (under LGPL
license, aka GNU libiconv) from:

	ftp://ftp.gnu.org/gnu/libiconv/
	and mirrors of that site.

*Note*
  GNU libiconv-1.6.1 have a compilation problem on NetBSD 1.5.  There
  is a patch file for the bug under patch/libiconv directory.  If you
  are a NetBSD 1.5 user and found a problem in compiling libiconv,
  apply the patch and try again.  The patch file contains brief
  instructions on how to apply it at the beginning.


1. Running configure script

Run `configure' script in the top directory.  This checks various
characteristics of your system and it will create Makefiles and
config.h appropriate for your system.

	% ./configure

`configure' accepts many options.  Here is a list of some important
options.

    --prefix=PREFIX
	Specifies the prefix of install directories of mDNkit.  The
	default is /usr/local.  

    --with-libiconv=LIBICONV_PREFIX
	If you have installed GNU libiconv and would like to link it
	to mDNkit, specify this option.  The argument LIBICONV_PREFIX
	is install prefix of GNU libiconv.  If the argument is omitted,
	PREFIX (derived from --prefix=PREFIX option) is assumed.

	--with-libiconv is shorthand option for GNU libiconv.

	    --with-libiconv=/usr/local

	This is equivalent to:

	    --with-iconv-include='-I/usr/local/include'
	    --with-iconv='-L/usr/local/lib -R/usr/local/lib -liconv'

	If both the shorthand option (--with-libiconv) and longhand
	options (--with-iconv-include and/or --with-iconv) are specified,
	the longhand options have priority.

    --with-iconv-include=ICONV_INCDIR
	If the header file "iconv.h" resides in a directory where your
	C compiler doesn't search by default, specify the directory as
	DIR like this:
	
	    --with-iconv-include=/usr/local/include

    --with-iconv=ICONV_LIB
	If your libc doesn't contain iconv(), specify the library
	that contains iconv().  For example, if iconv() is libiconv
	in /usr/local/lib, you should specify:

	    --with-iconv="-L/usr/local/lib -liconv"

	Note that if the library is a shared one, you might also want
	to specify -R option, like:

	    --with-iconv="-L/usr/local/lib -R/usr/local/lib -liconv"

    --with-iconv-sofile=SOFILE_PATH
	``runmdn'' command in this kit needs to know the pathname of
	shared library file that contains iconv(), if iconv() is not
	part of libc.  mDNkit tries to find out the pathname from the
	informaiton provided by ``--with-iconv'' option described
	above.  But when it fails, you have to specify it with this
	option, like:

	    --with-iconv-sofile=/usr/local/lib/libiconv.so.2.0

    --with-utf8=UTF8_NAME
	If your iconv() (precisely, iconv_open()) does not accept
	"UTF-8" as the name of UTF-8 encoding, specify the name for
	it.  For example if your iconv() uses "utf8" instead, you
	should specify:

	    --with-utf8=utf8


2. Other configure options

The configure script has many other options though they are not widely
used:

    --with-preference=PREFERENCE
	This option sets the preference for the sample mDNkit
	configuration file (mdn.conf.sample).  Also this option
	enables to install default configuration file (mdn.conf)
	if the file didn't exist.
	The only preference supported by this version is "jp".

    --with-punycode-prefix=PUNYCODE_PREFIX
	Punycode is a formal name of AMC-ACE-Z, which was one of
	the proposed encodings for multilingual domain name in DNS
	protocol data.  It requires a specific prefix string to
	distinguish domain names encoded by them from normal ASCII
	domain names, but the current Internet draft of Punycode
	doesn't define prefix. You can specify the prefix with this
	option.  Otherwise mDNkit defines "zq--" as the prefix.

    --with-race-prefix=RACE_PREFIX
    --with-dude-prefix=DUDE_PREFIX
	Also RACE and DUDE are encodings for multilingual domain name,
	but they are obsolete.  Since Internet drafts for these
	encodings defines ACE prefixes, mDNkit uses them by default,
	but you can specify prefix with these options.

    --exec-prefix=EXEC_PREFIX
	Specifies the prefix of install directories for machine-specific
	files.  The default is PREFIX (derived from ``--prefix=PREFIX''
	and its default is /usr/local).

    --sbindir=SBINDIR
	Specifies the install directory for mdnsproxy.  The default is
	EXEC_PREFIX/sbin.

    --bindir=BINDIR
	Specifies the install directory for mdnconv and runmdn.
	The default is EXEC_PREFIX/bin.

    --libdir=LIBDIR
	Specifies the install directory for the MDN libraries (libmdn
	and libmdnlite).  The default is EXEC_PREFIX/lib.

    --includedir=INCDIR
	Specifies the install directory for the header files of the MDN
	library.  The default is PREFIX/include.

    --sysconfdir=SYSCONFDIR
	Specifies the install directory for sample configuration files
	of the MDN Library and mdnsproxy.  The default is PREFIX/etc.

    --mandir=MANDIR
	Specifies the base install directory for online manuals.
	The default is PREFIX/man.

    --datadir=DATADIR
	Specifies the base install directory for machine independent
	data files.  The default is PREFIX/share.  Some data files for
	mDNkit will be put under the DATADIR/mdnkit directory.

    --localstatedir=LOCALSTATEDIR
    --with-logdir=LOGDIR
	LOGDIR specifies the directory where mdnsproxy outputs log
	files by default.  Its default value is LOCALSTATEDIR/mdnsproxy,
	and the default value of LOCALSTATEDIR is PREFIX/var.

    --enable-debug
	Enable debugging codes.  The fault is "no".

    --enable-shared
	Build shared library.  The fault is "yes".

    --enable-static
	Build static library.  The fault is "yes".

To see the list of available options, you should run it with --help
option.

	% ./configure --help


3. Compiling

Run `make' for compilation.

	% make


4. Installation

Run `make install' to install binaries and manuals.  Don't forget to
become a super-user before the installation.

	% su
	# make install


5. Configuration and usage

mDNkit needs a configuration file `mdn.conf' to work properly.  Unless
you specified --with-preference option to the `configure' script, you
have to create the file.  Please refer the manual for `mdn.conf' for
details.  A sample configuration (`mdn.conf.sample') is also provided
for your convenience.

Also online manuals for `mdnsproxy', `mdnconv' and `runmdn' commands
are available.  Please refer them for the usage and configuration of
these commands.

	% man mdn.conf
	% man mdnsproxy
	% man mdnconv
	% man runmdn


6. Check your configuration

A simple shell script `mdnslookup' is available in the directory
`tools/mdnconv', with which you can make queries for multilingual
domain names.  It may help you check your configuration.

The usage of `mdnslookup' is:

	% tools/mdnconv/mdnslookup <domain-name> <dns-server>

Suppose that <domain-name> is an internationalized domain name written
in the local codeset (see ``LOCAL CODESET'' in the `mdn.conf' man page
for details), and <dns-server> is a hostname or IP address of DNS
server.

`mdnslookup' inquires <mdn-domain-name> from <dns-server>, using
`mdnconv' and `nslookup' commands.  If something is wrong, you will
see an error message output by `mdnconv', `nslookup' or `mdnslookup'
itself.


; $Id: INSTALL,v 1.3.2.3 2002/01/24 07:24:27 m-kasahr Exp $
