1*16467b97STreehugger RobotInstallation Instructions 2*16467b97STreehugger Robot************************* 3*16467b97STreehugger Robot 4*16467b97STreehugger RobotCopyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005, 5*16467b97STreehugger Robot2006, 2007, 2008, 2009 Free Software Foundation, Inc. 6*16467b97STreehugger Robot 7*16467b97STreehugger Robot Copying and distribution of this file, with or without modification, 8*16467b97STreehugger Robotare permitted in any medium without royalty provided the copyright 9*16467b97STreehugger Robotnotice and this notice are preserved. This file is offered as-is, 10*16467b97STreehugger Robotwithout warranty of any kind. 11*16467b97STreehugger Robot 12*16467b97STreehugger RobotBasic Installation 13*16467b97STreehugger Robot================== 14*16467b97STreehugger Robot 15*16467b97STreehugger Robot Briefly, the shell commands `./configure; make; make install' should 16*16467b97STreehugger Robotconfigure, build, and install this package. The following 17*16467b97STreehugger Robotmore-detailed instructions are generic; see the `README' file for 18*16467b97STreehugger Robotinstructions specific to this package. Some packages provide this 19*16467b97STreehugger Robot`INSTALL' file but do not implement all of the features documented 20*16467b97STreehugger Robotbelow. The lack of an optional feature in a given package is not 21*16467b97STreehugger Robotnecessarily a bug. More recommendations for GNU packages can be found 22*16467b97STreehugger Robotin *note Makefile Conventions: (standards)Makefile Conventions. 23*16467b97STreehugger Robot 24*16467b97STreehugger Robot The `configure' shell script attempts to guess correct values for 25*16467b97STreehugger Robotvarious system-dependent variables used during compilation. It uses 26*16467b97STreehugger Robotthose values to create a `Makefile' in each directory of the package. 27*16467b97STreehugger RobotIt may also create one or more `.h' files containing system-dependent 28*16467b97STreehugger Robotdefinitions. Finally, it creates a shell script `config.status' that 29*16467b97STreehugger Robotyou can run in the future to recreate the current configuration, and a 30*16467b97STreehugger Robotfile `config.log' containing compiler output (useful mainly for 31*16467b97STreehugger Robotdebugging `configure'). 32*16467b97STreehugger Robot 33*16467b97STreehugger Robot It can also use an optional file (typically called `config.cache' 34*16467b97STreehugger Robotand enabled with `--cache-file=config.cache' or simply `-C') that saves 35*16467b97STreehugger Robotthe results of its tests to speed up reconfiguring. Caching is 36*16467b97STreehugger Robotdisabled by default to prevent problems with accidental use of stale 37*16467b97STreehugger Robotcache files. 38*16467b97STreehugger Robot 39*16467b97STreehugger Robot If you need to do unusual things to compile the package, please try 40*16467b97STreehugger Robotto figure out how `configure' could check whether to do them, and mail 41*16467b97STreehugger Robotdiffs or instructions to the address given in the `README' so they can 42*16467b97STreehugger Robotbe considered for the next release. If you are using the cache, and at 43*16467b97STreehugger Robotsome point `config.cache' contains results you don't want to keep, you 44*16467b97STreehugger Robotmay remove or edit it. 45*16467b97STreehugger Robot 46*16467b97STreehugger Robot The file `configure.ac' (or `configure.in') is used to create 47*16467b97STreehugger Robot`configure' by a program called `autoconf'. You need `configure.ac' if 48*16467b97STreehugger Robotyou want to change it or regenerate `configure' using a newer version 49*16467b97STreehugger Robotof `autoconf'. 50*16467b97STreehugger Robot 51*16467b97STreehugger Robot The simplest way to compile this package is: 52*16467b97STreehugger Robot 53*16467b97STreehugger Robot 1. `cd' to the directory containing the package's source code and type 54*16467b97STreehugger Robot `./configure' to configure the package for your system. 55*16467b97STreehugger Robot 56*16467b97STreehugger Robot Running `configure' might take a while. While running, it prints 57*16467b97STreehugger Robot some messages telling which features it is checking for. 58*16467b97STreehugger Robot 59*16467b97STreehugger Robot 2. Type `make' to compile the package. 60*16467b97STreehugger Robot 61*16467b97STreehugger Robot 3. Optionally, type `make check' to run any self-tests that come with 62*16467b97STreehugger Robot the package, generally using the just-built uninstalled binaries. 63*16467b97STreehugger Robot 64*16467b97STreehugger Robot 4. Type `make install' to install the programs and any data files and 65*16467b97STreehugger Robot documentation. When installing into a prefix owned by root, it is 66*16467b97STreehugger Robot recommended that the package be configured and built as a regular 67*16467b97STreehugger Robot user, and only the `make install' phase executed with root 68*16467b97STreehugger Robot privileges. 69*16467b97STreehugger Robot 70*16467b97STreehugger Robot 5. Optionally, type `make installcheck' to repeat any self-tests, but 71*16467b97STreehugger Robot this time using the binaries in their final installed location. 72*16467b97STreehugger Robot This target does not install anything. Running this target as a 73*16467b97STreehugger Robot regular user, particularly if the prior `make install' required 74*16467b97STreehugger Robot root privileges, verifies that the installation completed 75*16467b97STreehugger Robot correctly. 76*16467b97STreehugger Robot 77*16467b97STreehugger Robot 6. You can remove the program binaries and object files from the 78*16467b97STreehugger Robot source code directory by typing `make clean'. To also remove the 79*16467b97STreehugger Robot files that `configure' created (so you can compile the package for 80*16467b97STreehugger Robot a different kind of computer), type `make distclean'. There is 81*16467b97STreehugger Robot also a `make maintainer-clean' target, but that is intended mainly 82*16467b97STreehugger Robot for the package's developers. If you use it, you may have to get 83*16467b97STreehugger Robot all sorts of other programs in order to regenerate files that came 84*16467b97STreehugger Robot with the distribution. 85*16467b97STreehugger Robot 86*16467b97STreehugger Robot 7. Often, you can also type `make uninstall' to remove the installed 87*16467b97STreehugger Robot files again. In practice, not all packages have tested that 88*16467b97STreehugger Robot uninstallation works correctly, even though it is required by the 89*16467b97STreehugger Robot GNU Coding Standards. 90*16467b97STreehugger Robot 91*16467b97STreehugger Robot 8. Some packages, particularly those that use Automake, provide `make 92*16467b97STreehugger Robot distcheck', which can by used by developers to test that all other 93*16467b97STreehugger Robot targets like `make install' and `make uninstall' work correctly. 94*16467b97STreehugger Robot This target is generally not run by end users. 95*16467b97STreehugger Robot 96*16467b97STreehugger RobotCompilers and Options 97*16467b97STreehugger Robot===================== 98*16467b97STreehugger Robot 99*16467b97STreehugger Robot Some systems require unusual options for compilation or linking that 100*16467b97STreehugger Robotthe `configure' script does not know about. Run `./configure --help' 101*16467b97STreehugger Robotfor details on some of the pertinent environment variables. 102*16467b97STreehugger Robot 103*16467b97STreehugger Robot You can give `configure' initial values for configuration parameters 104*16467b97STreehugger Robotby setting variables in the command line or in the environment. Here 105*16467b97STreehugger Robotis an example: 106*16467b97STreehugger Robot 107*16467b97STreehugger Robot ./configure CC=c99 CFLAGS=-g LIBS=-lposix 108*16467b97STreehugger Robot 109*16467b97STreehugger Robot *Note Defining Variables::, for more details. 110*16467b97STreehugger Robot 111*16467b97STreehugger RobotCompiling For Multiple Architectures 112*16467b97STreehugger Robot==================================== 113*16467b97STreehugger Robot 114*16467b97STreehugger Robot You can compile the package for more than one kind of computer at the 115*16467b97STreehugger Robotsame time, by placing the object files for each architecture in their 116*16467b97STreehugger Robotown directory. To do this, you can use GNU `make'. `cd' to the 117*16467b97STreehugger Robotdirectory where you want the object files and executables to go and run 118*16467b97STreehugger Robotthe `configure' script. `configure' automatically checks for the 119*16467b97STreehugger Robotsource code in the directory that `configure' is in and in `..'. This 120*16467b97STreehugger Robotis known as a "VPATH" build. 121*16467b97STreehugger Robot 122*16467b97STreehugger Robot With a non-GNU `make', it is safer to compile the package for one 123*16467b97STreehugger Robotarchitecture at a time in the source code directory. After you have 124*16467b97STreehugger Robotinstalled the package for one architecture, use `make distclean' before 125*16467b97STreehugger Robotreconfiguring for another architecture. 126*16467b97STreehugger Robot 127*16467b97STreehugger Robot On MacOS X 10.5 and later systems, you can create libraries and 128*16467b97STreehugger Robotexecutables that work on multiple system types--known as "fat" or 129*16467b97STreehugger Robot"universal" binaries--by specifying multiple `-arch' options to the 130*16467b97STreehugger Robotcompiler but only a single `-arch' option to the preprocessor. Like 131*16467b97STreehugger Robotthis: 132*16467b97STreehugger Robot 133*16467b97STreehugger Robot ./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ 134*16467b97STreehugger Robot CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \ 135*16467b97STreehugger Robot CPP="gcc -E" CXXCPP="g++ -E" 136*16467b97STreehugger Robot 137*16467b97STreehugger Robot This is not guaranteed to produce working output in all cases, you 138*16467b97STreehugger Robotmay have to build one architecture at a time and combine the results 139*16467b97STreehugger Robotusing the `lipo' tool if you have problems. 140*16467b97STreehugger Robot 141*16467b97STreehugger RobotInstallation Names 142*16467b97STreehugger Robot================== 143*16467b97STreehugger Robot 144*16467b97STreehugger Robot By default, `make install' installs the package's commands under 145*16467b97STreehugger Robot`/usr/local/bin', include files under `/usr/local/include', etc. You 146*16467b97STreehugger Robotcan specify an installation prefix other than `/usr/local' by giving 147*16467b97STreehugger Robot`configure' the option `--prefix=PREFIX', where PREFIX must be an 148*16467b97STreehugger Robotabsolute file name. 149*16467b97STreehugger Robot 150*16467b97STreehugger Robot You can specify separate installation prefixes for 151*16467b97STreehugger Robotarchitecture-specific files and architecture-independent files. If you 152*16467b97STreehugger Robotpass the option `--exec-prefix=PREFIX' to `configure', the package uses 153*16467b97STreehugger RobotPREFIX as the prefix for installing programs and libraries. 154*16467b97STreehugger RobotDocumentation and other data files still use the regular prefix. 155*16467b97STreehugger Robot 156*16467b97STreehugger Robot In addition, if you use an unusual directory layout you can give 157*16467b97STreehugger Robotoptions like `--bindir=DIR' to specify different values for particular 158*16467b97STreehugger Robotkinds of files. Run `configure --help' for a list of the directories 159*16467b97STreehugger Robotyou can set and what kinds of files go in them. In general, the 160*16467b97STreehugger Robotdefault for these options is expressed in terms of `${prefix}', so that 161*16467b97STreehugger Robotspecifying just `--prefix' will affect all of the other directory 162*16467b97STreehugger Robotspecifications that were not explicitly provided. 163*16467b97STreehugger Robot 164*16467b97STreehugger Robot The most portable way to affect installation locations is to pass the 165*16467b97STreehugger Robotcorrect locations to `configure'; however, many packages provide one or 166*16467b97STreehugger Robotboth of the following shortcuts of passing variable assignments to the 167*16467b97STreehugger Robot`make install' command line to change installation locations without 168*16467b97STreehugger Robothaving to reconfigure or recompile. 169*16467b97STreehugger Robot 170*16467b97STreehugger Robot The first method involves providing an override variable for each 171*16467b97STreehugger Robotaffected directory. For example, `make install 172*16467b97STreehugger Robotprefix=/alternate/directory' will choose an alternate location for all 173*16467b97STreehugger Robotdirectory configuration variables that were expressed in terms of 174*16467b97STreehugger Robot`${prefix}'. Any directories that were specified during `configure', 175*16467b97STreehugger Robotbut not in terms of `${prefix}', must each be overridden at install 176*16467b97STreehugger Robottime for the entire installation to be relocated. The approach of 177*16467b97STreehugger Robotmakefile variable overrides for each directory variable is required by 178*16467b97STreehugger Robotthe GNU Coding Standards, and ideally causes no recompilation. 179*16467b97STreehugger RobotHowever, some platforms have known limitations with the semantics of 180*16467b97STreehugger Robotshared libraries that end up requiring recompilation when using this 181*16467b97STreehugger Robotmethod, particularly noticeable in packages that use GNU Libtool. 182*16467b97STreehugger Robot 183*16467b97STreehugger Robot The second method involves providing the `DESTDIR' variable. For 184*16467b97STreehugger Robotexample, `make install DESTDIR=/alternate/directory' will prepend 185*16467b97STreehugger Robot`/alternate/directory' before all installation names. The approach of 186*16467b97STreehugger Robot`DESTDIR' overrides is not required by the GNU Coding Standards, and 187*16467b97STreehugger Robotdoes not work on platforms that have drive letters. On the other hand, 188*16467b97STreehugger Robotit does better at avoiding recompilation issues, and works well even 189*16467b97STreehugger Robotwhen some directory options were not specified in terms of `${prefix}' 190*16467b97STreehugger Robotat `configure' time. 191*16467b97STreehugger Robot 192*16467b97STreehugger RobotOptional Features 193*16467b97STreehugger Robot================= 194*16467b97STreehugger Robot 195*16467b97STreehugger Robot If the package supports it, you can cause programs to be installed 196*16467b97STreehugger Robotwith an extra prefix or suffix on their names by giving `configure' the 197*16467b97STreehugger Robotoption `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'. 198*16467b97STreehugger Robot 199*16467b97STreehugger Robot Some packages pay attention to `--enable-FEATURE' options to 200*16467b97STreehugger Robot`configure', where FEATURE indicates an optional part of the package. 201*16467b97STreehugger RobotThey may also pay attention to `--with-PACKAGE' options, where PACKAGE 202*16467b97STreehugger Robotis something like `gnu-as' or `x' (for the X Window System). The 203*16467b97STreehugger Robot`README' should mention any `--enable-' and `--with-' options that the 204*16467b97STreehugger Robotpackage recognizes. 205*16467b97STreehugger Robot 206*16467b97STreehugger Robot For packages that use the X Window System, `configure' can usually 207*16467b97STreehugger Robotfind the X include and library files automatically, but if it doesn't, 208*16467b97STreehugger Robotyou can use the `configure' options `--x-includes=DIR' and 209*16467b97STreehugger Robot`--x-libraries=DIR' to specify their locations. 210*16467b97STreehugger Robot 211*16467b97STreehugger Robot Some packages offer the ability to configure how verbose the 212*16467b97STreehugger Robotexecution of `make' will be. For these packages, running `./configure 213*16467b97STreehugger Robot--enable-silent-rules' sets the default to minimal output, which can be 214*16467b97STreehugger Robotoverridden with `make V=1'; while running `./configure 215*16467b97STreehugger Robot--disable-silent-rules' sets the default to verbose, which can be 216*16467b97STreehugger Robotoverridden with `make V=0'. 217*16467b97STreehugger Robot 218*16467b97STreehugger RobotParticular systems 219*16467b97STreehugger Robot================== 220*16467b97STreehugger Robot 221*16467b97STreehugger Robot On HP-UX, the default C compiler is not ANSI C compatible. If GNU 222*16467b97STreehugger RobotCC is not installed, it is recommended to use the following options in 223*16467b97STreehugger Robotorder to use an ANSI C compiler: 224*16467b97STreehugger Robot 225*16467b97STreehugger Robot ./configure CC="cc -Ae -D_XOPEN_SOURCE=500" 226*16467b97STreehugger Robot 227*16467b97STreehugger Robotand if that doesn't work, install pre-built binaries of GCC for HP-UX. 228*16467b97STreehugger Robot 229*16467b97STreehugger Robot On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot 230*16467b97STreehugger Robotparse its `<wchar.h>' header file. The option `-nodtk' can be used as 231*16467b97STreehugger Robota workaround. If GNU CC is not installed, it is therefore recommended 232*16467b97STreehugger Robotto try 233*16467b97STreehugger Robot 234*16467b97STreehugger Robot ./configure CC="cc" 235*16467b97STreehugger Robot 236*16467b97STreehugger Robotand if that doesn't work, try 237*16467b97STreehugger Robot 238*16467b97STreehugger Robot ./configure CC="cc -nodtk" 239*16467b97STreehugger Robot 240*16467b97STreehugger Robot On Solaris, don't put `/usr/ucb' early in your `PATH'. This 241*16467b97STreehugger Robotdirectory contains several dysfunctional programs; working variants of 242*16467b97STreehugger Robotthese programs are available in `/usr/bin'. So, if you need `/usr/ucb' 243*16467b97STreehugger Robotin your `PATH', put it _after_ `/usr/bin'. 244*16467b97STreehugger Robot 245*16467b97STreehugger Robot On Haiku, software installed for all users goes in `/boot/common', 246*16467b97STreehugger Robotnot `/usr/local'. It is recommended to use the following options: 247*16467b97STreehugger Robot 248*16467b97STreehugger Robot ./configure --prefix=/boot/common 249*16467b97STreehugger Robot 250*16467b97STreehugger RobotSpecifying the System Type 251*16467b97STreehugger Robot========================== 252*16467b97STreehugger Robot 253*16467b97STreehugger Robot There may be some features `configure' cannot figure out 254*16467b97STreehugger Robotautomatically, but needs to determine by the type of machine the package 255*16467b97STreehugger Robotwill run on. Usually, assuming the package is built to be run on the 256*16467b97STreehugger Robot_same_ architectures, `configure' can figure that out, but if it prints 257*16467b97STreehugger Robota message saying it cannot guess the machine type, give it the 258*16467b97STreehugger Robot`--build=TYPE' option. TYPE can either be a short name for the system 259*16467b97STreehugger Robottype, such as `sun4', or a canonical name which has the form: 260*16467b97STreehugger Robot 261*16467b97STreehugger Robot CPU-COMPANY-SYSTEM 262*16467b97STreehugger Robot 263*16467b97STreehugger Robotwhere SYSTEM can have one of these forms: 264*16467b97STreehugger Robot 265*16467b97STreehugger Robot OS 266*16467b97STreehugger Robot KERNEL-OS 267*16467b97STreehugger Robot 268*16467b97STreehugger Robot See the file `config.sub' for the possible values of each field. If 269*16467b97STreehugger Robot`config.sub' isn't included in this package, then this package doesn't 270*16467b97STreehugger Robotneed to know the machine type. 271*16467b97STreehugger Robot 272*16467b97STreehugger Robot If you are _building_ compiler tools for cross-compiling, you should 273*16467b97STreehugger Robotuse the option `--target=TYPE' to select the type of system they will 274*16467b97STreehugger Robotproduce code for. 275*16467b97STreehugger Robot 276*16467b97STreehugger Robot If you want to _use_ a cross compiler, that generates code for a 277*16467b97STreehugger Robotplatform different from the build platform, you should specify the 278*16467b97STreehugger Robot"host" platform (i.e., that on which the generated programs will 279*16467b97STreehugger Roboteventually be run) with `--host=TYPE'. 280*16467b97STreehugger Robot 281*16467b97STreehugger RobotSharing Defaults 282*16467b97STreehugger Robot================ 283*16467b97STreehugger Robot 284*16467b97STreehugger Robot If you want to set default values for `configure' scripts to share, 285*16467b97STreehugger Robotyou can create a site shell script called `config.site' that gives 286*16467b97STreehugger Robotdefault values for variables like `CC', `cache_file', and `prefix'. 287*16467b97STreehugger Robot`configure' looks for `PREFIX/share/config.site' if it exists, then 288*16467b97STreehugger Robot`PREFIX/etc/config.site' if it exists. Or, you can set the 289*16467b97STreehugger Robot`CONFIG_SITE' environment variable to the location of the site script. 290*16467b97STreehugger RobotA warning: not all `configure' scripts look for a site script. 291*16467b97STreehugger Robot 292*16467b97STreehugger RobotDefining Variables 293*16467b97STreehugger Robot================== 294*16467b97STreehugger Robot 295*16467b97STreehugger Robot Variables not defined in a site shell script can be set in the 296*16467b97STreehugger Robotenvironment passed to `configure'. However, some packages may run 297*16467b97STreehugger Robotconfigure again during the build, and the customized values of these 298*16467b97STreehugger Robotvariables may be lost. In order to avoid this problem, you should set 299*16467b97STreehugger Robotthem in the `configure' command line, using `VAR=value'. For example: 300*16467b97STreehugger Robot 301*16467b97STreehugger Robot ./configure CC=/usr/local2/bin/gcc 302*16467b97STreehugger Robot 303*16467b97STreehugger Robotcauses the specified `gcc' to be used as the C compiler (unless it is 304*16467b97STreehugger Robotoverridden in the site shell script). 305*16467b97STreehugger Robot 306*16467b97STreehugger RobotUnfortunately, this technique does not work for `CONFIG_SHELL' due to 307*16467b97STreehugger Robotan Autoconf bug. Until the bug is fixed you can use this workaround: 308*16467b97STreehugger Robot 309*16467b97STreehugger Robot CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash 310*16467b97STreehugger Robot 311*16467b97STreehugger Robot`configure' Invocation 312*16467b97STreehugger Robot====================== 313*16467b97STreehugger Robot 314*16467b97STreehugger Robot `configure' recognizes the following options to control how it 315*16467b97STreehugger Robotoperates. 316*16467b97STreehugger Robot 317*16467b97STreehugger Robot`--help' 318*16467b97STreehugger Robot`-h' 319*16467b97STreehugger Robot Print a summary of all of the options to `configure', and exit. 320*16467b97STreehugger Robot 321*16467b97STreehugger Robot`--help=short' 322*16467b97STreehugger Robot`--help=recursive' 323*16467b97STreehugger Robot Print a summary of the options unique to this package's 324*16467b97STreehugger Robot `configure', and exit. The `short' variant lists options used 325*16467b97STreehugger Robot only in the top level, while the `recursive' variant lists options 326*16467b97STreehugger Robot also present in any nested packages. 327*16467b97STreehugger Robot 328*16467b97STreehugger Robot`--version' 329*16467b97STreehugger Robot`-V' 330*16467b97STreehugger Robot Print the version of Autoconf used to generate the `configure' 331*16467b97STreehugger Robot script, and exit. 332*16467b97STreehugger Robot 333*16467b97STreehugger Robot`--cache-file=FILE' 334*16467b97STreehugger Robot Enable the cache: use and save the results of the tests in FILE, 335*16467b97STreehugger Robot traditionally `config.cache'. FILE defaults to `/dev/null' to 336*16467b97STreehugger Robot disable caching. 337*16467b97STreehugger Robot 338*16467b97STreehugger Robot`--config-cache' 339*16467b97STreehugger Robot`-C' 340*16467b97STreehugger Robot Alias for `--cache-file=config.cache'. 341*16467b97STreehugger Robot 342*16467b97STreehugger Robot`--quiet' 343*16467b97STreehugger Robot`--silent' 344*16467b97STreehugger Robot`-q' 345*16467b97STreehugger Robot Do not print messages saying which checks are being made. To 346*16467b97STreehugger Robot suppress all normal output, redirect it to `/dev/null' (any error 347*16467b97STreehugger Robot messages will still be shown). 348*16467b97STreehugger Robot 349*16467b97STreehugger Robot`--srcdir=DIR' 350*16467b97STreehugger Robot Look for the package's source code in directory DIR. Usually 351*16467b97STreehugger Robot `configure' can determine that directory automatically. 352*16467b97STreehugger Robot 353*16467b97STreehugger Robot`--prefix=DIR' 354*16467b97STreehugger Robot Use DIR as the installation prefix. *note Installation Names:: 355*16467b97STreehugger Robot for more details, including other options available for fine-tuning 356*16467b97STreehugger Robot the installation locations. 357*16467b97STreehugger Robot 358*16467b97STreehugger Robot`--no-create' 359*16467b97STreehugger Robot`-n' 360*16467b97STreehugger Robot Run the configure checks, but stop before creating any output 361*16467b97STreehugger Robot files. 362*16467b97STreehugger Robot 363*16467b97STreehugger Robot`configure' also accepts some other, not widely useful, options. Run 364*16467b97STreehugger Robot`configure --help' for more details. 365*16467b97STreehugger Robot 366