diff options
author | snermolaev <snermolaev@yandex-team.ru> | 2022-02-10 16:45:53 +0300 |
---|---|---|
committer | Daniil Cherednik <dcherednik@yandex-team.ru> | 2022-02-10 16:45:53 +0300 |
commit | 7353a3fdea9c67c256980c00a2b3b67f09b23a27 (patch) | |
tree | 1a2c5ffcf89eb53ecd79dbc9bc0a195c27404d0c /contrib/libs/c-ares/INSTALL.md | |
parent | 2015790ac9fcc04caab83fccc23ab2460310a797 (diff) | |
download | ydb-7353a3fdea9c67c256980c00a2b3b67f09b23a27.tar.gz |
Restoring authorship annotation for <snermolaev@yandex-team.ru>. Commit 2 of 2.
Diffstat (limited to 'contrib/libs/c-ares/INSTALL.md')
-rw-r--r-- | contrib/libs/c-ares/INSTALL.md | 674 |
1 files changed, 337 insertions, 337 deletions
diff --git a/contrib/libs/c-ares/INSTALL.md b/contrib/libs/c-ares/INSTALL.md index e8a36773e4..cbf1fc8f9b 100644 --- a/contrib/libs/c-ares/INSTALL.md +++ b/contrib/libs/c-ares/INSTALL.md @@ -1,415 +1,415 @@ ** This file is adapted from libcurl and not yet fully rewritten for c-ares! ** -``` - ___ __ _ _ __ ___ ___ +``` + ___ __ _ _ __ ___ ___ / __| ___ / _` | '__/ _ \/ __| | (_ |___| (_| | | | __/\__ \ \___| \__,_|_| \___||___/ How To Compile -``` +``` Installing Binary Packages ========================== -Lots of people download binary distributions of c-ares. This document -does not describe how to install c-ares using such a binary package. -This document describes how to compile, build and install c-ares from -source code. +Lots of people download binary distributions of c-ares. This document +does not describe how to install c-ares using such a binary package. +This document describes how to compile, build and install c-ares from +source code. -Building from Git +Building from Git ================= -If you get your code off a Git repository rather than an official -release tarball, see the [GIT-INFO](GIT-INFO) file in the root directory -for specific instructions on how to proceed. +If you get your code off a Git repository rather than an official +release tarball, see the [GIT-INFO](GIT-INFO) file in the root directory +for specific instructions on how to proceed. -In particular, if not using CMake you will need to run `./buildconf` (Unix) or -`buildconf.bat` (Windows) to generate build files, and for the former -you will need a local installation of Autotools. If using CMake the steps are -the same for both Git and official release tarballs. +In particular, if not using CMake you will need to run `./buildconf` (Unix) or +`buildconf.bat` (Windows) to generate build files, and for the former +you will need a local installation of Autotools. If using CMake the steps are +the same for both Git and official release tarballs. -AutoTools Build -=============== +AutoTools Build +=============== -### General Information, works on most Unix Platforms (Linux, FreeBSD, etc) +### General Information, works on most Unix Platforms (Linux, FreeBSD, etc) -A normal Unix installation is made in three or four steps (after you've -unpacked the source archive): +A normal Unix installation is made in three or four steps (after you've +unpacked the source archive): - ./configure - make - make ahost adig acountry (optional) - make install + ./configure + make + make ahost adig acountry (optional) + make install -You probably need to be root when doing the last command. +You probably need to be root when doing the last command. -If you have checked out the sources from the git repository, read the -[GIT-INFO](GIT_INFO) on how to proceed. +If you have checked out the sources from the git repository, read the +[GIT-INFO](GIT_INFO) on how to proceed. -Get a full listing of all available configure options by invoking it like: +Get a full listing of all available configure options by invoking it like: - ./configure --help + ./configure --help -If you want to install c-ares in a different file hierarchy than /usr/local, -you need to specify that already when running configure: +If you want to install c-ares in a different file hierarchy than /usr/local, +you need to specify that already when running configure: - ./configure --prefix=/path/to/c-ares/tree + ./configure --prefix=/path/to/c-ares/tree -If you happen to have write permission in that directory, you can do `make -install` without being root. An example of this would be to make a local -install in your own home directory: +If you happen to have write permission in that directory, you can do `make +install` without being root. An example of this would be to make a local +install in your own home directory: - ./configure --prefix=$HOME - make - make install + ./configure --prefix=$HOME + make + make install -### More Options +### More Options -To force configure to use the standard cc compiler if both cc and gcc are -present, run configure like +To force configure to use the standard cc compiler if both cc and gcc are +present, run configure like - CC=cc ./configure - # or - env CC=cc ./configure + CC=cc ./configure + # or + env CC=cc ./configure -To force a static library compile, disable the shared library creation -by running configure like: +To force a static library compile, disable the shared library creation +by running configure like: - ./configure --disable-shared + ./configure --disable-shared -If you're a c-ares developer and use gcc, you might want to enable more -debug options with the `--enable-debug` option. +If you're a c-ares developer and use gcc, you might want to enable more +debug options with the `--enable-debug` option. -### Special Cases +### Special Cases -Some versions of uClibc require configuring with `CPPFLAGS=-D_GNU_SOURCE=1` -to get correct large file support. +Some versions of uClibc require configuring with `CPPFLAGS=-D_GNU_SOURCE=1` +to get correct large file support. -The Open Watcom C compiler on Linux requires configuring with the variables: +The Open Watcom C compiler on Linux requires configuring with the variables: - ./configure CC=owcc AR="$WATCOM/binl/wlib" AR_FLAGS=-q \ - RANLIB=/bin/true STRIP="$WATCOM/binl/wstrip" CFLAGS=-Wextra + ./configure CC=owcc AR="$WATCOM/binl/wlib" AR_FLAGS=-q \ + RANLIB=/bin/true STRIP="$WATCOM/binl/wstrip" CFLAGS=-Wextra -### CROSS COMPILE +### CROSS COMPILE -(This section was graciously brought to us by Jim Duey, with additions by -Dan Fandrich) +(This section was graciously brought to us by Jim Duey, with additions by +Dan Fandrich) -Download and unpack the c-ares package. +Download and unpack the c-ares package. -`cd` to the new directory. (e.g. `cd c-ares-1.7.6`) +`cd` to the new directory. (e.g. `cd c-ares-1.7.6`) -Set environment variables to point to the cross-compile toolchain and call -configure with any options you need. Be sure and specify the `--host` and -`--build` parameters at configuration time. The following script is an -example of cross-compiling for the IBM 405GP PowerPC processor using the -toolchain from MonteVista for Hardhat Linux. +Set environment variables to point to the cross-compile toolchain and call +configure with any options you need. Be sure and specify the `--host` and +`--build` parameters at configuration time. The following script is an +example of cross-compiling for the IBM 405GP PowerPC processor using the +toolchain from MonteVista for Hardhat Linux. -```sh -#! /bin/sh +```sh +#! /bin/sh -export PATH=$PATH:/opt/hardhat/devkit/ppc/405/bin -export CPPFLAGS="-I/opt/hardhat/devkit/ppc/405/target/usr/include" -export AR=ppc_405-ar -export AS=ppc_405-as -export LD=ppc_405-ld -export RANLIB=ppc_405-ranlib -export CC=ppc_405-gcc -export NM=ppc_405-nm +export PATH=$PATH:/opt/hardhat/devkit/ppc/405/bin +export CPPFLAGS="-I/opt/hardhat/devkit/ppc/405/target/usr/include" +export AR=ppc_405-ar +export AS=ppc_405-as +export LD=ppc_405-ld +export RANLIB=ppc_405-ranlib +export CC=ppc_405-gcc +export NM=ppc_405-nm -./configure --target=powerpc-hardhat-linux \ - --host=powerpc-hardhat-linux \ - --build=i586-pc-linux-gnu \ - --prefix=/opt/hardhat/devkit/ppc/405/target/usr/local \ - --exec-prefix=/usr/local -``` +./configure --target=powerpc-hardhat-linux \ + --host=powerpc-hardhat-linux \ + --build=i586-pc-linux-gnu \ + --prefix=/opt/hardhat/devkit/ppc/405/target/usr/local \ + --exec-prefix=/usr/local +``` -You may also need to provide a parameter like `--with-random=/dev/urandom` -to configure as it cannot detect the presence of a random number -generating device for a target system. The `--prefix` parameter -specifies where c-ares will be installed. If `configure` completes -successfully, do `make` and `make install` as usual. +You may also need to provide a parameter like `--with-random=/dev/urandom` +to configure as it cannot detect the presence of a random number +generating device for a target system. The `--prefix` parameter +specifies where c-ares will be installed. If `configure` completes +successfully, do `make` and `make install` as usual. -In some cases, you may be able to simplify the above commands to as -little as: +In some cases, you may be able to simplify the above commands to as +little as: - ./configure --host=ARCH-OS + ./configure --host=ARCH-OS -### Cygwin (Windows) +### Cygwin (Windows) -Almost identical to the unix installation. Run the configure script in the -c-ares root with `sh configure`. Make sure you have the sh executable in -`/bin/` or you'll see the configure fail toward the end. +Almost identical to the unix installation. Run the configure script in the +c-ares root with `sh configure`. Make sure you have the sh executable in +`/bin/` or you'll see the configure fail toward the end. -Run `make` +Run `make` -### QNX +### QNX -(This section was graciously brought to us by David Bentham) +(This section was graciously brought to us by David Bentham) -As QNX is targeted for resource constrained environments, the QNX headers -set conservative limits. This includes the `FD_SETSIZE` macro, set by default -to 32. Socket descriptors returned within the c-ares library may exceed this, -resulting in memory faults/SIGSEGV crashes when passed into `select(..)` -calls using `fd_set` macros. +As QNX is targeted for resource constrained environments, the QNX headers +set conservative limits. This includes the `FD_SETSIZE` macro, set by default +to 32. Socket descriptors returned within the c-ares library may exceed this, +resulting in memory faults/SIGSEGV crashes when passed into `select(..)` +calls using `fd_set` macros. -A good all-round solution to this is to override the default when building -c-ares, by overriding `CFLAGS` during configure, example: +A good all-round solution to this is to override the default when building +c-ares, by overriding `CFLAGS` during configure, example: - # configure CFLAGS='-DFD_SETSIZE=64 -g -O2' + # configure CFLAGS='-DFD_SETSIZE=64 -g -O2' -### RISC OS +### RISC OS -The library can be cross-compiled using gccsdk as follows: +The library can be cross-compiled using gccsdk as follows: - CC=riscos-gcc AR=riscos-ar RANLIB='riscos-ar -s' ./configure \ - --host=arm-riscos-aof --without-random --disable-shared - make + CC=riscos-gcc AR=riscos-ar RANLIB='riscos-ar -s' ./configure \ + --host=arm-riscos-aof --without-random --disable-shared + make -where `riscos-gcc` and `riscos-ar` are links to the gccsdk tools. -You can then link your program with `c-ares/lib/.libs/libcares.a`. +where `riscos-gcc` and `riscos-ar` are links to the gccsdk tools. +You can then link your program with `c-ares/lib/.libs/libcares.a`. -### Android +### Android -Method using a configure cross-compile (tested with Android NDK r7b): +Method using a configure cross-compile (tested with Android NDK r7b): - - prepare the toolchain of the Android NDK for standalone use; this can - be done by invoking the script: + - prepare the toolchain of the Android NDK for standalone use; this can + be done by invoking the script: - ./tools/make-standalone-toolchain.sh + ./tools/make-standalone-toolchain.sh - which creates a usual cross-compile toolchain. Lets assume that you put - this toolchain below `/opt` then invoke configure with something - like: + which creates a usual cross-compile toolchain. Lets assume that you put + this toolchain below `/opt` then invoke configure with something + like: - ``` - export PATH=/opt/arm-linux-androideabi-4.4.3/bin:$PATH - ./configure --host=arm-linux-androideabi [more configure options] + ``` + export PATH=/opt/arm-linux-androideabi-4.4.3/bin:$PATH + ./configure --host=arm-linux-androideabi [more configure options] make - ``` - - if you want to compile directly from our GIT repo you might run into - this issue with older automake stuff: - - ``` - checking host system type... - Invalid configuration `arm-linux-androideabi': - system `androideabi' not recognized - configure: error: /bin/sh ./config.sub arm-linux-androideabi failed - ``` - this issue can be fixed with using more recent versions of `config.sub` - and `config.guess` which can be obtained here: - http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree - you need to replace your system-own versions which usually can be - found in your automake folder: - `find /usr -name config.sub` - - -CMake builds -============ - -Current releases of c-ares introduce a CMake v3+ build system that has been -tested on most platforms including Windows, Linux, FreeBSD, MacOS, AIX and -Solaris. - -In the most basic form, building with CMake might look like: - -```sh -cd /path/to/cmake/source -mkdir build -cd build -cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/cares .. -make -sudo make install -``` - -Options -------- - -Options to CMake are passed on the command line using "-D${OPTION}=${VALUE}". -The values defined are all boolean and take values like On, Off, True, False. - -* CARES_STATIC - Build the static library (off by default) -* CARES_SHARED - Build the shared library (on by default) -* CARES_INSTALL - Hook in installation, useful to disable if chain building -* CARES_STATIC_PIC - Build the static library as position-independent (off by - default) - - -Ninja ------ - -Ninja is the next-generation build system meant for generators like CMake that -heavily parallize builds. Its use is very similar to the normal build: - -```sh -cd /path/to/cmake/source -mkdir build -cd build -cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/cares -G "Ninja" .. -ninja -sudo ninja install -``` - -Windows MSVC Command Line -------------------------- - -``` -cd \path\to\cmake\source -mkdir build -cd build -cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=C:\cares -G "NMake Makefiles" .. -nmake -nmake install -``` - -Windows MinGW-w64 Command Line via MSYS ---------------------------------------- -``` -cd \path\to\cmake\source -mkdir build -cd build -cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=C:\cares -G "MSYS Makefiles" .. -make -make install -``` - - -Platform-specific build systems -=============================== - -Win32 ------ - -### Building Windows DLLs and C run-time (CRT) linkage issues - -As a general rule, building a DLL with static CRT linkage is highly -discouraged, and intermixing CRTs in the same app is something to -avoid at any cost. - -Reading and comprehension of Microsoft Knowledge Base articles -KB94248 and KB140584 is a must for any Windows developer. Especially -important is full understanding if you are not going to follow the -advice given above. - - - [KB94248](http://support.microsoft.com/kb/94248/en-us) - How To Use the C Run-Time - - - [KB140584](http://support.microsoft.com/kb/140584/en-us) - How to link with the correct C Run-Time (CRT) library - - - [KB190799](http://msdn.microsoft.com/en-us/library/ms235460) - Potential Errors Passing CRT Objects Across DLL Boundaries - -If your app is misbehaving in some strange way, or it is suffering -from memory corruption, before asking for further help, please try -first to rebuild every single library your app uses as well as your -app using the debug multithreaded dynamic C runtime. - - -### MingW32 - -Make sure that MinGW32's bin dir is in the search path, for example: - - set PATH=c:\mingw32\bin;%PATH% - -then run 'make -f Makefile.m32' in the root dir. - - -### MSVC 6 caveats - -If you use MSVC 6 it is required that you use the February 2003 edition PSDK: -http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm - - -### MSVC from command line - -Run the `vcvars32.bat` file to get a proper environment. The -`vcvars32.bat` file is part of the Microsoft development environment and -you may find it in `C:\Program Files\Microsoft Visual Studio\vc98\bin` -provided that you installed Visual C/C++ 6 in the default directory. - -Further details in [README.msvc](README.msvc) - - -### MSVC IDEs - -Details in [README.msvc](README.msvc) - - -### Important static c-ares usage note - -When building an application that uses the static c-ares library, you must -add `-DCARES_STATICLIB` to your `CFLAGS`. Otherwise the linker will look for -dynamic import symbols. - - -IBM OS/2 --------- - -Building under OS/2 is not much different from building under unix. -You need: - - - emx 0.9d - - GNU make - - GNU patch - - ksh - - GNU bison - - GNU file utilities - - GNU sed - - autoconf 2.13 - -If during the linking you get an error about `_errno` being an undefined -symbol referenced from the text segment, you need to add `-D__ST_MT_ERRNO__` -in your definitions. - -If you're getting huge binaries, probably your makefiles have the `-g` in -`CFLAGS`. - - -NetWare -------- - -To compile `libcares.a` / `libcares.lib` you need: - - - either any gcc / nlmconv, or CodeWarrior 7 PDK 4 or later. - - gnu make and awk running on the platform you compile on; - native Win32 versions can be downloaded from: - http://www.gknw.net/development/prgtools/ - - recent Novell LibC SDK available from: - http://developer.novell.com/ndk/libc.htm - - or recent Novell CLib SDK available from: - http://developer.novell.com/ndk/clib.htm - -Set a search path to your compiler, linker and tools; on Linux make -sure that the var `OSTYPE` contains the string 'linux'; set the var -`NDKBASE` to point to the base of your Novell NDK; and then type -`make -f Makefile.netware` from the top source directory; - - + ``` + - if you want to compile directly from our GIT repo you might run into + this issue with older automake stuff: + + ``` + checking host system type... + Invalid configuration `arm-linux-androideabi': + system `androideabi' not recognized + configure: error: /bin/sh ./config.sub arm-linux-androideabi failed + ``` + this issue can be fixed with using more recent versions of `config.sub` + and `config.guess` which can be obtained here: + http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree + you need to replace your system-own versions which usually can be + found in your automake folder: + `find /usr -name config.sub` + + +CMake builds +============ + +Current releases of c-ares introduce a CMake v3+ build system that has been +tested on most platforms including Windows, Linux, FreeBSD, MacOS, AIX and +Solaris. + +In the most basic form, building with CMake might look like: + +```sh +cd /path/to/cmake/source +mkdir build +cd build +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/cares .. +make +sudo make install +``` + +Options +------- + +Options to CMake are passed on the command line using "-D${OPTION}=${VALUE}". +The values defined are all boolean and take values like On, Off, True, False. + +* CARES_STATIC - Build the static library (off by default) +* CARES_SHARED - Build the shared library (on by default) +* CARES_INSTALL - Hook in installation, useful to disable if chain building +* CARES_STATIC_PIC - Build the static library as position-independent (off by + default) + + +Ninja +----- + +Ninja is the next-generation build system meant for generators like CMake that +heavily parallize builds. Its use is very similar to the normal build: + +```sh +cd /path/to/cmake/source +mkdir build +cd build +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local/cares -G "Ninja" .. +ninja +sudo ninja install +``` + +Windows MSVC Command Line +------------------------- + +``` +cd \path\to\cmake\source +mkdir build +cd build +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=C:\cares -G "NMake Makefiles" .. +nmake +nmake install +``` + +Windows MinGW-w64 Command Line via MSYS +--------------------------------------- +``` +cd \path\to\cmake\source +mkdir build +cd build +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=C:\cares -G "MSYS Makefiles" .. +make +make install +``` + + +Platform-specific build systems +=============================== + +Win32 +----- + +### Building Windows DLLs and C run-time (CRT) linkage issues + +As a general rule, building a DLL with static CRT linkage is highly +discouraged, and intermixing CRTs in the same app is something to +avoid at any cost. + +Reading and comprehension of Microsoft Knowledge Base articles +KB94248 and KB140584 is a must for any Windows developer. Especially +important is full understanding if you are not going to follow the +advice given above. + + - [KB94248](http://support.microsoft.com/kb/94248/en-us) - How To Use the C Run-Time + + - [KB140584](http://support.microsoft.com/kb/140584/en-us) - How to link with the correct C Run-Time (CRT) library + + - [KB190799](http://msdn.microsoft.com/en-us/library/ms235460) - Potential Errors Passing CRT Objects Across DLL Boundaries + +If your app is misbehaving in some strange way, or it is suffering +from memory corruption, before asking for further help, please try +first to rebuild every single library your app uses as well as your +app using the debug multithreaded dynamic C runtime. + + +### MingW32 + +Make sure that MinGW32's bin dir is in the search path, for example: + + set PATH=c:\mingw32\bin;%PATH% + +then run 'make -f Makefile.m32' in the root dir. + + +### MSVC 6 caveats + +If you use MSVC 6 it is required that you use the February 2003 edition PSDK: +http://www.microsoft.com/msdownload/platformsdk/sdkupdate/psdk-full.htm + + +### MSVC from command line + +Run the `vcvars32.bat` file to get a proper environment. The +`vcvars32.bat` file is part of the Microsoft development environment and +you may find it in `C:\Program Files\Microsoft Visual Studio\vc98\bin` +provided that you installed Visual C/C++ 6 in the default directory. + +Further details in [README.msvc](README.msvc) + + +### MSVC IDEs + +Details in [README.msvc](README.msvc) + + +### Important static c-ares usage note + +When building an application that uses the static c-ares library, you must +add `-DCARES_STATICLIB` to your `CFLAGS`. Otherwise the linker will look for +dynamic import symbols. + + +IBM OS/2 +-------- + +Building under OS/2 is not much different from building under unix. +You need: + + - emx 0.9d + - GNU make + - GNU patch + - ksh + - GNU bison + - GNU file utilities + - GNU sed + - autoconf 2.13 + +If during the linking you get an error about `_errno` being an undefined +symbol referenced from the text segment, you need to add `-D__ST_MT_ERRNO__` +in your definitions. + +If you're getting huge binaries, probably your makefiles have the `-g` in +`CFLAGS`. + + +NetWare +------- + +To compile `libcares.a` / `libcares.lib` you need: + + - either any gcc / nlmconv, or CodeWarrior 7 PDK 4 or later. + - gnu make and awk running on the platform you compile on; + native Win32 versions can be downloaded from: + http://www.gknw.net/development/prgtools/ + - recent Novell LibC SDK available from: + http://developer.novell.com/ndk/libc.htm + - or recent Novell CLib SDK available from: + http://developer.novell.com/ndk/clib.htm + +Set a search path to your compiler, linker and tools; on Linux make +sure that the var `OSTYPE` contains the string 'linux'; set the var +`NDKBASE` to point to the base of your Novell NDK; and then type +`make -f Makefile.netware` from the top source directory; + + PORTS ===== -This is a probably incomplete list of known hardware and operating systems -that c-ares has been compiled for. If you know a system c-ares compiles and -runs on, that isn't listed, please let us know! - - - Alpha Tru64 v5.0 5.1 - - ARM Android 1.5, 2.1, 2.3 - - MIPS IRIX 6.2, 6.5 - - Power AIX 3.2.5, 4.2, 4.3.1, 4.3.2, 5.1, 5.2 - - i386 Linux 1.3, 2.0, 2.2, 2.3, 2.4, 2.6 - - i386 Novell NetWare - - i386 Windows 95, 98, ME, NT, 2000, XP, 2003 - - x86_64 Linux - - +This is a probably incomplete list of known hardware and operating systems +that c-ares has been compiled for. If you know a system c-ares compiles and +runs on, that isn't listed, please let us know! + + - Alpha Tru64 v5.0 5.1 + - ARM Android 1.5, 2.1, 2.3 + - MIPS IRIX 6.2, 6.5 + - Power AIX 3.2.5, 4.2, 4.3.1, 4.3.2, 5.1, 5.2 + - i386 Linux 1.3, 2.0, 2.2, 2.3, 2.4, 2.6 + - i386 Novell NetWare + - i386 Windows 95, 98, ME, NT, 2000, XP, 2003 + - x86_64 Linux + + Useful URLs =========== - - c-ares: https://c-ares.haxx.se/ - - MingW: http://www.mingw.org/ - - MinGW-w64: http://mingw-w64.sourceforge.net/ - - OpenWatcom: http://www.openwatcom.org/ + - c-ares: https://c-ares.haxx.se/ + - MingW: http://www.mingw.org/ + - MinGW-w64: http://mingw-w64.sourceforge.net/ + - OpenWatcom: http://www.openwatcom.org/ |